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

来源:互联网 发布:win10删除windows.old 编辑:程序博客网 时间:2024/05/17 05:12

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

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

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

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

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

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



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

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

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


代码参考:读者写者问题

原创粉丝点击