内核开发-同步场景与概念
创始人
2024-03-20 16:43:39
进程上下文执行环境还有中断上下文执行环境,并且中断上下文优先级比较高,可以随时打断进程的执行,因此情况更加复杂。内核当中提供了不同的同步机制。比如说信号量,自旋锁,rcu,原子变量等等。他们各自都有自己适用的场景。

首先我们开始我们进程与进程的同步机制。

在驱动中,有些进程只允许打开一次。

我们用xxx_count来表示打开标志位。

int xxx_count =1 //驱动中的全局变量

...

int hello_open(struct *p,struct file *f){

if(xxx_count){

return -EBUSY; //打开失败

}

++xxx_count;

return 0; //打开成功

}jin

这个伪代码的意思是,当第一个进程执行open时,因为初始化xxx_count = 0;则不会进入if语句里面。xxx_count加1;

当第二个进入的时候,因为xxx_count是为1的状态,所以进去if语句里面了。返回错误

同样第三个或者第四个都会报错。

逻辑上是正常的。但是系统的执行流程并非如此的情况。而是如下图:

t2时刻:进程A对xxx_count加1

t3时刻:进程B也对xxx_count加1

此后,进程A和进程B的结果都是可以打开设备的。这样就不符合我们的初衷了。

那么该怎么解决这个问题呢?

术语:

共享资源:xxx_count就是一个共享资源

竞态问题:并发执行单元对共享资源的同时访问就会引发竞态问题

临界区:访问共享资源的代码块叫做临界区

 

相关内容

热门资讯

最新或2023(历届)河南高考... 全国高考定于6月7日、8日两天进行,河南省的高考状元多少分仍为“3+文综/理综”。最新或2023(历...
最新或2023(历届)河南高考... 考试    12.全国统考试题由教育部考试中心统一命制,并由其制订答案及评分参考。    13.全国...
最新或2023(历届)河南高考... 填报志愿    26.考生志愿在网上填报。网上填报志愿分三次进行:第一次在6月25日—28日,填报提...
最新或2023(历届)河南高考...   34.高校录取新生工作在省招委会领导下,由省招办组织实施,实行计算机远程网上录取。各高校须采取远...
最新或2023(历届)河南高考... 下列考生可在统考成绩总分基础上加20分投档,由学校审查决定是否录取:    (1)烈士子女;    ...