Linux 驱动开发 二十五:Linux内核并发和竞态

一、参考博客

内核同步机制 - 蜗窝科技 (wowotech.net)

Linux中的rwlock和seqlock - 知乎 (zhihu.com)

同步机制_StephenZhou-CSDN博客

二、基本概念

1、临界资源

临界资源是一次仅允许一个进程使用的共享资源

2、临界区

每个进程中访问临界资源的那段代码称为临界区(criticalsection)

3、并发、竞态

并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(RaceConditions)。

竞态形成的三个条件:

  • 必须有多个执行单元

  • 必须有共享资源

  • 必须同时访问

4、SMP

SMP是一种紧耦合共享存储系统模型,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和储存器。

二、Linux内核产生竞态情况

1、多核(多个CPU,简称SMP) ,多核CPU是共享内存,闪存,GPIO等临界资源。

2、同一个CPU上的进程与进程之前的抢占。

3、中断和进程(中断的优先级高于进程):硬件中断和进程,软中断和进程。

4、中断和中断(硬件中断优先级高于软中断):硬件中断和软中断,软中断和软中断。

三、Linux内核竞态解决方案

  • 原子操作(atomic)

  • 自旋锁(spinlock)

  • 读写锁(rwlock)

  • 顺序锁(seqlock)

  • 信号量(semaphore)

  • 互斥体(mutex)

  • Read-Copy Update(RCU)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值