【Linux竞态】Linux内核提供解决竞态进行互斥访问的方法

Linux内核提供解决竞态进行互斥访问的方法?

产生竞态的条件:

  • 要有并发
  • 要有共享资源
  • 并发的执行单元要同时对共享资源进行访问
    • 共享资源:软件上的全局变量和硬件资源(小到一个bit,大到一个设备)
    • 互斥访问:多个执行单元对共享资源进行访问,只有一个执行单元在同一时刻能够访问

产生竞态的资源情形:

  • 对称多处理器(SMP):多个CPU之间共享内存,外存,系统IO,例如多个CPU同时访问同一个内存区域,必然会产生竞态。
  • 单个CPU的进程与进程之间的抢占,支持任务的抢占调度,如果一个进程的优先级高于另一个进程,进程间形成抢占调度,如果他们对共享资源进行访问,必然会产生竞态。
  • 进程在对共享资源进行访问的期间,可能被硬件中断或者软中断或者tasklet打断,所以如果这些硬中断的处理函数,软中断和tasklet的延后执行函数也对共享资源进行访问,也必然产生竞态。
  • 内核没有支持硬件中断的优先级,硬件中断和软中断,tasklet之间是存在优先级的,如果各自之间访问共享资源,也一定会产生竞态。

中断屏蔽:

  • 中断屏蔽可以解决以下场合的竞态问题:
    • 中断和中断
    • 中断和进程
    • 进程和进程之间的抢占
  • 适用于单CPU的竞态问题!
  • 使用的方法:
    • 在进入临界区之前关闭中断;
    • 执行临界区的代码;
    • 恢复关闭中断;
    • 内核提供关闭和打开中断的方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值