操作系统习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习答案
练习1
1.1-1.10题解见书
1.11有一台输入设备和一台输出设备的计算机系统上,运行有两道程序。两道
程序投入运行情况如下:
程序1先开始运行,其运行轨迹为:计算50ms、输出100ms、计算50ms、输出100ms,结束;
程序2后开始运行,其运行轨迹为:计算50ms、输入100ms、计算100ms、结束。
1. 忽略调度时间,指出两道程序运行时,CPU是否有空闲?在哪部分空闲?
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.1-2.17题解见书
2.18 某系统中进程状态变化如图2.22所示,当对系统中的进程进行观察时,发现某一进程产生的一次状态变化会引起另一进程发生状态变化。
(1)在什么情况下,一个进程的状态变化3能够立即引起另一进程的状态变化1?
(2)在什么情况下,一个进程的状态变化2能够立即引起另一进程的状态变化1?
(3)进程的状态变化3是否可能引起另一进程的状态变化2?进程的状态变化3是否可能引起另一进程的状态变化1?
解答:
(1)当就绪队列中还存在其它进程的情况下,一个进程的状态变化3能够立即引起另一进程的状态变化2。
(2)当就绪队列中还存在其它进程的情况下,一个进程从运行状态变化到就绪状态后,另一个就绪进程能够从就绪状态变为运行状态。
(3)不可能,可能。
2.19分别写出相应的程序来描述图2.23中的前趋图。
解答
程序: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
程序:S1:a:=x+1
S2:b:=a+2
S3:c:=a+3
S4:d:=b+4
S5:e:=b+c
S6:f:=d+e S1
S2
S3 S4
S5 S6 S7 S1
S2
S3 S4
S5 S6
S7
S7:g:=c+e
2.20 假设在一个系统中,新进程以每分钟8个进程的速率到达,每个进程请求服务的平均时间为6s,估计在一个单处理器系统中CPU忙的时间比率。
如果新进程以每分钟10个进程的速率到达,每个进程请求服务的平均时间也为6s,估计在一个单处理器系统中CPU忙的时间比率。
如果新进程创建以每分钟超过10个进程的速率到达,每个进程请求服务的平均时间为6s,估计在一个单处理器系统中CPU忙得时间比率,并解释此时的情况。
解答:
因为新进程每分钟8个进程的速率到达,每个进程之间达到的时间间隔为7.5s。由于每个进程占用6s的CPU时间。所以,1分钟之内CPU的空间时间为8*1.5s=12s。CPU的利用率为48/60=0.8,即80%。
因为新进程每分钟10个进程的速率到达,每个进程之间达到的时间间隔为6s。由于每个进程占用6s的CPU时间。所以,1分钟之内CPU的空间时间为0s。CPU的利用率为100%。
如果新进程创建以每分钟超过10个进程的速率到达,每个进程请求服务的平均时间为6s,则请求服务时间会大于1分钟,CPU一直会处于繁忙,所以 CPU 忙的时间比率同样为100%。
2.21 一个系统中有4个进程,进程P1要求20s后运行,经过40s后再次运行;进程P2要求25s后运行;进程P3要求35s后运行,经过35s后再次运行;进程P4要求60s后运行。进程在阻塞队列等待被唤醒后运行,试创建进程的唤醒队列。
解答:进程的唤醒队列为P1→P2→P3→P4→P1→P3
注意:“经过40s后再次运行”表示第1次运行完成后再过40s。
2.22 如果线程是在用户空间线程库中实现,解释为什么当进程中的一个线程阻塞时,进程内的所有其它线程都会阻塞?如果线程是在内核空间中实现,而进程内的一个线程阻塞不会引起进程内的其他线程被阻塞,为什么?
解答:
用户级线程由用户空间运行的用户级线程库实现。当一个应用程序提交给操作系统后,操作系统首先为该应用程序建立一个内核管理进程,然后用户级线程库为该进程创建一个或多个用户级线程,但内核并不知道用户空间线程的活动,内核只是以进程为单位,实现进程状态的转换,因此当进程中的一个线程阻塞时,进程内的所有其它线程都会阻塞。
如果线程是在内核空间中实现的,这些内核级线程都由内核创建和控制管理,内核为整个进程及进程中的所有线程维护现场信息,内核的调度是在线程的基础上进行的,因而进程的一个线程阻塞不会引起进程内的其他线程被阻塞。
练习3
3.1-3.12题解见书
3.13证明作业调度算法中短作业优先调度算法具有最小平均等待时间。
证明:假设在作业队列中等待运行的作业有N道,分别为N0,N1,N2,…,Nn-1,