操作系统--课堂问答笔记10--习题答案

课堂笔记学习视频来自 操作系统
说明:其他”课堂问答笔记“也在”操作系统“专栏

【2-4、2-5】

  1. 初始的读写者问题涉及几个信号量,为什么?
    就是第一版的读写者问题,这些信号量都是什么含义?
    第一版方案有可能会导致写者长期得不到写的机会。
    公平型的读写者问题取消了读者优先。
    公平型的改进:有写者等,则后来的读者要等(排队等待写者之后);无写者等(当然也无写者写,这个第一版已经实现),则后来的读者可读。
  2. 程序实现时在最前面增加一个整体的排队队列,即增加一个信号量s(初始值为1),那么如何理解s值的含义?
    任何一个人进来,不管读或写,都要wait(s)。
    s== 1可通过队列,即不用等待;s== 0表示有人正在通过这个队列。s只有这两个取值。
    任何一个人通过队列后,都要signal(s)实现s+1。
  3. 写者优先的读写者问题中,信号量s,mutex,rmutex,wmutex的含义?
    s,rmutex,wmutex前面已经说过,现在只需要理解mutex。
    结合后面的程序,mutex表示排队等待修改写者人数的信号量。类似于rmutex,rmutex表示排队等待修改读者人数的信号量。
    只有第一个写者才进入s队列,若当前写者人数>=1,后面的写者不必再到s中排队;当然如果当前当前写者人数==0,那么目前的第一个写者要进入s队列。
    s,mutex,rmutex,wmutex这四个信号量都只有1,0这两个取值
  4. 如何理解Swait(m,a,b)的含义,为什么说Swait(m,1,0)是一个开关语句?Swait(m,a,b)在读写者问题中的用途?
    Swait(m,1,0)是一个开关语句,不是Swait(m,a,0)。
    Swait(m,a,b)的含义是每次执行Swait操作,m的值(要有初始值)减b,当m>=a时不必等待,否则等待。
    Swait(m,1,0)表示执行Swait操作,m的值(要有初始值)减0(即不发生变化),当m>=1时不必等待,否则等待;这句话的意思也就是当执行Swait(m,1,0)时,如果m>=1不必等待,否则等待;因此是开关语句,就像前面所说的wait(mutex)操作,当然mutex初始值为1。
    在读写者问题中,读者进程通过执行Swait(rMax,1,1; wmutex,1,0)确保无写者写可读,写者进程通过执行Swait(wmutex,1,1; rMax,RN,0)确保无写者在写以及无读者在读的情况下可写。其中wmutex的初始值为1,表示等待读写操作的信号量;rMax的初始值为RN,表示最多允许的读者数量。
    Swait(rMax,1,1; wmutex,1,0);等价于Swait(rMax,1,1); Swait(wmutex,1,0);
    若rMax目前的值等于RN,则表示无读者。
    只要有读者就会把rMax-1,一个读者读完rMax+1
  5. 为什么引入管程?
    信号量机制的缺点:进程自备同步操作,P(wait)和V(singal)操作大量分散在各个进程中,不易管理,易发生死锁。
    引入管程机制的目的:
    1、把分散在各进程中的临界区集中起来进行管理;
    2、防止进程有意或无意的违法同步操作;
    3、便于用高级语言来书写程序,也便于程序正确性验证。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三桥君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值