信号量机制

荷兰科学家Dijkstra(狄克斯特拉)提出的一种卓有成效的进程同步机制

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

P操作 wait(S):
While S<=0 do no-op;
S:=S-1;
V操作 signal(S):
S:=S+1;

2)记录型信号量
*整型信号量符合“有限等待”原则
signal释放资源后,当CPU被分配给等待进程后,等待进程仍可继续执行,可以符合“有限等待”。

*但整型信号量不符合“让权等待”原则
整型信号量的wait操作,当s ≤0时,当前进程会占着CPU不断测试;
信号量原语不能被打断,这个占有CPU的进程会一直不断的占据CPU循环下去,陷入忙等。

  • 信号量结构信息发生变化

*不仅要有值的处理,还有队列的处理。

*此时形成记录型数据结构,包括两部分:
*整型变量value(代表资源数目)
*进程链表L(链接所有等待进程):

*代码描述:
type Semaphore=record
value:integer;
L:list of PCB;
end;
操作:S.Value,S.L

Value>0,表示当前可用资源的数量;
Value≤0,其绝对值表示等待使用该资源的进程数,即在该信号量队列上排队的PCB的个数。

P、V操作也有所变化
不仅修改资源数&#x

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值