操作系统第五版费祥林-课后习题答案参考

内容发布更新时间 : 2024/5/10 13:35:38星期一 下面是文章的全部内容请认真阅读。

( 3 )时间片轮转法

作业 执行时间 等待时间 周转时间 带权周转时间 A 10 20 30 3 B 6 l6 22 3 .66 C 2 4 6 3 D 4 l2 16 4 E 8 20 28 3. 5 作业平均周转时间T = ( 30 + 22 + 6 + 16 + 28 ) / 5 = 20.4 作业平均带权周转W = ( 3 + 3.66 + 3 +4 + 3.5 ) / 5 = 3.43 时间 按次序ABCDEABDEABEAEA 轮转执行。

12 (l)假定一个处理器正在执行两道作业,一道以计算为主,另一道以输入输出为主,你将怎样赋予它们占有处理器的优先级?为什么?

(2)假定一个处理器正在执行三道作业,一道以计算为主,第二道以输入输出为主,第三道为计算与输入输出均匀。应该如何赋予它们占有处理器的优先级使得系统效率较高?

答:处理器调度算法会考虑以下因素:作业响应时间要求;让CPU 尽量和外围设备并行工作;限制一个计算进程长时间霸占处理器。因而,( 1 ) FO 为主作业优先级高。(2 ) 输入输出为主作业优先级最高,输入输出均匀的作业其次,而计算为主作业的优先级最低。

13 请你设计一种先进的计算机体系结构,它使用硬件而不是中断来完成进程切换,则CPU 需要哪些信息?请描述用硬件完成进程切换的工作过程。

答:该计算机有一个专用硬件寄存器,它始终存放指向当前运行进程的PCB 的指针。当系统中发生了一个事件,如FO 结束事件,CPU 便可把运行进程的上下文保存到专用硬件寄存器指针指向的PCB 中保护起来,然后,CPU 转向中断向量表,找到设备中断处理程序入口,让专用硬件寄存器指针指向(设备)中断服务例程,于是,便可启动中断服务例程工作。

14 设计一条机器指令和一种与信号量机制不同的算法,使得并发进程对共享变量的使用不会出现与时间有关的错误。 解:

( l )设计机器指令。

设计一条如下的”测试、比较和交换”三地址指令,提供了一种硬件互斥解决方案:

TC&S R1 R3 B2 D2 该指令的功能如下:

l ) C 为一个共享变量,由地址2 、即变址(B2 ) + D2 给出, (2 )(Rl )与(C )比较,

(3 )如果(Rl ) = ( C )则(R3)→C ,并置条件码为\如果(R1 )≠(c )则(C )→Rl ,并置条件码为\( 2 )编写进程访问共享变量的程序。

陆界区程序 说明 共享变量C 的值保护到RI 中。 ( C )→Rl ; Rl 的值传送到R3 中,进程修改共享变量时,先对R3 操loop2 : ( R1 ) → R3 ; 作(不是直接操作C )。 Add /decrease R3 ; R3 加1 /减1 ,进程归还/申请由共享变量C 代表的TC & S ; 共享资源(假定每次一个)。 R( condition = 01 ) 执行”测试、比较和交换”指令。 loop2 ; 条件码=01 ,转向循环loop2 ;否则离开临界区。 对每个访问共享变量C 的进程,编写访问共享变量的程序段为:

( 3 )程序执行说明。

此解与互斥使用共享变量的思路绝然不同,并发运行的进程可不互斥地访问它们的共享变量。此方案认为造成共享变量C 值错误的原因在于:一个进程(Pl )在改变C 值的过程中,另一个进程伊2 )插进来也改变了C 的值,而本进程(Pl)却不知道,造成了c 值结果不正确。如果有办法使本进程口1 )能知道C 值是否改变,改变的话在继承改变了的C 值的基础上,再作自己的改变操作,则就不会导致共享变量C 值的错误。为此,本解决方案中,当一个进程l)准备改变C 值时,先把C 的值保护在Rl 中,然后,通过R3 来改变共享变量C 的值。当要把新的值(即R3 内的值)送C之前,先要判断一下在本进程(P1 )工作期间是否有别的进程口2 )插进来也改变了C 的值(并发进程P1 、P2 的执行完全会造成这种情况),方法是:将扭1 )中被保护的C 的原来值,与C 的当前值比较,若相等,说明C 值未被改变过,则将本进程(Pl )修改过的新值送C (即(R3 ) 一C ) ;若不相等,说明C 值在工作期间被改变过,则应该继承C 的新值(即(C )一Rl )并且返回到loop2 处重新对C值计数,以此保证C值的最终结果的正确性。这里提及”进程工作期间”指的是一个进程从开始至结束对共享变量C 值的操作的这段时间,也就是执行进程,' I 晦界区”这段程序的时间。此外,在进程进入临界区之前,应等待直到C 为非。(即有资源可用)为止。

( 4 )举例。

假定系统中有静态分配资源磁带机共3 台,被N 个进程共享,由共享变量C 来代表可用磁带机台数,其初值为3 。现有并发进程P1 和P2 均申请使用磁带机,执行临界区程序。

进程Pl 执行临界区程序

( C )→R1 ;因(C)=3 ,故(R1) = 3 。

loop2: ( Rl )→R3 因(R1 ) = 3 ,故(R3 )当前也=3 。 decrease R3 :申请使用磁带机,做减1 操作,故(R3 )=2. TC & S 执行”测试、比较和交换,, TC & S 指令。

如果R1=(C )则(R3 )→C,即(C)=2 ,并置条件码为”00\, 跳出临界区程序,去使用磁带机。 如果(Rl ) ≠ (C) ,例如,( C )=2 ,说明进程P2 抢先申请了磁带机,所以,C 与保护在R1 中的值不一样了(C 的值必

小于Rl 的值),应以C 的当前值为准,执行(C ) Rl ( R1 此时变为2 ) ,并置条件码为”01 \,转向foopZ 。于是伍1 ) = 2 , 跟着(R3 卜2 。接着卿)减1 后应=l 了。再执行TC & S 时,由于伍1 卜(C ) = 2 ,会使C 变为1 。

r ( conditio 二01 ) loop2 ; 巧单道批处理系统中,下列三个作业采用先来先服务调度算法和最高响应比优先算法进行调度,哪一种算法性能较好?请完成下表:

作业 提交时间 运行时间 开始时间 1 10 : 00 2 : 00 2 10 : 10 1 : 00 3 10 : 25 0 : 25 平均作业周转时间= 平均作业带权周转时间W = 答:

完成时间 周转时带权周间 转时间

可见HRRF 比FIFO 要好

16 若有如表所示四个作业进入系统,分别计算在FCFS 、S 开和HRR 卫算法下的平均周转时间与带权平均周转时间。(时间以十进制表示)

答:

17 Kleinrock 提出一种动态优先权算法:进程在就绪队列等待时,其优先权以速率a变化;当进程在处理器上运行,时其优先权以速率p 变化。给参数a,b 赋以不同值可得到不同算法。(l )若a>b>c是什么算法?( 2 )若a<b<c是什么算法

答:( l )是先进先出算法。因为在就绪队列中的进程比在CPU 上运行的进程的优先数提高得快,故进程切换时,先进入就绪队列的进程优先权就越高。 ( 2 )是后进先出算法。因为在就绪队列中的进程比在CPU 上运行的进程的优先权下降得快,故后进入就绪队列的进程此先进入的进程的优先权高。

18 有一个四道作业的操作系统,若在一段时间内先后到达6 个作业,它们的提交和估计运行时间由下表给出:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi