操作系统 第二章进程控制与描述知识点总结(4)

哲学家进餐问题
几种可能解决死锁问题的方法
至多只允许有四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能进餐,仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐,规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。
利用AND信号量机制解决哲学家进餐问题
在哲学家进餐问题中,要求每个哲学家先获得两个临界资源(筷子)后方能进餐,这在本质上就是前面所介绍的AND同步问题,故用AND信号量机制可获得最简洁的解法
semaphore chopstick [5]= [1,1,1,1,1];
do{
…
//think;
…
Swait(chopstick[(i+1) % 5], chopstick[i]);
…//eat; …
Ssignal(chopstick[(i+1) % 5], chopstick[i]);
}while(TRUE);
读者—写者问题
2个售票处.
Bi的新值是X-1,而不是X-2。这里的P1和P2均为写者,对于写者而言,Bi是临界资源,因此写者之间应该互斥地访问Bi 。在这里插入图片描述
问题描述:
对共享资源的读写操作,任一时刻“写者”最多只允许一个,而“读者”则允许多个
“读-写” 互斥,
“写-写” 互斥,
“读-读” 允许
一个数据文件或记录可被多个进程共享,读该文件的进程称为“Reader进程”,其他进程称为“Writer进程”,允许多个进程同时读一个共享对象,因为读不会使数据文件混乱,不允许一个Writer进程和其他Reader进程或Writer进程同时访问一个对象.
在这里插入图片描述
利用记录型信号量解决读者-写者问题思想:
为实现Reader与Writer进程间在读或写时的互斥而设置了一个互斥信号量Wmutex。
设置一个整型变量Readcount表示正在读的进程数目
Readcount是一个可被多个Reader进程访问的临界资源,因此,应该为它设置一个互斥信号量rmutex。
仅当Reader进程在执行了readcount减1操作后其值为0时,才须执行signal(wmutex)操作,以便让Writer进程写。
只要有一个Reader进程在读,便不允许Writer进程去写。因此,仅当readcount=0,表示尚无Reader进程在读时,Reader进程才需要执行wait(wmutex)操作;若wait(wmutex)操作成功,Reader进程便可去读,相应地,做readc

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习记录wanxiaowan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值