第三章进程管理课后习题答案.doc

上传人:99****p 文档编号:1392186 上传时间:2019-02-23 格式:DOC 页数:9 大小:86.50KB
下载 相关 举报
第三章进程管理课后习题答案.doc_第1页
第1页 / 共9页
第三章进程管理课后习题答案.doc_第2页
第2页 / 共9页
第三章进程管理课后习题答案.doc_第3页
第3页 / 共9页
第三章进程管理课后习题答案.doc_第4页
第4页 / 共9页
第三章进程管理课后习题答案.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、1进程管理习题1 现代操作系统中为什么要引入“进程”概念? 它与程序有什么区别?答:之所以要引入进程的概念,是因为在一些可以并发的程序段之间,存在着某种相互制约的关系,每个程序段的执行不仅要受到其它程序执行的制约,而且还要动态地依赖系统资源的分配情况,因此每个可以并发执行的程序段就会因外界条件的限制而不能运行,被迫处于阻塞状态。仅用程序的概念无法表示程序的走走停停以及程序运行过程中对资源的竞争现象,因此需要采用一种动态的概念描述并发程序这种走走停停的现象,这就产生了进程的概念。进程和程序的区别:(1) 进程是程序的执行过程,是动态的过程,属于一种动态概念。程序是一组有序静态指令和数据的集合,用

2、来指示处理机的操作,是一种静态概念。(2) 从结构上看,每个进程实体是由程序段和相应的数据段两部分构成,并且进程结构中还要包含 PCB,即进程控制块。(3) 一个进程可以涉及到一个或几个程序的执行;反之,同一程序可以对应多个进程,即同一个程序段可以在不同数据集合上运行,可以构成不同的进程。(4) 进程能真实地描述并发执行的过程,而程序仅仅是静态指令堆积的序列。(5) 进程有可创建其他进程的功能,而一般的程序不具有创建其它程序的功能。(6) 每一个程序都是在一个进程现场中运行的。2 叙述进程的并发性和制约性。答:并发性是进程的重要特征。即多道程序中多个进程同时向前推进的过程,没个进程总是与其它进

3、程并发地执行的。进程的制约性是指一个进程的运行受到另一进程的制约。比如有的进程可能正在等待另一进程的计算结果而无法运行,或者进程所需的资源被别的进程占有而无法运行。3 进程的含义是什么? 如何构造和描述进程?答:进程是程序的一次执行。进程由“进程控制块+程序+数据”构成,用进程控制块描述进程。4 有三个并发进程,R 负责从输入设备读入信息并传送给 M,M 将信息加工并传送给 P,P 将打印输出,写出下列条件下的并发程序。(1) 双缓冲区,每个区大小为 K。(2) 单缓冲区,其大小为 K。答: (1) 双缓冲区,每个区大小为 K,信号量初值如下:mutexR=mutexP=1;emptyR=em

4、ptyP=k;fullR= fullP=0;变量的初值如下:inR=outR=inP=outP=0;2用类 Pascal 编写程序如下:var mutexR,mutexP,emptyR,fullR,emptyP,fullP: semaphere;inR,outR,inP,outP: integer;buffer: array 0.k-1 of item;bufferP: array 0.k-1 of item;procedure R beginwhile true dobegin输入数据 data1;P (emptyR);P (mutexR);bufferR(inR):=data1;inR:=

5、(inR+1) mod (k);V(mutexR);V(fullR);endend;procedure M beginwhile true do beginP(fullR);P(mutexR);data2:=bufferR(outR);outR:=(outR+1)mod (k);V(mutexR);V(emptyR);对 data2 进行加工;P(emptyP);P(mutexP);bufferP(inP):=data2;inP:=(inP+1)mod (k);V(mutexP);V(fullP);endend;procedure P:beginwhile true do beginP(ful

6、lP);P(mutexP)3data3:=bufferP(outP);outP:=(outP+1)mod(k);V(mutexP);V(emptyP);打印 data3;end end;beginseminitinal(mutexR.v,1;mutexP.v,1;emptyR.v,k;fullR.v,0;emptyP.v,k;fullP.v,0);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.(2)单缓冲区,大小为 kvarempty,full,ok,mutex : semaphere;inR,outR,inP,outP : integ

7、er;buffer : array 0.k-1 of item;procedure R:beginwhile true dobegin输入数据 data1;P(empty);P(mutex);buffer(inR):=data1;inR:=(inR+1) mod (k);V(mutex);V(full)endend;procedure M:beginwhile ture do beginP(full);P(mutex);data2:=buffer(outR);outR:=(outR+1) mod (k);4V(mutex);对 data2 加工;P(mutex);buffer(inP):=da

8、ta2;inP:=(inP+1)mod (k);V(mutex);V(ok);endend;proedure P:begin while ture dobeginP(ok);P(mutex);data3:=buffer(outP);outP:=(outP+1) mod(k);V(mutex);V(empty);打印 data3;end;endbeginseminitial(empty.v,k;full.v,0;ok.v,0;mutex.v,1);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.5 在生产者与消费者问题的算法中,交换两个 V

9、 操作的次序会有什么结果? 交换两 P操作的次序呢? 说明理由。答:交换两 P 操作的次序有可能造成死锁。例如,当无空缓冲区时,如果此时生产者先做互斥操作,即:P(mutex),然后才做同步操作 P(empty),由于此时 empty=-1 造成生产者被阻塞。当消费者执行到互斥操作 P(mutex)时,由于生产者已执行过 P(mutex)并未作释放,所以此时 mutex=-1,造成消费者也被阻塞,生产者等消费者释放空缓冲区,而消费者则等待生产者释放临界资源的使用权,所以两个进程都无法向前推进而造成死锁。交换两个 V 操作的次序不会发生死锁。6 设有三个进程 A、B、C,其中 A 与 B 构成一

10、对生产者与消费者(A 为生产者,B 为消费者) ,共享一个由 n 个缓冲块组成的缓冲池;B 与 C 也构成一对生产者与消费者(此时 B为生产者,C 为消费者) ,共享另一个由 m 个缓冲块组成的缓冲池。用 P、V 操作描述它们之间的同步关系。5答:var mutexA,emptyA,fullA,mutexC,emptyC,fullC : semaphere;i,j,a,b : integer;bufferA : array 0.n-1 of itembufferC : array 0.m-1 of item;procedure produceA: 生产者进程 Abeginwhile ture

11、do begin Produce next product;P(emptyA);P(mutexA);bufferA(i) :=products;i:=(i+1) mod(n) ;V(mutexA);V(fullA)endendprocedure consumer_procedurerB: 消费者和生产者进程 Bbeginwhile ture dobeginP(fullA);P(mutexA);Goods:=buffer(j);j:=(j+1)mod(n);V(mutexA);V(emptyA);Consume goods and Produce next product C;P(emptyC)

12、;P(mutexC);BufferC(a):=product C;a:=(a+1) mod(m);V(mutexC);V(fullC)endend;procedure consumerC ; 消费者 C 进程begin while ture do begin P(fullC);P(mutexC);6Goods:=bufferC(b);b:=(b+1) mod(m);V(mutexC);V(emptyC);Consume product;endend;beginSeminitsal(mutexA.v,1;mutexC.v,1; emptyA.v,n;emptyC.v,m;fullA.V,0;fu

13、llC.V,0);i:=0;j:=0;a:=0;b:=0;cobegin produce Aconsumer_procedurerB;consumerCcoendend.7 有一阅览室,共有 100 个座位。读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用 P、V 操作描述读者进程的同步结构。答:varmutex : semaphere; 信号量,用于互斥full : semaphere; 信号量,用于同步table : array 0.n-1 of item; 登记表procedure reader; 读者进程beginP(ful

14、l);P(mutex);Register_name(table);V(mutex);Reading;P(mutex);Delet_name(table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100); 初始化cobeginreader;reader;.7coendend.8引入线程的目的是什么?答:引入线程的目的是提高程序执行的并行度。9 引入管程的目的是什么?答:引入管程的目的把分散的临界区集中起来管理,为每个可共享的资源设立一个专门的机构来统一管理各进程对该共享资源的访问。这样使互斥操作更安全,既便于系统管理共享资源,

15、又能保证互斥访问。10 用管程实现读者与写者关系。管程部分描述如下:monitor rw;condition wrt;var readcount: integer;procedure entry read _start( );begin readcount:=readcount+1;end;procedure entry read_finish( );beginreadcount:=readcount-1;if readcount=0 then singal(wrt)end;procedure entry write( ); beginif readcount0 then wait(wrt);

16、perform writing;endbeginreadcount:= 0endend;主程序部分:procedure writter:beginrepeatrw.write( );until false;endprocedure reader:beginrepeat rw.read_start( );perform reading;8rw.read_finish( );until false;endcobeginreader;writter;coend.11 何谓进程通信?答: 进程通信是指进程之间的信息交换。12 消息通信机制中应设置哪些基本通信原语?答:应设置 send(A) (发送消息

17、)原语,A 是原语的参数,表示发送区的起始地址。receive(B) (接受消息)原语,B 是接受进程提供的接收区起始地址。13 何谓死锁?举例说明之。答:两个以上的进程相互等待一个永远不可能发生的条件而无法向前推进,这种僵局称为死锁。例如:如图所示的单行道上的交通阻塞。14. 什么是死锁?产生死锁的原因和必要条件是什么?解:所谓死锁是指在一个进程集合中的所有进程都在等待只能由该集合中的其它一个进程才能引发的事件而无限期地僵持下去的局面。产生死锁的原因可以归结为两点:1)竞争资源, 2)各进程之间的推进顺序不当。产生死锁的必要条件有四个:1)互斥条件, 2)不剥夺条件, 3)请求和保持条件,

18、4)环路条件。15. 某系统中有 A、B、C 三类资源,A 资源的数量为 17,B 资源的数量为 5,C 资源的数量为 20。某时刻系统中有 5 个进程。在 T0 时刻系统状态如表所示。进程 最大资源需求量A B C 已分配资源数量A B C P0 5 5 9 2 1 2 P1 5 3 6 4 0 2 P2 4 0 11 4 0 5 P3 4 2 5 2 0 4 P4 4 2 4 3 1 4 9A B C剩余资源数 2 3 3系统采用银行家算法实施死锁避免策略。(1) T0 时刻是否为安全状态?若是,请给出安全序列。(2) 在 T0 时刻若进程 P2 请求资源(0,3,4),是否能实施资源分配?为什么?(3) 在(2)的基础上,若进程 P4 请求资源(2,0,1) ,是否能实施资源分配?为什么?(4) 在(3)的基础上,若进程 P1 请求资源(0,2,0) ,是否能实施资源分配?为什么?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。