操作系统——精髓与设计原理(第五章答案)

操作系统——精髓与设计原理(第五章答案)

ID:5332997

大小:219.00 KB

页数:19页

时间:2017-11-23

操作系统——精髓与设计原理(第五章答案)_第1页
操作系统——精髓与设计原理(第五章答案)_第2页
操作系统——精髓与设计原理(第五章答案)_第3页
操作系统——精髓与设计原理(第五章答案)_第4页
操作系统——精髓与设计原理(第五章答案)_第5页
资源描述:

《操作系统——精髓与设计原理(第五章答案)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统第五章习题解答5.2ABDCDDCEEECBECEECCBDAEBECEECBCACB5.3a.(1).上限是100。因为最多只有100次加1操作。这种情况发生在两个进程顺序执行时。(2).下限是2,发生的情形可以描述如下:说明:tally++实际上分三步执行,先执行Atally,再执行INCA,最后执行tallyA。此处A为寄存器,其值将在进程切换时保护起来。进程1进程2备注A1A2tally[A1tally]100[tally++]101[tally++]202……………………[tally++]49049[INCA1]1149[tallyA1]111[A2tally]5

2、011[tally++]212[tally++]313……………………[tally++]50150[INCA2]50250[tallyA2]5022注:下标指明了相应操作是第几次循环的操作b.上限是50*N,下限是2。5.6a.用文字描述这个算法:分步:对于第i个进程:为了得到服务首先要取得顺序号:即对number[i]进行写操作,此时应屏蔽所有其它进程对number数组的读操作。当对number[i]的写操作完成时才允许其它进程对其的读操作。查看是否有其他进程正在操作,若有则做空操作;与其它进程的顺序号比较,若小于则可得到服务,否则等待。进入临界区服务完毕将number[i]置0。总述:

3、当一个进程希望进入其临界区,它将得到一张票,票的号码将是所有等待进入临界区或已在临界区的进程所得到票的号码中最大者加1。拥有最小票号的进程将率先进入临界区。如果有多个进程得到的票具有相同的号码,则进程号更小的进程将更占优势。当一个进程离开其临界区,它将重置其中票号为0。b.解释此算法如何避免死锁死锁时的情形:每个人都拿到了顺序号,但都拿不到面包。在本算法中即使顺序号相同,但数组下标是不同的。所以进程总可推进不会发生死锁。c.解释此算法如何加强互斥;(1)对临界资源面包是按照顺序号互斥的使用(2)对number数组的操作通过写操作前置true保证其它进程此时不能对其读,从而保证读写互斥。5.9

4、错误情形:假设有2个进程都调用Wait且s的初值为0。在第一个进程执行完SignalB(mutex)且尚未执行WaitB(delay)时,第二个进程开始调用Wait,也停在同一点(即SignalB(mutex)和WaitB(delay)之间)。这时,s的值为-2,而mutex是打开的。假如有另外2个进程在这时相继调用了Signal,那么他们每个都会做SignalB(delay)操作,但程序中后一个SignalB将没有意义。解决:voidWait(semaphores) {WaitB(mutex); s--;if(s<0){SignalB(mutex);WaitB(delay); }Signa

5、lB(mutex); } voidSignal(semaphores) {WaitB(mutex); s++;if(s<=0)SignalB(delay);elseSignalB(mutex); }5.11改正后的程序:varcar_available:semaphore(:=n)passenger_wait:semaphore(:=0)passengeri:wanderingforarandomtime;signal(passenger_wait);wait(car_available);carj:wait(passenger_wait);takepassengerwanderingsig

6、nal(car_available)parbeginpassenger1;passenger2;…passengerm;car1;car2;…carn;parend5.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)不成功说明没有空缓冲区可用,此时生产者进程等待。对于消费者进程来说,若wai

7、t(n)成功,则说明缓冲池不空。若wait(s)成功说明可以使用缓冲池,但此时由于生产者进程已将缓冲池占有,此时消费者进程等待。结果发生死锁。b.意思不变c.同ad.意思不变5.16这一问题给出了相应三种进程的信号量的使用。圣诞老人(SantaClaus)在北极他的店里睡觉仅能被(1)、(2)唤醒。(1)所有九个驯鹿都结束它们的假期从南太平洋回来(2)仅当制造玩具的小孩子有困难时将其喊醒为了让圣诞老人多睡会儿

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。