练习1 1.1-1.10题解见书
1.11 有一台输入设备和一台输出设备的计算机系统上,运行有两道程序。两道程序投入运行情况如下: 程序1先开始运行,其运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms,结束;
程序2后开始运行,其运行轨迹为:计算50ms、输入100ms、计算100ms、结束。
1. 忽略调度时间,指出两道程序运行时,CPU是否有空闲?在哪部分空闲?指出程序1和程序
2. 有无等待CPU的情况?如果有,发生在哪部分? 题解:
由题画出CPU利用图如下:
由图可知,1.CPU有空闲,在100ms~150ms时间段是空闲的。 2.程序1无等待时间,而程序2在一开始的0ms~50ms时间段会等待。
1.12 在计算机系统上运行三道程序,运行次序为程序1、程序2、程序3。 程序1的运行轨迹为:计算20ms、输入40ms、计算10ms。 程序2的运行轨迹为:计算40ms、输入30ms、计算10ms。 程序3的运行轨迹为:计算60ms、输入30ms、计算20ms。 忽略调度时间,画出三道程序运行的时间关系图;完成三道程序共花多少时间?与单道程序比较,节省了多少时间?
解答:三道程序运行,完成三道程序共花170ms。与单道程序(260ms)比较,节省了90ms。
(始终按照1-2-3的次序,即程序1→程序2→程序3→程序1→程序2→(在程序3运行前会停10ms等待输入完成)程序3。
(如果不是按照程序1、2、3的次序完成则会有多种情况。)
1.13 在计算机系统上有两台输入/输出设备,运行两道程序。
程序1的运行轨迹为:计算10ms、输入5ms、计算5ms、输出10ms、计算10ms。
程序2的运行轨迹为:输入10ms、计算10ms、输出5ms、计算5ms、输出10ms。
在顺序环境下,先执行程序1,再执行程序2,求总的CPU利用率为多少?
题解:由题画出CPU利用图如下:
由图可知,在总共80ms的时间里,CPU空闲时间为40ms,即: CPU利用率=40ms/80ms*100%=50%
1.14 一个计算机系统有足够的内存空间存放3道程序,这些程序有一半的时间在空闲等待I/O操作。问多大比例的CPU时间被浪费掉了。 题解:由题画图如下:
因为每个程序有一半的时间在等待I/O操作,所以在并发状态下,程序1、程序2、程序3所占时间比依次减半(如上图),所以浪费的时间比例为1/8。
练习2
2.18 某系统中进程状态变化如图2.22所示,当对系统中的进程进行观察时,发现某一进程产生的一次状态变化会引起另一进程发生状态变化。
(1)在什么情况下,一个进程的状态变化3能够立即引起另一进程的状态变化1?
(2)在什么情况下,一个进程的状态变化2能够立即引起另一进程的状态变化1? (3)进程的状态变化3是否可能引起另一进程的状态变化2?进程的状态变化3是否可能引起另一进程的状态变化1?
解答:
(1)当就绪队列中还存在其它进程的情况下,一个进程的状态变化3能够立即引起另一进程的状态变化2。
(2)当就绪队列中还存在其它进程的情况下,一个进程从运行状态变化到就绪状态后,另一个就绪进程能够从就绪状态变为运行状态。 (3)不可能,可能。
2.19分别写出相应的程序来描述图2.23中的前趋图。 解答
S4 S2 S6 S1 S5 S3 S7
程序:S1:a:=x+1 S2:b:=a+2 S3:c:=a+3 S4:d:=b+4 S5:e:=b+c S6:f:=e+5 S7:g=e+6
S4 S2 S6 S1 S5 S3 S7
程序:S1:a:=x+1 S2:b:=a+2 S3:c:=a+3 S4:d:=b+4 S5:e:=b+c S6:f:=d+e S7:g:=c+e
2.20 假设在一个系统中,新进程以每分钟8个进程的速率到达,每个进程请