南京邮电大学操作系统课后习题答案.doc 下载本文

例如:进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等待(2分),这是循环等待。

(或进程在等待新源时均不释放已占资源) (2)可有几种答案:

A.采用静态分配 由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。

或B.采用按序分配 不会出现循环等待资源现象。

或C.采用银行家算法 因为在分配时,保证了系统处于安全状态。

6、某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:

(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

(2)根据所定义的信号量,把应执行的PV操作填入适当,以保证进程能够正确地并发执行。

COBEGIN PROCESS PI(I=1,2,……) begin ; 进入售票厅; 购票; 退出; end; COEND

(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。 答:

.(1)定义一信号量S,初始值为20。 意义:

S>0 S的值表示可继续进入售 票厅的人数 S=0 表示售票厅中已有20名顾 客(购票者) S<0 |S|的值为等待进入售票 厅的人数

(2)P(S)

9

进入售票厅;

购票; 退出;

V(S)

(3)S的最大值为20 S的最小值为20-n

注:信号量的符号可不同(如写成t),但使用时应一致(即上述的s全应改成t)。 7、假定系统有三个并发进程read, move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。

请用PV操作,写出它们的并发程序。 答:

begin SR,SM1,SM2,SP:semaphore; B1,B2:record;

SR:=1;SM1:=0;SM2:=1;SP:=0 cobegin process read X:record;

begin R: (接收来自输入设备上一个记录) X:=接收的一个记录; P(SR); B1:=X; V(SM1); goto R; end; Process move Y:record; begin

10

M:P(SM1); Y:=B1; V(SR) 加工 Y P(SM2); B2:=Y; V(SP); goto M; end; Process print Z:record; begin P:P(SP); Z:=B2; V(SM2) 打印Z goto P; end; coend; end;

8、某系统中有10台打印机,有三个进程P1,P2,P3分别需要8台,7台和4台。若P1,P2,P3已申请到4台,2台和2台。试问:按银行家算法能安全分配吗?请说明分配过程。 答:

系统能为进程P3分配二台打印机。因为尽管此时10台打印机已分配给进程P1 4台,P22台和P34台,全部分配完,但P3已分配到所需要的全部4台打印机,它不会对打印机再提出申请,所以它能顺利运行下去,能释放占用的4台打印机,使进程P1,P2均可能获得乘余的要求4台和5台,按银行家算法是安全的。

9、有两个用户进程A和B,在运行过程中都要使用系统中的一台打印机输出计算结果。 (1) 试说明A、B两进程之间存在什么样的制约关系?

(2) 为保证这两个进程能正确地打印出各自的结果,请用信号量和P、V操作写出各自

11

的有关申请、使用打印机的代码。要求给出信号量的含义和初值。 答:

(1) A、B两进程之间存在互斥的制约关系。因为打印机属于临界资源,必须一个进程

使用完之后另一个进程才能使用。 (2)mutex:用于互斥的信号量,初值为1。

进程A 进程B ... ... ... ... P(mutex) P(mutex) 申请打印机 申请打印机 使用打印机 使用打印机 V(mutex) V(mutex) 试以生产者—消费者问题说明进程同步问题的实质。 答:

一个生产者,一个消费者和一个产品之间关系是典型的进程同步问题。设信号量S为仓库内产品,P- V操作配对进行缺一不可。生产者进程将产品放人仓库后通知消费者可用;消费者进程在得知仓库有产品时取走,然后告诉生产者可继续生产。 10、请描述产生死锁的四个必要条件。 答:

互斥使用(资源独占)一个资源每次只能给一个进程使用

不可强占(不可剥夺)资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放

请求和保持(部分分配,占有申请)-一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)

循环等待-存在一个进程等待队列 {P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路 11、两个并发执行的进程A和B的程序如下:

进程A Repeat N=N+5; Until false; 进程B

12