(P24)进程间通信介绍二

文章目录


(P24)进程间通信介绍二
进程与进程间的关系
互斥:类似人之间的矛盾关系 2个小孩争抢同一个玩具
多个进程排他性的使用他们所共享的资源,这些进程间就构成互斥关系
同步:类似人之间的协作关系 公共汽车安全行驶问题 司机 售票员

(P24)进程间通信介绍二

如果一个进程同一时刻,允许多个进程占用的话,就不会构成死锁
因为进程要排他性地使用资源,所以防止死锁产生,重点是防止下面的三个条件
(P24)进程间通信介绍二

所需要的资源都得到满足的时候,才能够占有,而不能占有一半的资源;

当一个进程请求资源时,可以破坏其它进程所占有的资源
(P24)进程间通信介绍二

(P24)进程间通信介绍二
进程资源的分配可以模拟银行家算法
(1)一个进程申请的资源不超过系统的资源时,就可以允许该进程申请资源,否则就延迟申请

(2)进程申请的资源系统不能满足,进程可以分配申请,但是申请的资源不能超过系统的容量

(3)进程申请资源时,若系统暂时不能满足进程,系统会让进程等待,系统让进程在有限的时间里得到资源

(4)进程得到所有的资源,能够在有限的时间内归还所有的资源

(P24)进程间通信介绍二

死锁经典问题
服务生算法:是一个管理者,它会判断资源是否处于安全的状态,若是安全状态,则会允许哲学家拿起叉子,否则不允许,继续等待
死锁避免算法,类似用银行家算法来解决问题

最多。。。。。:不好,实际改变了条件

破坏请求和保持条件

破坏环路和等待条件
(P24)进程间通信介绍二
(P24)进程间通信介绍二

信号量和PV原语解决进程同步和互斥问题
S:计数值,等于-1表示:有2个进程处于等待的状态
(P24)进程间通信介绍二
进程控制块指针:表示当前有哪些进程处于等待的状态
(P24)进程间通信介绍二
进程申请资源
下面的代码是原子性的操作,不能被打断,在硬件上,而可以通过关闭中断的方式来实现
(P24)进程间通信介绍二

进程归还资源
(P24)进程间通信介绍二
若信号量PV操作分布在不同进程中是解决同步问题的

P(S1)将司机进程处于等待状态,当售票员进程关上门之后会给司机一个信号,即执行V(S1)操作,使得S1信号量的值增加了,唤醒了司机进程,司机进程就能进入启动车辆的状态;
由于司机到站停车后才能开门,且S2信号量的值为0,因而它也进入到了等待状态,直到司机进程到站停车后执行V(S2)操作,唤醒等待的售票员进程,所所以,售票员进程能开门
(P24)进程间通信介绍二
互斥问题
S(1) 信号量的初始计数值为1,对S进行P操作进入临界区,此时S-1等于0,若有其他进程进入临界区,则会处于等待的状态,因为当前信号量的计数值为0,直到该进程执行V操作,释放对临界资源的控制权,才能够唤醒另外一个进程

if (x>0)
x–;
上面是临界区,x称之为临界资源

(P24)进程间通信介绍二
信号量计数值表示当前资源的个数

因为有2辆敞篷车,所以信号量计数值为2,注意这里的资源必须是同类的资源
当一个顾客比较快办理完手续,首先进行一次P操作,计数值为1,接着。。。以此类推
有一天B归还车了,他要唤醒其中的一个进程,会将当前的计数值-2改为-1,表示当前还有一个人处于等待的状态。。。以此类推
(P24)进程间通信介绍二