操作系统谌卫军 王浩娟课后习题参考答案Word文档下载推荐.docx
《操作系统谌卫军 王浩娟课后习题参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统谌卫军 王浩娟课后习题参考答案Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
![操作系统谌卫军 王浩娟课后习题参考答案Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/29/15441c7e-f3d9-4d91-ba12-f6df3aab7fd2/15441c7e-f3d9-4d91-ba12-f6df3aab7fd21.gif)
SJF
FCFS
短进程、I/O繁忙进程
三、简答题
1、运行状态、阻塞状态、就绪状态
运行->
阻塞:
如进行I/O操作、进程间同步关系;
就绪:
时间片用完、被高优先级进程所打断;
阻塞->
等待的I/O操作、信号量等事件发生;
就绪->
运行:
调度程序选中该进程运行;
2、
(1)进程是资源分配单位,拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;
(2)线程能减少并发执行的时间和空间开销,包括创建时间、终止时间、切换时间;
(3)线程之间可以共享同一个地址空间,可以进行不通过内核的通信,而进程不行;
(4)线程=轻量级进程;
(5)线程是CPU调度单位;
3、
(1)当一个新的进程被创建时;
(2)当一个进程运行完毕时;
(3)当一个进程由于I/O、信号量或其他的某个原因被阻塞时;
(4)当一个I/O中断发生时,表明某个I/O操作已经完成,而等待该I/O操作的进程转入就绪状态;
(5)在分时系统中,当一个进程的时间片用完时;
4、
RR算法的基本思路:
(1)将所有的就绪进程按照FCFS原则,排成一个队列;
(2)每次调度时将处理器分派给队首进程,让其执行一小段CPU时间;
(3)在一个时间片结束时,如果进程还没有执行完的话,将发生时钟中断,在时钟中断中,进程调度程序将暂停当前进程的执行,并将其送到就绪队列的末尾,然后执行当前的队首进程;
(4)如果进程在它的时间片用完之前就已结束或被阻塞,那么立即让出CPU。
RR算法的主要缺点:
时间片q的大小难以确定。
5、
(1)时间片用完,高优先级进程就绪
(2)不会发生切换
(3)PCB
(4)不需要
(5)不能
四、应用题
1、
(1)CPU空闲:
100ms~150ms
(2)A无等待,B有等待,180ms~200ms
(1)Job1从投入到运行完成需要110ms,Job2从投入到运行完成需要90ms,Job3从投入到运行完成需要110ms:
(2)CPU的利用率:
(110-30)/110=72.7%;
(3)设备I1的利用率:
(110-30)/110=72.7%,设备I2的利用率:
(110-20)/110=81.8%。
(1)这种机制不能实现资源的互斥访问
考虑如下的情形:
(a)初始化的时候,flag数组的两个元素值均为FALSE
(b)线程0先执行,在执行while循环语句的时候,由于flag[1]=FALSE,所以顺利结束,不会被卡住。
假设这个时候来了一个时钟中断,打断它的运行;
(c)线程1去执行,在执行while循环语句的时候,由于flag[0]=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区;
(d)后来当线程0再执行的时候,也进入了临界区,这样就同时有两个线程在临界区
(2)可能会出现死锁
(b)线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断,打断它的运行;
(c)线程1去执行,flag[1]=TRUE,在执行while循环语句的时候,由于flag[0]=TRUE,所以在这个地方被卡住了,直到时间片用完;
(d)线程0再执行的时候,由于flag[1]=TRUE,它也在while循环语句的地方被卡住了,这样,这两个线程都无法执行下去,从而死锁。
(1)最后打印了3个字符'
D'
(2)最少可能打印了0个字符'
A'
,例如,P1连续执行了3次,然后P3连续执行了3次。
P2一次也没有执行。
(3)不可能,因为当打印出前面的“CABAB”的时候,信号量R的值等于1,此时,不可能连续打印两个D。
(4)可能。
相当于进程P2在打印完第二个A的时候被中断了。
(1)信号量的定义:
intboys_waiting=0,girls_waiting=0,using=0;
SemaphoreS_mutex=1,S_boys=0,S_girls=0;
(2)
voidboy_wants_to_use_bathroom()
{
P(S_mutex);
if((using==0)&
&
(girls_waiting==0))
{
using=1;
V(S_mutex);
}
else
boys_waiting++;
P(S_boys);
}
(3)
voidboy_leaves_bathroom()
if(girls_waiting>
0)
girls_waiting--;
V(S_girls);
elseif(boys_waiting>
boys_waiting--;
V(S_boys);
using=0;
(4)
voidgirl_wants_to_use_bathroom()
if(using==0)
girls_waiting++;
P(S_girls);
(5)
voidgirl_leaves_bathroom()
6、
(1)FCFS算法:
周转时间:
P1:
52,P2:
68,P3:
136,P4:
164
平均周转时间:
105
(2)SJF算法:
96,P2:
16,P3:
164,P4:
44
80
(3)RR算法:
136,P2:
36,P3:
124
115
7、
(1)不可抢占的SJF算法:
执行顺序:
P1(0-14)P4(14-18)P3(18-25)P5(25-32)P2(32-44)
P1:
14;
P2:
44-3=41;
P3:
25-5=20;
P4:
18-7=11;
P5:
32-19=13
(14+41+20+11+13)/5=19.8
(2)可抢占的SJF算法:
P1、P3、P4、P3、P1、P5、P2
P1:
25-0=25;
P2:
44-3=41;
P3=16-5=11;
P4=11-7=4;
P5=32-19=13
(25+41+11+4+13)/5=18.8
(3)时间片轮转RR算法:
P1、P2、P1、P3、P4、P2、P1、P3、P5、P2、P1、P5
41P2:
39-3=36P3:
31-5=26;
P4:
20-7=13;
P5=44-19=25
(41+36+26+13+25)/5=28.2
8、
(1)不正确,可能导致死锁
例如,开始时缓冲区为空,消费者先运行,通过了P(S_Mutex),由于此时S_ProductNum为0,所以在P(S_ProductNum)处被阻塞,而生产者会在P(S_Mutex)处被阻塞,从而死锁。
再比如:
开始时缓冲区满了,生产者先运行,通过了P(S_Mutex),由于此时S_BufferNum为0,所以在P(S_BufferNum)处被阻塞,而消费者会在P(S_Mutex)处被阻塞,从而死锁。
(2)不正确,可能导致死锁
例如,假设现在缓冲区已经满了,然后生产者先运行,通过了P(S_Mutex),在P(S_BufferNUM)处被阻塞,然后消费者执行,在P(S_Mutex)处被阻塞,从而死锁。
(3)正确
缺点是降低了并发性,应该在离开临界区后立即释放互斥信号量,这样才能提高进程之间的并发性。
第3章死锁
一、选择题
D、B、C、D、C
竞争资源
CPU、内存
不对
互斥条件、请求和保持条件
环路
2个
死锁避免
剥夺资源、进程回退、撤消进程
三、应用题
令R1+R2+...+Rn=n+k0<
=k<
m
由于C1+C2+...+Cn+R1+R2+..+Rn<
n+m
所以C1+C2+...+Cn<
m-k
所以剩余的资源个数A=m-(C1+C2+...+Cn)>
k,即A>
=k+1
而对于每一个进程Pi,Ri<
=k+1,所以任何一个进程的资源请求都能够满足。
当N=1、2、3时都不会发生死锁的危险。
当N=3时,在最坏情形下,每个进程都需要4台磁带机,且假定每个进程都已经得到了3个资源,那么此时系统中还剩下1个可用资源,可以把该资源分配给任何一个进程,当该进程得到资源后,可以运行完毕,并释放所占用的所有4个资源,这样,剩余的2个进程都可以顺利地运行完毕。
(1)系统处于安全状态1分
当前剩余资源向量A=(2,1,1),调度顺序为:
P4、*、*、*或者
P3,*,*,*
(2)不能,如果分配的话,系统将处于不安全的状态。
如果给它的话,那么当前剩余资源向量A=(0,1,1),无法把它分配给任何一个线程。
请求矩阵变为
021
410
100
200
(1)该状态是一个安全状态
安全序列:
P1、P4、P5、P2、P3(或者P1P4P2P5P3或P1P4P2P3P5);
(2)不能把资源分配给它,否则的话会进入不安全的状态。
请求矩阵:
P1347
P2134
P3006
P4221
P5110
剩余向量(233)
(1)是,P4(437){P2,P3,P5}P1;
或者P5(547)然后任意顺序
(2)不能,资源不够
(3)能,顺序P4(437){P2,P3,P5}P1
请求矩阵:
P1347
P4020
剩余向量(032)
(4)不能,找不到安全序列。
证明:
假设出现了死锁,则必然存在一条环路,如下图所示:
Pm1->
Rn1->
Pm2->
Rn2->
Pm3->
Rn3->
...->
Pmk