操作系统(第四版)-------信号量机制

 

signal(S):
s:=s+1;

 

  

信号量机制:一种卓有成效的进程同步机制

1)整形信号量  

  1. 信号量定义为一个整型量
  2. 根据初始情况赋相应的值
  3. 仅能通过两个原子操作来访问    

P操作  

wait(S):
while s<=0 do no-op;
s:=s-1;

V操作

signal(S):
s:=s+1;

  

设置S为1即可保证互斥

 

2)记录型信号量

  • 整型信号量符合有限等待原则
  • 整型信号量不符合让权等待原则(得不到资源会一直空转,把资源耗尽)

P操作

wait():
S.value = S.value -1;
if S.value < 0 then block(S,L)

V操作

signal():
S.value = S.value + 1;
if S.value <= 0 then wakeup(S,L)

3)信号量的基本应用

  • 实现进程互斥(设信号量为1即可)
  • 实现进程间的前趋关系(有序,设为0    eg: p1:c1;signal(S);       p2: wait(S); c2;)

4)AND型信号量

why: 一些应用往往需要两个或多个共享资源,进程同时要求的共享资源越多,发生死锁的可能性越大

解决思想:一次性分配给进程所需资源,用完一起释放

5)信号量集

Swait(s,t,d) s为信号量(现有值)t为下限值(现有不能少于该条件) d为需求值

 

posted @ 2018-09-23 11:14  yanbinging  阅读(215)  评论(0)    收藏  举报