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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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)信号量的定义:

int boys_waiting = 0, girls_waiting = 0, using = 0;

Semaphore S_mutex = 1, S_boys = 0, S_girls = 0;

(2)

void boy_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)

void boy_leaves_bathroom()

{

P(S_mutex);

if(girls_waiting > 0)

{

girls_waiting --;

V(S_girls);

}

else if(boys_waiting > 0)

{

boys_waiting --;

V(S_boys);

相关文档
最新文档