《操作系统设计与实现》第三版部分答案||第二章:进程

仅有课后习题部分答案,当作小结

2、进程的三种状态各是什么?分别简要描述。

(1)运行态(Running,在该时刻实际占用处理机)。
(2)就绪态(Ready,可运行,因为其他进程正在运行而暂时被挂起)。
(3)阻塞态(Blocked,除非某种外部事件发生,否则不能运行)。

4、目前的计算机上,终端处理程序至少有一小部分用汇编语言编写,为什么?

(1)中断处理程序中诸如开中断、关中断、保存寄存器的值,以及设置栈指针等操作无法用高级语言描述;
(2)中断处理程序的执行应该尽可能快,而汇编语言比高级语言代码执行效率可能会更高。

7、进程和线程的本质区别是什么?

二者的本质区别在于是否共享地址空间和共享多少地址空间。传统意义上,进程之间是不共享地址空间的,而线程是共享着进程的地址空间。

8、在使用线程的系统中,是每一个线程有一个堆栈还是每个进程有一个堆栈?说明原因。

每一个线程有各自独立的栈,堆为本进程中所有线程共享。

9、什么是竞争条件?

由于两个或者多个进程竞争使用不能被同时访问的资源,使得这些进程有可能因为时间上推进的先后原因而出现问题,这就叫做竞争条件(race condition)。

17、在2.2.4节中描述了一个高优先级进程H和低优先级进程L的情况。它最终导致H陷入死循环。若采用时间片调度而不是优先级调度,还能发生这种情况吗?

不会发生这种情况。在优先级调度算法下,L永远不会运行。在时间片调度算法下,进程L迟早会运行,最终他就会离开临界区。

23、从何种类型的进程可以在何时被启动的角度看,读者-写者问题可以通过几种方式进行形式化。根据优先哪几类进程的不同,请详细地描述问题的三种变体。对每种变体,请说明当一个读者或写者能够访问数据库情况将会怎样,以及当一个进程对数据库访问结束后将会怎样。

(1)读者优先:读者优先的情况下,当有一个读者正在读取,则要等到所有读者结束读取,才真正开始写;若有一个写者已经开始写,则这个写者完成后就开始读。读者不需要排队等待。
(2)写者优先:写者优先的情况下,当有一个读者已经开始读,则可以继续读取,但是如果有再读者申请读取文件,则不能够读取,只有在所有的写者写完之后才可以读取;若正在写,则要等到所有的写结束后才开始读。写者不需要排队等待。
(3)读写公平:一旦开始读,就一直读到没有读者为止;同样地,一旦开始写,所有写者都被完成为止。

26、对某些系统进行检测后表明平均每个进程在阻塞io之前的运行时间为T。一次进程切换需要的时间为S,这里S时机上为开销。对于采用时间片长度为Q的时间片调度法,对以下各种情况给出CPU利用率的计算公式:

这里数学符号难以打上,用图片:
《操作系统设计与实现》第三版部分答案||第二章:进程_第1张图片

a和b的情况是相同的,理解很容易;c的情况呢,就是说选的这段时间比切换时简长,但是比运行时间短,所以把分母的s替换一下;d的情况,二者相等嘛,所以CPU利用率只有一半;e种情况,CPU的时间还不如切换时间,得出答案。

27、有5个带运行任务,各自的运行时间分别是9,6,3,5和x。采用哪种运行次序将使平均响应时间最短?(取决于x)。

最短运行时间的任务优先调度。
当x ≤3时,运行次序为x,3,5,6,9;
当3 < x ≤ 5 时,运行次序为3,x,5,6,9;
当5 < x ≤ 6 时,运行次序为3,5,x,6,9;
当6 < x ≤ 9 时,运行次序为3,5,6,x,9;
当x > 9 时,运行次序为3,5,6,9,x。

28、有5个批处理任务A到E几乎同时到达一个计算中心。其预计运行时间分别为10min,6min,2min,4min和8min。其优先级(由外部设定)分别为3,5,2,1和4,这里5为最高优先级。对于下列每种调度算法,计算其平均进程周转时间,进程切换开销可忽略:

(1)时间片轮转:前十分钟,每个作业获得1/5的CPU时间,在第十分钟时,C结束;在接下来的8分钟内,每个作业获得1/4的CPU时间,在第8分钟时,D结束;以此类推。平均进程周转时间:( 10 + 18 + 24 + 28 + 30 ) ÷ 5 = 22 m i n
(2)优先级调度:
调度次序:B E A C D
平均进程周转时间:( 6 × 5 + 8 × 4 + 10 × 3 + 2 × 2 + 4 ) ÷ 5 = 20 m i n
(3)最短作业优先:
调度次序:C D B E A
平均进程周转时间:( 2 × 5 + 4 × 4 + 6 × 3 + 8 × 2 + 10 ) ÷ 5 = 14 m i n

33、一个软实时系统有4个周期性事件,其周期分别为50ms,100ms,300ms,250ms。假设其处理分别需要35ms,20ms,10ms和x ms,则该系统可调度所允许的x值最大是多少?

若35/50 + 20/100 + 10/300 + x/250 ≤ 1 ,则系统可以调度。
解得:x <= 50/3
因此x的最大值为50/3。

38、MINIX3使用图2.43所示的调度方法,其中不同类型的进程有不同的优先级。优先级最低的进程(用户进程)使用时间片调度法,而系统任务和服务器进程则允许一直运行到阻塞。请问优先级最低的进程是否会发生饥饿?为什么?

不会发生饥饿。系统任务和服务器进程优先级高,分配的时间片多,通常这些高优先级进程由于时间片用不完,常常处于阻塞状态。而用户进程时间片分配的少,当时间片用完后被移动到队列尾部。并且minix是一个抢占式操作系统,可以修改进程的优先级。

鸣谢

本人在写课后习题时参考了很多网上大神的资料,在此表示非常感谢!希望也能给大家一些帮助!

你可能感兴趣的:(linux)