美文网首页
Linux内核同步介绍

Linux内核同步介绍

作者: 且听风吟LiKing | 来源:发表于2018-03-12 22:36 被阅读0次

1 临界区指的是访问和操作共享数据的代码段。多线程访问同一个资源是不安全的,因此要避免在临界区中并发访问,做到这点就需要把整个临界区的代码的原子性(不可发生上下文切换,不可打断执行)

2 如果发生了不同的线程同时想要执行临界区代码,就会产生竞争。避免并发和防止竞争条件成为同步。

3 同步的方法有加锁。加锁保证消除并发的重要一点就是,锁本身是一个原子操作。

4 造成并发的原因:

  中断

  软中断和tasklet

  内核抢占

  睡眠及与用户空间的同步

  对称多处理

5 防止并发本身并不难,直接加锁就能搞定。难在如何发现需要加锁的数据,提前预防。

6 一条好的建议:如果其他执行线程可以访问这些数据,那么就给这些数据加上各种形式的锁;如果任何其他什么东西能看到它,那么就锁住他。记住,要给数据而不是代码加锁。

7 如何预防死锁

按顺序加锁,按顺序获取锁,以相反的顺序释放锁

防止发生饥饿

不要重复请求同一个锁

设计力求简单

8 锁的争用:是指锁正在被占用,有其他线程试图获得该锁。由于锁的作用是使程序以串行方式对资源的访问,所以使用锁无疑会降低系统的性能。被高度争用的锁会成为系统的瓶颈,严重降低系统性能。解决办法就是将锁的粒度变小,更为精细。

相关文章

  • Linux内核同步介绍

    1 临界区指的是访问和操作共享数据的代码段。多线程访问同一个资源是不安全的,因此要避免在临界区中并发访问,做到这点...

  • Linux内核设计与实现——内核同步介绍

    临界区:访问和操作共享数据的代码段 竞争条件:两个执行线程处于同一个临界区 i++的三个动作,并不是原子的 得到当...

  • Linux驱动之内核模块

    一、Linux内核模块简介 1.1 Linux内核模块介绍 Linux内核的整体结构已经非常庞大,而其包含的组件也...

  • Linux基础之CentOS7.3内核编译

    Linux基础之内核编译 内核介绍 在我们的Linux世界虽然版本众多,但是内核却不变 内核就像我们人类的大脑负责...

  • linux 内核同步方法

    背景:内核同步问题,多个进程(线程)同时访问和操作共享资源时,就有可能发生各个线程之间相互覆盖共享数据的情况,造成...

  • Linux内核同步方法

    1 内核提供了两组原子操作接口:一组针对整数进行操作,另一组针对单独的位进行操作。 2 原子整数操作: 针对整数的...

  • Linux内核同步概要

    一、同步概览 1.1 背景以及基本概念 背景:对于共享资源,需要防止共享资源并发访问 临界区:访问和操作共享数据的...

  • Linux内核同步方法

    临界区和竞争条件 访问和操作共享数据的代码段称为临界区。如果两个执行线程在同一个临界区中同时执行,称为竞争条件。避...

  • Linux内核同步方法

    内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法,从而即可...

  • 69 netty 深度源码解读

    1,同步与异步的/阻塞与非阻塞IO概念2,linux 用户态与内核态之间的区别3, 从linux内核角度分析非阻塞...

网友评论

      本文标题:Linux内核同步介绍

      本文链接:https://www.haomeiwen.com/subject/dcaofftx.html