同步与互斥

互斥的实现方法有硬件方法和软件方法,硬件方法里又有中断屏蔽法和硬件指令法(原子指令),软件方法有皮特森法。这三种方法共同设计出信号量

中断屏蔽法

当一个进程正在使用处理机执行它的临界区代码的时候,防止其他进程进入其临界区进行访问的最简便的方法是禁止一切中断发生,因为cpu只在发生中断时引起进程切换,因此屏蔽中断能保证当前运行的进程,让临界区代码顺利地执行完,进而保证互斥的正确实现,然后直行开中断。这种方法不适用于多处理机,只适用于操作系统内核进程,不适用于用户进程

这种方法限制了处理器交替执行程序的能力,因此执行的效率会明显降低。对内核来讲,在他执行更新变量或列表的几条指令期间,关中断是很方便的,但将关中断的权力交给用户则是很明智的。若一个进程关中断后不再开中断,则系统可能会因此中止

硬件方法的优点适用于任意数目的进程,而不管是单处理机还是多出轨迹,简单容易验证其正确性,可以支持进程内有多个临界区,只需为每个临界区设立一个布尔变量

硬件方法的缺点,进程等待进入临界区时要耗费处理机时间,不能实现让权等待,从等待进程中随机选择一个进入营业区,有的进程可能一直选不上,从而导致饥饿现象

信号量是模仿交通灯来设计的 交通灯大家都知道它主要的功能是等待和计数

PV操作申请/释放

在使用P操作的时候,设定开始的value是要-1的

P操作是减法检测阻塞

V操作是加法检测唤醒

PV操作的具体实现过程

假如我们要去一个火锅店去吃饭。这个火锅店有12个桌子。我们设置一个value,它后面的初始值就是现在饭店还剩余的空桌子。假设现在来了一个顾客,顾客去问老板。你们现在还有空位置吗?这就相当于要进行一个P操作,我去询问一下,现在还有没有可以利用的资源让我进去。老板说有的,那么你就进去。老板说没有了,这时候我就要等待,我就排队。当在里面用餐的顾客要走了结账,告诉老板我要结账,他走了以后,那么我们的value就会+1,通知现在在排队最前面的那个人进去用餐.

PV操作再同步互斥中的应用

在同步问题中,若某个行为要用到某种资源,在这个行为前面P这种资源一下,若某个行为会提供某种资源,在这个行为后面V这个资源一下.在互斥问题中PV操作要紧夹使用互斥资源的那个行为,中间不能有其他冗余代码.

展开阅读全文

页面更新:2024-05-29

标签:信号量   交通灯   处理机   火锅店   临界   屏蔽   指令   进程   顾客   老板   操作   代码   硬件   方法   资源   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top