厦门大学操作系统5-6章习题讲解教程教案.ppt

厦门大学操作系统5-6章习题讲解教程教案.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
厦门大学操作系统5-6章习题讲解教程教案.ppt

5-6章作业 P177复习题5.8 在信号量上可执行的操作: 初始化=0(一般情况) semWait原语,值减1 如果值变为负数,则执行semWait的进程被阻塞 semSignal原语,值加1 如果值小于或等于0,则唤醒一个该信号量的阻塞进程 P177复习题5.11 什么是管程? 管程(Monitor)是一个程序设计语言结构,它提供与信号量同样的功能,但更易于操作 管程是一个软件模块 一个或多个过程 一个初始化序列 局部数据 P177复习题5.13 与读者-写者问题相关联的条件: 任意多的读进程可以同时读一个文件 一次只有一个写进程可以往文件中写 如果一个写进程正在往文件中写时,则禁止任何读进程读文件 P179习题5.2 一个并发程序,它的两个进程p与q,A、B、C、D、E是任意的原子语句。设主程序执行两个进程的parbegin。 void p(){A;B;C;} void q(){D;E;} 给出这两个进程所有可能的交替执行(根据原子语句给出执行轨迹) ABCDE; ABDCE; ABDEC; ADBCE; ADBEC; ADEBC;DEABC; DAEBC; DABEC; DABCE P179习题5.3 考虑右边的程序: a、确定由这个并发程序输出的共享变量最后值的上限与下线。设进程可以以任意相对速度执行,并当一个值由独立的机器指令载入一个寄存器中后,它只能增1. b、在a的假设下,允许任意多的进程并发执行,tally值的范围? const int n=50; int tally; void total(){ int count; for(count=1;count=n;count++){ tally++; } } void main(){ tally=0; parbegin(total(),total()); write(tally); } P179习题5.3 a. 乍一看,tally的范围好像是落在[50,100] 这个区间里,因为当没有互斥时可以从0直接增加到50.这一基本论点是当并发的运行这两进程时,我们不可能得到一个比连续执行单一某进程所得tally值还低的一个最终tally值.但是考虑下面由这两进程按交替顺序执行载入,增加,存储的情况下同时变更这个共享变量的取值: 1.进程A载入tally值,并将tally的值加到1,在此时失去处理器(它已经增加寄存器的值到1,但是还没有存储这个值). 2.进程B载入tally值(仍然是0),然后运行完成49次增加操作,在它已经将49这个值存储给共享变量tally后,失去处理器控制权. 3.进程A重新获得处理器控制权去完成它的第一次存储操作(用1去代替先前的49这个tally值),此时被迫立即放弃处理器. 4.进程B重新开始,将1(当前的tally值)载入到它自己的寄存器中,但此时被迫放弃处理器(注意这是B的最后一次载入). 5.进程A被重新安排开始,但这次没有被中断,直到运行完成它剩余的49次载入,增加和存储操作,结果是此时tally值已经是50. 6.进程B在它终止前完成仅有的最后一次增加和存储操作.它的寄存器值增至2,同时存储这个值做为这个共享变量的最终结果. 一些人认为会出现低于2这个值的结果,这种情况是不会出现.所以 tally值的正确范围是[2,100]. P182习题5.3 P182习题5.13 考虑图5.10中定义的无限缓冲区生产者/消费者问题的解决方案,设生产者与消费者都以大致相同的速度运行,运行情况如下: 生产者:append;semSignal;produce;...;append;semSignal;produce;...; 消费者:consume;...;take;semWait;consume;...;take;semWait;...; 生产者通常管理给缓冲区添加一个新元素,并在消费者消费了前面的元素后发出信号。生产者通常添加到一个空缓冲区中,而消费者通常取走缓冲区中的惟一元素。消费者从不在信号量上阻塞,但必须进行大量的信号量调用,产生相当多的开销。 构造新程序,使之更有效。 提示:允许n的值为-1,这表示不仅缓冲区为空,而且消费者也检测到这个事实并将被阻塞,直到生产者产生新的数据。这个方案不要图5.10中的局部变量m 。 P182习题5.13 P182习题5.13 program producerconsumer; var n: integer; s: (*binary*) semaphore (:= 1); delay: (*binary*) semaphore (:= 0); procedure producer; begin re

您可能关注的文档

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档