操作系统 2.3进程同步
作者:互联网
2.3 进程的同步与互斥
2.3.1 进程的同步的基本概念
- 临界资源
定义:一次仅允许一个进程使用的资源称为临界资源
eg:就好像早上起来在宿舍和同学抢厕所时,把我和同学比做两个进程,两者就是同步的协作关系,而厕所就是临界资源
访问临界资源的过程可分为4个部分:
(1)进入区
(2)临界区:进程中访问临界资源的那段代码
(3)退出区
(4)剩余区
- 同步(见上面的例子)
- 互斥
属于同步的一种,同步机制需要遵守的4个原则:
1)空闲让进
2)忙则等待
3)有限等待
4)让权等待
2.3.2 实现临界区互斥的几种方法
- 软件实现法
算法一:单标志法
起始:turn=0,相当于厕所是0号专属,其他人不得进入,所以当系统切换到1进程时,1号进程不得进入,所以违背了“空闲让进”的原则
算法二:
双标志先检查法:
如果访问顺序是15开头(例如15263748),则后面0号和1号可以同时进入临界区,违背了临界区忙则等待的原则,
就好像先进厕所的那个人就直接反锁厕所门,而违背忙则等待原则的意思就是厕所门还没上锁的时候,另一个人就冲进了厕所,两个人,一个坑,可能会面面相觑。。。
算法3:双标志后检查法
先上锁,后检查,如果按照1526。。。的顺序来进行的话,就无法满足空闲让进和有限等待的原则,从而导致饥饿现象
虽然解决了算法2忙则等待的问题,但是,产生了更多更复杂的问题
算法4:peterson算法
相当于a,b两人抢厕所,
a:我想用马桶
b:我想用马桶
a:你先用把
b:你先用吧
a:那好吧,我先用咯
最后是b说的客气话,所以a先用
算法评价:
优点:遵从了空闲让进,忙则等待,有限等待的原则
缺点:没有遵从让权等待的原则
- 硬件实现方法
标签:操作系统,进程同步,算法,进程,临界,2.3,等待,厕所 来源: https://blog.csdn.net/be_stronger/article/details/113878733