操作系统(宗大华版)课后习题答案

发布时间 : 星期三 文章操作系统(宗大华版)课后习题答案更新完毕开始阅读

一、填空?

1.信号量的物理意义是当信号量值大于零时表示 可分配资源的个数 ;当信号量值小于零时,其绝对值为 等待使用该资源的进程的个数 。

2.所谓临界区是指进程程序中 需要互斥执行的程序段 。

3.用P、V操作管理临界区时,一个进程在进入临界区前应对信号量执行 P 操作,退出临界区时应对信号量执行 V 操作。

4.有m个进程共享一个临界资源。若使用信号量机制实现对临界资源的互斥访问,则该信号量取值最大为 1 ,最小为 ?(m?1)。

注意,无论有多少个进程,只要它们需要互斥访问同一个临界资源,那么管理该临界资源的信号量初值就是1。当有一个进程进入临界区时,信号量的值就变为0。随后再想进入的进程只能等待。最多的情况是让一个进程进入后,其余(m?1)个进程都在等待进入。于是这时信号量取到最小值:?(m?1)。

5.对信号量S的P操作原语中,使进程进入相应信号量队列等待的条件是Vs<0 。 6.死锁是指系统中多个 进程 无休止地等待永远不会发生的事件出现。 7.产生死锁的4个必要条件是互斥、非剥夺、部分分配和 循环等待 。

8.在银行家算法中,如果一个进程对资源提出的请求将会导致系统从 安全 的状态进入到 不安全 的状态时,就暂时拒绝这一请求。

9.信箱在逻辑上被分为 信箱头 和 信箱体 两部分。

10.在操作系统中进程间的通信可以分为 低级 通信与 高级 通信两种。

二、选择?

1.P、V操作是 A 。

A.两条低级进程通信原语 C.两条系统调用命令

2.进程的并发执行是指若干个进程 B 。

B.两条高级进程通信原语 D.两条特权指令

A.共享系统资源 B.在执行的时间上是重叠的 C.顺序执行 D.相互制约

3.若信号量S初值为2,当前值为?1,则表示有 B 个进程在与S相关的队列上等待。 A.0 B.1 C.2

4.用P、V操作管理相关进程的临界区时,信号量的初值应定义为 C 。

D.3

29

A.?1 B.0 C.1

5.用V操作唤醒一个等待进程时,被唤醒进程的状态变为 B 。

D.随意

A.等待 B.就绪 C.运行 D.完成

6.若两个并发进程相关临界区的互斥信号量MUTEX现在取值为0,则正确的描述应该是 B 。 A.没有进程进入临界区 B.有一个进程进入临界区

C.有一个进程进入临界区,另一个在等待进入临界区 D.不定

7.在系统中采用按序分配资源的策略,将破坏产生死锁的 D 条件。

A.互斥 B.占有并等待 C.不可抢夺 D.循环等待

8.某系统中有3个并发进程,都需要4个同类资源。试问该系统不会产生死锁的最少资源总数应

该是 B 。

A.9 B.10

9.银行家算法是一种 A 算法。

C.11

D.12

A.死锁避免 B.死锁防止 C.死锁检测

10.信箱通信是进程间的一种 B 通信方式。

A.直接 三、问答?

B.间接

D.死锁解除

C.低级 D.信号量

1.试说出图6-1(即教材中第2章的图2-2)所给出的监视程序A和计数程序B之间体现出一种什么关系,是“互斥”还是“同步”?为什么?

程序A: while(1) { A1: 收到监视器的信号; A2: COUNT=COUNT+1; } 图6-1 对两个程序的描述

程序B: while(1) { B1: 延迟半小时; B2: 打印COUNT的值; B3:COUNT=0; }

答:图6-1(即教材中第2章的图2-2)所给出的监视程序A和计数程序B之间体现出的是一种互斥关系,因为在监视程序A里,要对共享变量COUNT进行操作:

COUNT=COUNT+1;

在计数程序B里要对共享变量COUNT进行操作:

打印COUNT的值; COUNT=0;

30

这两段程序是不能交叉进行的,不然就会出现与时间有关的错误。

2.模仿教材中的图6-4,画出COPY和PUT之间的直接依赖关系。然后把两个图汇集在一起,体会它们三者之间正确的同步关系。再模仿教材中的图6-8,能用信号量及P、V操作来正确处理GET、COPY和PUT三者之间的协同工作关系吗?

答:图6-2给出了GET、COPY和PUT三者间正确的同步关系:GET在向COPY发“可以拷贝”的消息后,要等待COPY发来“拷贝结束”的消息。因为这个消息意味着输入缓冲区R已经被COPY腾空,GET可以再次向里面存放从文件F里取出的记录了;COPY在等到GET发来的“可以拷贝”的消息后,才能够把输入缓冲区R里的记录拷贝到输出缓冲区T中。完成这个动作后,表示输入缓冲区R已经被COPY腾空,因此应该立即向GET发消息,告诉它输入缓冲区R又可以使用了。随后,向PUT发送“可以打印”的消息,等待PUT发来“打印结束”的消息;PUT在等到COPY发来“可以打印”的消息后,才能够从输出缓冲区T里取出记录打印。打印完毕后,向COPY发送“打印完毕”的消息。这个消息意味着输出缓冲区T已经被PUT腾空,COPY又可以再次去等待GET发送的“可以拷贝”的消息,从输入缓冲区R里取出记录存入输出缓冲区T了。

1. 从文件F取出一个记 录送至输入缓冲区R 2. 向COPY发送“可以 拷贝”的消息 3. 等待COPY发来“拷 贝结束”的消息 GET 1. 等待GET发送“可以 拷贝”的消息 2. 将缓冲区R里的记录 拷贝到缓冲区T里 3. 向GET发送“拷贝结 束”的消息 4. 向PUT发送“可以打 印”的消息 5. 等待PUT发送“打印 完毕”的消息 1. 等待COPY发送“可 以打印”的消息 2. 将缓冲区T里的数据 打印输出 3. 向COPY发送“打印 完毕”的消息 PUT COPY 图6-2 GET、COPY和PUT三者间的工作关系

于是,GET、COPY和PUT三者间有4个同步问题:在GET的标号为3的地方是一个同步点;在COPY的标号为1和5的地方是两个同步点;在PUT的标号为1的地方是一个同步点。因此,共要设置4个同步信号量:

S1——控制COPY与GET取得同步,初值=0; S2——控制GET与COPY取得同步,初值=0; S3——控制PUT与COPY取得同步,初值=0;

31

S4——控制COPY与PUT取得同步,初值=0。

图6-3表述了用信号量及P、V操作来正确处理GET、COPY和PUT三者之间的协同工作关系。

1. 从文件F取出一个记 录送至输入缓冲区R 2. 2. V(S1) 3. P(S2) 4. V(S3) 5. P(S4) 将缓冲区R里的记录 拷贝到缓冲区T里 3. V(S2) 2. 将缓冲区T里的数据 打印输出 3. V(S4) 1. P(S3) GET 1. P(S1) PUT COPY 图6-3 用P、V操作保证GET、COPY和PUT三者的正确协作

3.在图6-4(a)(即教材中图6-8)GET里,是先安放V(S1),再安放P(S2)的。能把它们两个的安放顺序颠倒过来变成图6-4(b)吗?为什么?

1. 从文件F取出一个记 录送至输入缓冲区R 2. 2. V(S1) 3. P(S2) 将缓冲区R里的记录 拷贝到缓冲区T里 3. V(S2) 2. P(S2) 3. V(S1) GET 1. P(S1) COPY 1. 从文件F取出一个记 录送至输入缓冲区R 2. 将缓冲区R里的记录 拷贝到缓冲区T里 3. V(S2) GET 1. P(S1) COPY (a) (b) 图6-4 安放V(S1)和P(S2)的两种方法

答:图6-4(b)里是先安放P(S2), 再安放V(S1)。这种安放顺序是不行的。因为安放P(S2),表示要在此等待COPY发来的消息(即希望COPY执行V(S2)操作),在接到了COPY的消息后,才执行V(S1)(即向COPY发消息)。但是,根据COPY的安排,不接到GET发来的消息(即执行P(S1)操作),是不会向COPY发消息的(即执行V(S2)操作)。于是,GET和COPY就陷入了循环等待:GET等待COPY发消息,COPY等待GET发消息。产生两个死锁了。

4.进程A和B共享一个变量,因此在各自的程序里都有自己的临界区。现在进程A在临界区里。试问进程A的执行能够被别的进程打断吗?能够被进程B打断吗(这里,“打断”的含义是调度新进程运行,使进程A暂停执行)?

32

联系合同范文客服:xxxxx#qq.com(#替换为@)