Linux内核并发和竞态(2)

一.并发和竞态相关的概念

并发: 多个执行单元同时发生;
执行单元包括进程和中断
竞态:多个执行单元对共享资源的同时访问造成的竞争状态
形成竞态条件:
1.要有多个执行单元
2.要有共享资源
3.要同时访问
共享资源:
1.软件上的全局变量属于共享资源
2.硬件资源 (寄存器都是共享资源)
避免竞态的本质目的:
一个执行单元在访问共享资源的时候,其他执行单元禁止访问共享资源;
这种访问方式又称之为互斥访问!

互斥访问的本质目的:
就是让访问共享资源的代码具有原子性;
例如: --open_cnt当某个任务在访问的时候,不能发生CPU资源的切换!

临界区:
访问共享资源的代码区域叫临界区!
if (--open_cnt != 0)
{
printk("设备已被打开!\n");
open_cnt++;
return -EBUSY; //出错,设备忙
}
3.3.产生竞态的几种情形
1.多处理器(多核, SMP),多处理器共享系统的内存,闪存和IO资源,势必形成竞态
2.单CPU的进程与进程的抢占,形成竞态 (UC中只有一种情形)
3.中断和进程(中断优先级高于进程)
4.中断和中断
高优先级的软中断抢占低优先级的软中断
硬件中断抢占软中断

二.Linux内核解决竞态的方法

中断屏蔽
自旋锁
信号量
原子操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值