操作系统课后习题答案_第1页
操作系统课后习题答案_第2页
操作系统课后习题答案_第3页
操作系统课后习题答案_第4页
操作系统课后习题答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.1 为什么对调度程序而言,区分CPU约束程序和I/O约束程序很重要?答:在运行I/O操作前,I/0限制的程序只运行很少数量的计算机操作。而CPU约束程序一般来说不会使用很多的CPU另一方面,CPU约束程序会利用整个时间片,且不做任何阻碍I/O操作的工作。因此,通过给I/O约束程序优先权和允许在CPU约束程序之前运行,可以很好的利用计算机资源。5.3 考虑用于预测下一个CPU区间长度的指数平均公式。将下面的值赋给算法中的参数的含义是什么?A.a=0且t0=100msB.a=0.99且t0=10ms答:当a=0且t0=100ms时,公式总是会预测下一次的CPU区间为100毫秒。当a=0.99且

2、t0=10毫秒时,进程将给予更高的重量以便能和过去相比。因此,调度算法几乎是无记忆的,且简单预测未来区间的长度为下一次的CPU执行的时间片。5.4 考虑下面一组进程,进程占用的CPU区间长度以毫秒来计算:进程区间时间优先级Pi103P211P323P414P552假设在0时刻进程以P1、P2、P3、P4、P5的顺序到达。a.画出4个Gantt图分别演示用FCFSSJF非抢占优先级(数字小代表优先级高)和RR(时间片=1)算法调度时进程的执行过程。b.每个进程在每种调度算法下的周转时间是多少?c.每个进程在每种调度算法下的等待时间是多少?d.哪一种调度算法的平均等待时间最小?答a.FCFSP1P

3、2P3P4P501011131419P2P4P3P5P1SJF2199401P2P5P1P3P4非抢占优先级:616181901RRP1P2P3P4P5P1P3P5P1P5P1P5P1P5P10123456789101112131419b.周转时间:FCFSSJF非抢占优先级RRP110191619P211112P3134187P4142194P5199614c.等待时间:FCFSSJF非抢占优先级RRP10969P210001P3112165P4131183P514429d.从上表中可以看出SJFW等待时间最小。5.5 下面哪种调度算法能导致饥饿a.先到先服务b.最短作业优先c.轮转法d.优

4、先级答:最短作业优先和优先级调度算法能导致饥饿。因为对于优先级较低的作业来说,最短作业优先和优先级调度算法会使其无穷等待CPU,长期得不到调用,这就导致了饥饿问题,也叫无穷阻塞。5.9考虑下面的动态改变优先级的抢占式优先级调度算法。大的优先级数代表高优先级。当一个进程在等待CPU时(在就绪队列中,但未执行),优先级以“速率改变;当它运行时,优先级以3速率改变。所有的进程在进入等待队列时被给定优先级为0。参数a和3可以进行设定得到许多不同的调度算法。a. 3a0是什么算法?b. a30时是什么算法?答:a.FCFSB到先服务调度算法。当进程进入到就绪队列时,其PCB链接到队列的尾部,优先级以a速

5、率改变;当CPU空闲时,CPU分配给位于队列头的进程,优先级加快,以3速率改变,接着该运行进程从队列中删除。b.LIFO后进先服务调度算法。同上,当进程进入到就绪队列时,优先级以a速率改变,等待后进的进程先调度,之后轮到该进程时,优先级加快,以3速率改变,完成调度。2.1 第一个著名的正确解决两个进程的临界区问题的软件方法是Dekker设计的。两个进程P0和P1共享以下变量:booleanflag2;/*initiallyfalse*/intturn;进程Pi(i=0或1)的结构见6.25,另一个进程为Pj(j=0或1)。证明这个算法满足临界区问题的所有三个要求。doflagi=TRUE;wh

6、ile(flagj)if(turn=j)flagi=false;while(turn=j);/donothingflagi=TRUE;/criticalsectionturn=j;flagi=FALSE;/remaindersectionwhile(TRUE);图6.25Dekker算法中的进程pi结构答:这个算法满足临界区问题的三个要求:(1) 在标记和返回变量的使用中,互斥条件是保证的。如果两个进程将它们的标识设为真,那么只有一个进程会成功进行,即轮到的那个进程。当另一个进程更新它的返回变量时,等待的那个进程只能进入它的临界区域。(2) 就绪的进程,通过标志,返回变量。这个算法没有提供严格

7、的交替。如果一个进程想要进入它们的临界区域,它可以将它的标识设为真,然后进入它们的临界区域。当退出它的临界区域,它可以设置转向其他进程的值。如果这个进程想要在其他进程之前再次进入它的临界区域,它会重复这样的进程:进入它的临界区域,在退出时转向另一个进程。(3) 在双T返回变量的使用过程中,临界等待受阻。假设两个进程想要进入它们的责任所在的临界区域。它们都将它们的标志的值设为真;而只有轮到的那个线程可以执行;其他的线程处于等待状态。如果临界等待没有受阻,当第一个进程重复“进入-退出”它的临界区域这一过程。Dekker算法在一个进程中设置一个转向另一个进程的值,从而保证另一个进程接下来进入它的临界

8、区域。2.2 第一个将等待次数降低到n-1范围内的正确解决n个进程临界区问题的软件解决方法是由日senberg和Mcguire设计的。这些进程共享以下变量:enumpstateidle,wantin,incs;pstateflagn;intturn;flag的所有成员被初始化为idle;turn的初始值无关紧要(在0和n-1之间)。进程pi的结构见图6.26。试证明这个算法满足临界区问题的所有三个要求。dowhile(TRUE)flagi=wantin;j=turn;while(j!=i)if(flagj!=idle)j=turn;elsej=(j+1)%n;flagi=incs;j=0;wh

9、ile(j=n)&(turn=I|flagturn=idle)break;/criticalsectionj=(turn+1)%n;while(flagj=idle)j=(j+1)%n;turn=j;flagi=idle;/remaindersectionwhile(TRUE);图6.26Eisenberg和McGuire算法中的进程pi结构答:(1)互斥:注意到一个进程只有在下列条件满足时才能进入临界区域:没有其他进程在CS中有设置的标识变量。保证没有两个进程同时进入临界区域。(2)有空让进:当多进程同时在CS中设置它们的标识变量时,检查是否有其他进程在cs中设置标识变量。这种情况发生时,所

10、有的进程意识到这里存在进程竞争,在外层while(1)的循环下进入下一次迭代,重置它们的标识变量到want中。这个进程仅能进入临界区域。(3)有限等待:当进程k在打算进入临界区域时,它的标识不再置为空闲。任何序号不在轮次和k之间的进程不能进入临界区域。与此同时,所有序号落在轮次和k之间且又想要进入临界区域的进程能够进入临界区域(这是基于系统一直在进步的事实),这个轮次值变得越来越接近ko最后,要么轮次变为k,要么没有哪些序号在轮次和k之间的进程,这样进程k就进入临界区域了。6.9试说明如果wait()和signal()操作不再是原子化操作,那么互斥可能是不稳定的。答:买卖操作自动递减和信号量有

11、关的值。如果两个买卖操作在信号量的值为1的信号量上执行,而且这两种操作不是自动执行的,那么这两个操作在进展中会递减信号量的值,从而干扰互斥。6.11理发店问题。一家理发店有一间有n把椅子的等待室和一间有一把理发椅的理发室。如果没有顾客,理发师就去睡觉。如果顾客来时所有的椅子都有人,那么顾客就会离去。如果理发师在忙,而又有空闲的椅子,那么顾客会坐在其中一个空闲的椅子上。如果理发师在睡觉,顾客会摇醒他。编写一个程序来协调理发师和顾客。答:当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。而当某个进程释放资源时,则它就相当一个生产者。因此此题可看作是n个生产者和1个消费者问题。顾客

12、作为生产者,每到来一个就使计数器count增加1,以便让理发师理发(相当于消费)至最后一个顾客(相当于产品)。并且,第1个到来的顾客应负责唤醒理发师;如果不是第1个到达的顾客,则在有空椅子的情况下坐下等待,否则离开理发店(该消息可由计数器count获得),所以可以通过一个有界缓冲区把理发师和顾客联系起来通过对信号进行P、V操作来实现有关问题和相关描述。控制变量waiting用来记录正在等候顾客的理发师数;信号量customers用来记录等候理发的顾客数,并用作阻塞理发师进程;信号量barbers用来记录正在等候顾客的理发师数,并用作阻塞顾客进程。信号量mutex用于互斥。初始化:intlong

13、waiting(0);/正在等待的顾客的数目customers,barbers,mutex:semaphore;customers:0;barbers:=1;waiting:=0;mutex:=NULL;理发师进程:barber()begindoP(customers),若无顾客,理发师睡眠p(mutex);/进程互斥waiting-;/等候顾客减1V(barbes);/理发师为下一个顾客理发V(mutex);/开放临界区cut-hair();/正在理发while(TURE)是否还有顾客顾客进程:customer()begindoP(mutex);/进程互斥if(waiting)waiting+;/等待顾客数加1V(customers);/唤醒理发师V(mutex);/开放临界区P(barbers);/理发师没空,顾客等候get-haircut;/顾客准备理发)elseV(utex);/无空闲位,顾客离开while(TRUE)6.15试论述

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论