2.3.2临界区进程的软件实现方法

全知识整理目录

操作系统整理的目录,包括了整理的所有操作系统的知识。


概述

进程的软件实现方法,就是在进入区设置检查一些标志,来标明是否有进程在临界区中,如果已经有进程在临界区,那么通过循环检查进行等待,进程离开临界区后则在退出修改标志。

简而言之,就是入区循环检查,离开临界区则修改标志

目录

概述

单标志法 

双标志先检查法

双标志后检查法

Peterson算法


单标志法 

每个进程进入临界区都会被赋予权限,但是这个临界区只能赋予一个进程。

单标志法,就是使用turn来做出一定的标志,根据判断标志来判断,此刻应该让那个进程进入临界区。即一直要按照指定的顺序访问临界区,P0->P1->P0->P1……..,如果此时P0出现访问不到临界的情况,那么P1也会一直访问不到临界区,违反了空闲让进的原则

双标志先检查法

设置一个Boolean类型的数组flag[],数组中各个元素用来,标记各进程想进入临界区的意愿,比如flag[0] = ture 就代表0号进程P0,现在想要进入临界区。每个进程在进入临界区前,先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[i]设置为true,之后开始访问临界区。

双标志检查法的最大缺点是,检查和上锁两个处理不是一气呵成的。检查后,上锁可能发生进程的切换,那么此刻可能发生进程的却换。违反了忙则等待的原则

双标志后检查法

 这是为了解决双标志检查法的问题。为了解决双标志检查法,检查和上锁无法一气呵成,有可能导致进程切换的情况。那么就先上锁后检查,这就是双标志后检查法做的事情。

如果,P0和P1都同事i想要进入临界区,那么都会进入循环等待对方的情况,这样就违反了,空闲让进和有限等待的原则。

Peterson算法

 双标志后检查法,遗留的问题是,两个进程都想要进入临界区,但是谁也不让谁,最后都会陷入等待的状态。peterson这个人想到了一个办法,如果双方都想要进入临界区,那么就互相让,主动让对方先使用临界区,谁后让谁就使用临界区。

参考:https://www.bilibili.com/video/av70156862=19

来源:ybbgrain

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐