操作系统----进程同步互斥1-10

------------------------------------------《进程同步互斥问题》------------------------------------------

进程异步性:各进程并发的执行,以独立的不可预知的进度向前推进。

异步性使得进程可能不是按照预期的想法进行,提出了进程同步机制。比如下面这个图

同步就是直接制约关系

进程互斥:一段时间内只允许一个进程使用得资源成为互斥资源,

当对资源进行访问时,必须互斥进行,成为间接制约关系。

 

 --------------------------------------------------------------------------------------------------------------------------

 

单标志法:

当前用标志的进程一直不进入临界区,后面的就得不到权限,违背了空闲等待原则。

双标志先检查法:

进入临界区之前先看一看别人有没有用的,没有的话把自己的标志设置为1然后进入临界区使用资源。先检查后上锁。

问题就是:

意思就是调度使得两个进程都被设置为1,导致两个进程同时进入临界区。

双标志后检查法:

就是把栓标志检查法的上锁标志放在检查之前,先上锁后检查。

但是由于调度使得两个进程同时上锁,这时候就是谁也用不上。

 Peterson算法:

双标志后检查法中或造成谁也不让谁,增加标示量,标示能否让别的进程抢在自己面前进入临界区。

 A谦让,B也谦让,B的为最后一句,A使用完之后让B用。

未遵循让权等待原则。

搞清楚进入区,然后让两个并发进行,看看结果有啥。

中断屏蔽方法:

多处理机时候,有可能多个处理机处理同一个临界区造成错误。

开关中断权限特别大,不能随意让用户使用。只能有操作系统内核来操作。

TS指令不能被中断:硬件实现,将一个指令上锁,不满足让权等待原则

Swap指令:硬件实现,

 

--------------------------------------------------------《信号量机制》-----------------------------------------

 

整形信号量:

原语是由关中断、开中断实现的。

 P:wait S-=1

V:signal S+=1

整形信号量:不满足让权等待会发生忙等。

记录型信号量:不会发生忙等

记录性信号量:

在signal的时候检查一下信号量是不是负数,如果是负数就执行一个唤醒操作。一直唤醒直到标志量>=0。

记录型信号量在P之后发现标志小于0,就会让当前进程进入自我阻塞状态,当前进程主动释放CPU,实现了让权等待原则,不会出现忙等状态。

记录型信号量在V之后发现标志小于0,标明依然有进程在等待该资源,此时调用wakeup唤醒等待对列中的第一个资源,从阻塞态转化为就绪态。

-----------------------------------信号量机制实现进程互斥--------------------------------

 PV成对出现, 

 

 信号量实现前驱关系:

对应上面的同步,只能先V使得S++,然后才能进行下一步P操作。

-----------------------------------------------《第二波》-------------------------------------------------

猜你喜欢

转载自www.cnblogs.com/0123wtdd/p/10910737.html