操作系统算法:如何利用信号量实现优先级(从读者写者问题引发的联想)

先搞清楚什么是优先级高,我认为应该满足下面两个方面:

1、当低优先级进程获得临界资源时,高优先级进程能够抢得临界资源的访问权

2、当优先级高的进程获得临界资源的访问权时,低优先级必须等待期运行完毕才有机会获得临界资源的访问权

假设两者的临界资源是Z,a,b进程。

为了实现第一个,则定义一个互斥变量,来保证a进程每个时候在z上的只有一个,这样一来,当其释放后阻塞在Z上的进程只有b了,则满足了(1)

为了满足第二个,则定义一个整形型变量,来统计每个时候运行的b进程的数目,只有当数目为0时才申请和释放临界资源,变相的使a不能在b运行时获得临界资源访问权



然后分析所要优先的进程是否能够同时运行(即:同一时间能够运行几个,一个或多个)

1、同一时间能够运行多个(类似于读者优先 )则只要按照上面的来就行了

2、同一时间只能运行一个进程(),那么就不可能在现有的条件下满足2,策略:再定义一个互斥信号量,来封装Z,进而实现以上两点


代码参考:读者写者问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值