操作系统----进程同步互斥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操作。

 

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

 生产者消费者问题:

两个同步关系:当缓存区为空的时候,消费者需要等待生产者生产,当换股长宁区为空的时候,生产者需要等待消费者消费。

一个互斥关系:互斥的使用临界区资源。

实现互斥的PV操作应该放在同步的锁之后。

 

 

当同步在互斥之后,就会发生生产者先P(mutex),然后P(empty}的时候发生堵塞,此时生产者等待消费者消费,但是消费者得不到权限,被生产者占有,所以造成死锁。此时的empty为0.

同样的,另一种情况是消费者的。此时mutex为0.

两个v操作可以互换位置。

 

通常不会把使用产品放到PV操作中,虽然影响不大,但是代码量增多,影响同步效率。

 

先同步后互斥。

实现同步:前v后p。

多生产者多消费着:生产和消费的种类有多个。

同步:抽象为一个时间发生另一个事件之前。

读者写着问题:

只有互斥条件,需要多个条件,哲学家进餐文题。

哲学家进餐:

1.一次性最多只有n-1个人进餐,这样肯定有一根筷子剩下来。

2.奇数位置的抢左边,偶数位置的抢右边,这样两个人一定会有一个人阻塞状态,从而避免死锁。

3.只有两个筷子都拿起来的时候才能进行,否则就会被阻塞,其他的也都会被阻塞。知道当前的他所需要的筷子都被拿起来。 

原文地址:https://www.cnblogs.com/0123wtdd/p/10910737.html