目录
- 进程同步
- 进程互斥
- 进程互斥的软件实现方法
-
- 单标志法
- 双标志先检查法
- 双标志后检查法
- Peterson算法
- 总结
- 进程互斥的硬件实现方法
-
- 中断屏蔽方法
- Test-And-Set指令
- Swap指令
- 总结
进程同步
如何解决进程运行顺序不确定的异步问题,就是“进程同步”所讨论的内容
同步也称为直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
进程互斥
对临界资源的访问,必须互斥地进行
互斥也称为间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
- 对临界资源的互斥访问,逻辑上可以分为四部分
进入区:负责检查是否可以进入临界区,若可进入,则应设置政治访问临界资源的标致,以阻止其他进程同时进入临界区
临界区:访问临界资源的那段代码
退出区:负责解除正在访问临界资源的标致
剩余区:做其他处理
- 进程互斥原则:
空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
有限等待:对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)。
让权等待:当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。
进程互斥的软件实现方法
turn的初值为0,即开始时只允许0号进程进入临界区,若p1先上处理机运行,则会一直卡在⑤。知道p1的时间片用完,发生调度,切换回p0处理机上运行。p0可以顺利进入②,正常访问临界区,此时若切换回p1,依然会卡在⑤,只有p0访问完临界资源后再退出区将turn改为1,p1才能进入临界区。
违背空闲让进原则。若此时允许进入临界区的进程是p0,而p0一直不访问临界资源,此时虽然临界区空闲,但也不允许p1访问。
双标志先检查法
算法思想:每个进程单独标记各进程想进入临界区的意愿,每个进程在进入临界区之前先检查当前是否有别的进程想进入临界区,如果没有,就把自身对应的标致设置为true,之后开始访问临界区。
违背了空闲让进和有限等待原则。若上述例子按照①⑤②⑥的顺序执行,p0和p1都无法进入临界区,会因各个进程都长期无法访问临界资源而产生饥饿现象。
Peterson算法
算法思想:双标志后检查法中,两个进程都想着进入临界区,但是谁都不让谁,最后都无法进入,但如果让进程尝试主动让对方先使用临界区,就可以解决这个问题。
进程互斥的硬件实现方法
相比软件实现方法,TS指令把“上锁”和“检查”操作用硬件的方式变成了一气呵成的原子操作。
Swap指令
又称Exchange指令,或简称XCHG指令。Swap指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成。
-
优点:1.实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;
.适用于多处理机环境。 -
缺点:不满足让权等待原则,暂时无法进入临界区的进程会占用CPU并循环执行TS指令,从而导致“忙等”。
来源:热衷做分母
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!