一、信号量机制
本节重点:
- 熟练掌握整型信号量,记录型信号量
- 熟练掌握实现信号量的基本应用——互斥同步
1、整型信号量(先判断后减值)
1)信号量定义为一个整型量;
2)根据初始情况赋相应的值;
3)仅能通过两个原子操作来访问。
- 整型信号量符合“有限等待”原则
signal释放资源后,当CPU被分配给等待进程后,等待进程仍可继续执行,可以符合“有限等待”。 - 但整型信号量不符合“让权等待”原则
整型信号量的wait操作,当s ≤0时,当前进程会占着CPU不断测试;
信号量原语不能被打断,这个占有CPU的进程会一直不断的占据CPU循环下去,陷入忙等。
2、记录型信号量
1)信号量结构信息发生变化
-
不仅要有值的处理,还有队列的处理。
-
此时形成记录型数据结构,包括两部分:
*整型变量value(代表资源数目) *进程链表L(链接所有等待进程)
代码描述:
type Semaphore=record
value:integer;
L:list of PCB;
end;
操作: S.Value,S.L
2) P、V操作也有变化(先修改资源数,再判断处理)