写出记录型信号量中的wait操作代码_记录型信号量

记录型信号量实现“让权等待”,避免“忙等”现象。包含value变量和进程链表L。wait操作使value减1,若value小于0则进程阻塞;signal操作使value加1,若value仍小于等于0则唤醒等待进程。通过wait/signal操作,进程A、B、C在打印机资源请求中展示了信号量机制的工作流程。
摘要由CSDN通过智能技术生成

记录型信号量---实现了“让权等待”的策略,而不存在“忙等”现象的进程同步机制。为此,在信号量机制中,除了需要一个用于代表资源数目的整形变量value外,还应增加一个进程链表L,用于链表上述的所有等待进程。

type semaphore=record

value:integer;

L:list of process;

end

相应的,wait(s)和signal(s)操作可描述为:

procedure wait(S)

var S:semaphore;

begin

S.value:=S.value-1;

if S.value<0 then block(S,L)

end

procedure signal(S)

var S:semaphore;

begin

S.value:=S.value+1;

if

S.value<=0 then wakeup(S,L);

end

在记录型信号机制中,S.value的初值表示系统中某类资源的数目,因而又称为系统资源信号量,对它的每次wait操作,意味着进程请求一个单位的该类资源,因此描述为S.value:=S.value-1;当S.value<0时,表示该资源已分配完毕,因此该进程应调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。可见,该进程遵循了“让权等待”准则。此时S.value的绝对值表示在信号量链表中已阻塞进程的数目。对信号量的每次signal操作,表示执行进程释放一个单位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值