操作系统(第四版)-------信号量机制
signal(S): s:=s+1;
信号量机制:一种卓有成效的进程同步机制
1)整形信号量
- 信号量定义为一个整型量
- 根据初始情况赋相应的值
- 仅能通过两个原子操作来访问
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为需求值
冲鸭

浙公网安备 33010602011771号