操作系统谌卫军 王浩娟课后习题参考答案.docx

上传人:b****2 文档编号:2362888 上传时间:2022-10-29 格式:DOCX 页数:22 大小:26.38KB
下载 相关 举报
操作系统谌卫军 王浩娟课后习题参考答案.docx_第1页
第1页 / 共22页
操作系统谌卫军 王浩娟课后习题参考答案.docx_第2页
第2页 / 共22页
操作系统谌卫军 王浩娟课后习题参考答案.docx_第3页
第3页 / 共22页
操作系统谌卫军 王浩娟课后习题参考答案.docx_第4页
第4页 / 共22页
操作系统谌卫军 王浩娟课后习题参考答案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

操作系统谌卫军 王浩娟课后习题参考答案.docx

《操作系统谌卫军 王浩娟课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《操作系统谌卫军 王浩娟课后习题参考答案.docx(22页珍藏版)》请在冰豆网上搜索。

操作系统谌卫军 王浩娟课后习题参考答案.docx

操作系统谌卫军王浩娟课后习题参考答案

第1章概述

一、单项选择题

D、A、B、A、C、D、C、A、C、B

二、填空题

Windows、linux

用户态、内核态

PSW

中断

同步中断

系统调用

I/O设备管理、文件系统

实时性、可靠性

第2章进程管理

一、单项选择题

D、D、C、D、B、A、B、D、C、C

B、B、B、D、B、A、B、A

二、填空题

PCB

运行、就像、阻塞

4、5

时间片用完

进程管理、存储管理

PCB

进程

CPU寄存器的值、栈

竞争状态

运行、就绪

I/O繁忙

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

2、

(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%。

3、

(1)这种机制不能实现资源的互斥访问

考虑如下的情形:

(a)初始化的时候,flag数组的两个元素值均为FALSE

(b)线程0先执行,在执行while循环语句的时候,由于flag[1]=FALSE,所以顺利结束,不会被卡住。

假设这个时候来了一个时钟中断,打断它的运行;

(c)线程1去执行,在执行while循环语句的时候,由于flag[0]=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区;

(d)后来当线程0再执行的时候,也进入了临界区,这样就同时有两个线程在临界区

(2)可能会出现死锁

考虑如下的情形:

(a)初始化的时候,flag数组的两个元素值均为FALSE

(b)线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断,打断它的运行;

(c)线程1去执行,flag[1]=TRUE,在执行while循环语句的时候,由于flag[0]=TRUE,所以在这个地方被卡住了,直到时间片用完;

(d)线程0再执行的时候,由于flag[1]=TRUE,它也在while循环语句的地方被卡住了,这样,这两个线程都无法执行下去,从而死锁。

4、

(1)最后打印了3个字符'D'

(2)最少可能打印了0个字符'A',例如,P1连续执行了3次,然后P3连续执行了3次。

P2一次也没有执行。

(3)不可能,因为当打印出前面的“CABAB”的时候,信号量R的值等于1,此时,不可能连续打印两个D。

(4)可能。

相当于进程P2在打印完第二个A的时候被中断了。

5、

(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++;

V(S_mutex);

P(S_boys);

}

}

(3)

voidboy_leaves_bathroom()

{

P(S_mutex);

if(girls_waiting>0)

{

girls_waiting--;

V(S_girls);

}

elseif(boys_waiting>0)

{

boys_waiting--;

V(S_boys);

}

else

{

using=0;

}

V(S_mutex);

}

(4)

voidgirl_wants_to_use_bathroom()

{

P(S_mutex);

if(using==0)

{

using=1;

V(S_mutex);

}

else

{

girls_waiting++;

V(S_mutex);

P(S_girls);

}

}

(5)

voidgirl_leaves_bathroom()

{

P(S_mutex);

if(girls_waiting>0)

{

girls_waiting--;

V(S_girls);

}

elseif(boys_waiting>0)

{

boys_waiting--;

V(S_boys);

}

else

{

using=0;

}

V(S_mutex);

}

6、

(1)FCFS算法:

周转时间:

P1:

52,P2:

68,P3:

136,P4:

164

平均周转时间:

105

(2)SJF算法:

周转时间:

P1:

96,P2:

16,P3:

164,P4:

44

平均周转时间:

80

(3)RR算法:

周转时间:

P1:

136,P2:

36,P3:

164,P4:

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

P1:

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个

死锁避免

剥夺资源、进程回退、撤消进程

三、应用题

1、

令R1+R2+...+Rn=n+k0<=k

由于C1+C2+...+Cn+R1+R2+..+Rn

所以C1+C2+...+Cn

所以剩余的资源个数A=m-(C1+C2+...+Cn)>k,即A>=k+1

而对于每一个进程Pi,Ri<=k+1,所以任何一个进程的资源请求都能够满足。

2、

当N=1、2、3时都不会发生死锁的危险。

当N=3时,在最坏情形下,每个进程都需要4台磁带机,且假定每个进程都已经得到了3个资源,那么此时系统中还剩下1个可用资源,可以把该资源分配给任何一个进程,当该进程得到资源后,可以运行完毕,并释放所占用的所有4个资源,这样,剩余的2个进程都可以顺利地运行完毕。

3、

(1)系统处于安全状态1分

当前剩余资源向量A=(2,1,1),调度顺序为:

P4、*、*、*或者

P3,*,*,*

(2)不能,如果分配的话,系统将处于不安全的状态。

如果给它的话,那么当前剩余资源向量A=(0,1,1),无法把它分配给任何一个线程。

请求矩阵变为

021

410

100

200

4、

(1)该状态是一个安全状态

安全序列:

P1、P4、P5、P2、P3(或者P1P4P2P5P3或P1P4P2P3P5);

(2)不能把资源分配给它,否则的话会进入不安全的状态。

5、

请求矩阵:

P1347

P2134

P3006

P4221

P5110

剩余向量(233)

(1)是,P4(437){P2,P3,P5}P1;或者P5(547)然后任意顺序

(2)不能,资源不够

(3)能,顺序P4(437){P2,P3,P5}P1

请求矩阵:

P1347

P2134

P3006

P4020

P5110

剩余向量(032)

(4)不能,找不到安全序列。

6、

证明:

假设出现了死锁,则必然存在一条环路,如下图所示:

Pm1->Rn1->Pm2->Rn2->Pm3->Rn3->...->Pmk

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1