- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统第五章习题解答 5.2 5.3 a. (1).上限是100。因为最多只有100次加1操 作。这种情况发生在两个进程顺序执行时。 (2).下限是2,发生的情形可以描述如下: 说明:tally++实际上分三步执行,先执行A?tally,再执行INC A,最后执行tally?A。此处A为寄存器,其值将在进程切换时保护起来。 5.6 a.用文字描述这个算法: 分步: 对于第i个进程: 为了得到服务首先要取得顺序号:即对number[i]进行写操作,此时应屏蔽所有其它进程对number数组的读操作。当对number[i]的写操作完成时才允许其它进程对其的读操作。 查看是否有其他进程正在操作,若有则做空操作;与其它进程的顺序号比较,若小于则可得到服务,否则等待。 进入临界区 服务完毕将number[i]置0。 总述: 当一个进程希望进入其临界区,它将得到一张票,票的号码将是所有等待进入临界区或已在临界区的进程所得到票的号码中最大者加1。拥有最小票号的进程将率先进入临界区。如果有多个进程得到的票具有相同的号码,则进程号更小的进程将更占优势。当一个进程离开其临界区,它将重置其中票号为0。 b.解释此算法如何避免死锁 死锁时的情形:每个人都拿到了顺序号,但都拿不到面包。 在本算法中即使顺序号相同,但数组下标是不同的。所以进程总可推进不会发生死锁。 c.解释此算法如何加强互斥; (1)对临界资源面包是按照顺序号互斥的使用 (2)对number数组的操作通过写操作前置true保证其它进程此时不能对其读,从而保证读写互斥。 5.9 错误情形:假设有2个进程都调用Wait且s的初值为0。在第一个进程执行完SignalB(mutex)且尚未执行WaitB(delay)时,第二个进程开始调用Wait,也停在同一点(即SignalB(mutex)和WaitB(delay)之间)。这时,s的值为-2,而mutex是打开的。假如有另外2个进程在这时相继调用了Signal,那么他们每个都会做SignalB(delay)操作,但程序中后一个SignalB将没有意义。 解决: void Wait(semaphore s) { WaitB(mutex); s--; if(s0){ SignalB(mutex); WaitB(delay); } SignalB(mutex);}void Signal(semaphore s){ WaitB(mutex); s++; if(s=0) SignalB(delay); else SignalB(mutex);} 5.11 改正后的程序: var car_available:semaphore(:=n) passenger_wait:semaphore(:=0) passenger i: wandering for a random time; signal(passenger_wait); wait(car_available); car j: wait(passenger_wait); take passenger wandering signal(car_available) parbegin passenger1;passenger2;…passengerm; car1;car2;…carn; parend 5.14 考虑图5.17。如果按照以下的顺序改变程序中的相应处程序的意思会改变吗? a. wait(e); wait(s) b. signal(s);signal(n) c. wait(n);wait(s) d. signal(s);signal(e) a.互换wait(e)和wait(s): 结果: 对于生产者进程来说,若wait(s)成功,则说明可以使用缓冲池。若wait(e)不成功说明没有空缓冲区可用,此时生产者进程等待。 对于消费者进程来说,若wait(n)成功,则说明缓冲池不空。若wait(s) 成功说明可以使用缓冲池,但此时由于生产者进程已将缓冲池占有,此时消费者进程等待。结果发生死锁。 b.意思不变 c.同a d.意思不变 5.16 这一问题给出了相应三种进程的信号量的使用。圣诞老人(Santa Claus)在北极他的店里睡觉仅能被(1)、(2)唤醒。 (1)所有九个驯鹿都结束它们的假期从南太平洋回来 (2)仅当制造玩具的小孩子有困难时将其喊醒为了让圣诞老人多睡会儿觉,仅当三个小孩子有问题时将其唤醒。当三个小孩
文档评论(0)