操作系统课后习题1-9答案教学文案 联系客服

发布时间 : 星期四 文章操作系统课后习题1-9答案教学文案更新完毕开始阅读

求服务的平均时间为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.13 证明作业调度算法中短作业优先调度算法具有最小平均等待时间。

证明:假设在作业队列中等待运行的作业有N道,分别为N0,N1,N2,…,Nn-1,它们的运行时间分别为t0,t1,…,tn-1,且满足t0

由于短作业有限调度算法总是选择最短的作业先调度,故这些作业总的等待时间为:

T1=0 + t0 + (t0 + t1)+(t0 + t1 + t2 ) + … + (t0 + t1 + t2 + … +

tn-2)

=( N - 1) t0 + ( N - 2) t1 + ( N - 3) t2 + … + tn-2 (1)

如果不按照短作业优先调度算法,可设调度顺序为:N1,N0,N2,…,Nn-1,故这些作业总的等待时间为:

T2= 0 + t1 +(t0 + t1)+(t0 + t1 + t2 ) + … + (t0 + t1 + t2 + … + tn-2)

=( N - 2) t0 + ( N - 1) t1 + ( N - 3) t2 + … + tn-2 (2) (2)-(1)得:

T2 – T1 = t1 – t0 >0

说明任何一种作业调度顺序的作业的平均等待时间都大于按照短作业优先的作业的平均等待时间。

3.14 假设在一个处理器上执行5个作业,作业到达的次序和需要执行的时间分别为:J0(75ms)、J1(15ms)、J2(5ms)、J3(15ms)、J4(45ms),

假定系统中使用FCFS调度算法,作业J3的周转时间是多少?作业的平均等待时间是多少? 答: 周转时间(ms) 等待时间(ms) J0 75 0 J1 90 75 J2 95 90 J3 110 95 J4 155 110 平均等待时间(ms) 74

3.15在单道批处理系统中,三个作业的提交时间分别为:10:00、10:10、10:20,需要执行时间分别为:2小时、1小时、0.5小时,分别按照短作业优先调度算法和高响应比优先调度算法进行调度,比较哪一种调度算法更好? 解:

(1) 不抢占:

执行顺序为A,C,B 平均周转时间:(120+130+200)/3=150(min) 平均带劝周转时间:(120/120+130/30+200/60)/3 =26/9 抢占: A(10:10),B(10:20),C(10:50),B(11:40),A(13:30)

平均周转时间:(210+90+30)/3=110(min) 平均带劝周转时间:(210/120+90/60+30/30)/3 =510/360=17/12

(2) 响应比高者优先调度算法不会抢占,因此,只存在这样一种情况:

执行顺序为A,C,B 平均周转时间:(120+130+200)/3=150(min) 平均带劝周转时间:(120/120+130/30+200/60)/3 =26/9

所以,如果要比较哪一种算法好自然针对不抢占的情况。根据比较结果,它们的平均周转时间和平均带权周转相同,这主要是该应用正好发生了这样凑巧的情况。

3.16假设在具有一个处理器的系统上执行下面的作业,假如采用抢占式短作业优先调度算法,作业需要处理时间T和到达时间A分别如下:那么:

I T 到达时间A 0 50 0 1 35 10 2 20 10 3 25 55 4 40 95 作业1的周转时间是多少?作业的平均等待时间是多少? 答:

1。执行顺序为:0(10),2(30),1(65),3(90),0(130),4(170) 作业0的周转时间为:130, 作业1的周转时间为:55, 作业2的周转时间为:20, 作业3的周转时间为:35 作业4的周转时间为:65 平均周转时间=305/5=61

作业0的等待时间为:130-50=80, 作业1的等待时间为:55-35=20, 作业2的等待时间为:10-10=0, 作业3的等待时间为:,35-25=10 作业4的等待时间为:,65-40=25

3.17假如在具有一个处理器系统中,采用优先级高者优先的进程调度算法,优先数小代表优先级高,进程达到顺序I和需要处理时间T、优先数分别如下:

I T 优先级 0 75 3 1 15 1 2 5 4 3 15 5 4 45 2 (1)没有优先级抢占情况下,写出进程的执行先后序列,进程2的周转时间是多少?进程的平均等待时间是多少?

(3)有优先级抢占情况下,写出进程的执行先后序列,进程2的周转时间是多少?进程的平均等待时间是多少? 答:

(1)无抢占:

执行顺序为:1(15),4(60),0(135),2(140),3(155) 进程0的周转时间为:135 进程1的周转时间为:15 进程2的周转时间为:140 进程3的周转时间为:155 进程4的周转时间为:60 进程的平均等待时间=((135-75)+(15-15)+(140-5)+(155-15)+(60-45))/5 = 70

(2)有抢占:

优先级抢占同上一样。

3.18 假如在具有一个处理器的系统中,采用时间片轮转调度算法,时间片大小为10。进程需要处理时间T和到达时间A分别如下:

I T 到达时间A 0 50 0 1 35 10 2 20 10 3 15 80 4 40 85

写出进程的执行序列,进程3的周转时间是多少?进程的平均等待时间是多少? 答:

进程的执行序列为:0,1,2,0,1,2,0,1,3,4,0,1,3,4,0,4 进程0的周转时间 T0= 140 进程1的周转时间 T1= 105 进程2的周转时间 T1= 50 进程3的周转时间 T1= 40 进程4的周转时间 T1= 75 进程的平均等待时间为:((140-50)+(105-35)+(50-20)+(40-15)+(75-40))/5=50

3.18 在时间片轮转调度算法中,有 n个进程共享CPU。

(1)如果进程切换的时间不可忽略,每次进程切换用去时间为s秒,在保证每个进程至少每t秒内能够在CPU上轮回一次的前提下,确定时间片大小q使得进程切换所造成的负载最小。

(2) 如果n=100,t=1,s=0.001,那么q的大小应该是多少? 答:

(1)时间片大小q =(t-ns)/n

(2)q=(1-100*0.001)/100 = 0.009

3.19 有一个四道作业的操作系统,若在一段时间内先后到达6个作业,它们的