操作系统教程第5版部分习题(含答案)答案 联系客服

发布时间 : 星期三 文章操作系统教程第5版部分习题(含答案)答案更新完毕开始阅读9c4acc9b0812a21614791711cc7931b765ce7b82

(1) 二值信号量; (2) 一般信号量。

15.何谓管程?它有哪些属性?

管程是由局部于自己的若干公共变量及其声明和所有访问这些公共变量的过程所组成的软件模块,它提供一种互斥机制,进程可以互斥地调用管程的过程。

(1) 共享性; (2) 安全性; (3) 互斥性。 25.试述产生死锁的必要条件、死锁产生的原因及预防死锁的方法。 (1) 互斥条件; (2) 占有和等待条件; (3) 不剥夺条件; (4) 循环等待条件。

进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对某些资源的使用未加限制等,不仅与系统拥有的资源数量有关,而且与资

源分配策略、进程对资源的使用要求以及并发进程的推进顺序有关。

(1) 破坏条件1(互斥条件); (2) 破坏条件2(占有和等待条件); (3) 破坏条件3(不剥夺条件); (4) 破坏条件4(循环等待条件)。 二、 2、 答:不同

(1):初值为1,范围为[-n+1,1];(2):初值为m,范围为[-n+m,m]。 5、答:1) 使用信号量和P、V操作: var name: array[1..100] of A; A=record number:integer; name:string; end

for i:=1 to 100 do {A[i].number:=i; A[i].name:=null;} mutex,seatcount:semaphore; i:integer;mutex:=1;seatcount:=100; cobegin {

process readeri(var readername:string)(i=1,2,…) {

P(seatcount); P(mutex);

for i:=1 to 100 do i++

if A[i].name=null then A[i].name:=readername; reader get the seat number =i; /*A[i].number

V(mutex)

进入阅览室,座位号i,座下读书;

P(mutex);

A[i] name:=null; V(mutex); V(seatcount); 离开阅览室; } } coend.

2) 使用管程操作: TYPE readbook=monitor VAR R:condition; Interface Module IM; i,seatcount:integer; name:array[1..100] of string; DEFINE readercome,readerleave; USE check,wait,signal,release; procedure readercome(readername) begin check(IM);

if seatcount≥100 wait(R,IM) seatcount:=seatcount+1; for i=1 to 100 do i++

if name[i]==null then name[i]:=readername; get the seat number=i;

release(IM); end

procedure readerleave(readername) begin check(IM); seatcount--; for i=1 to 100 do i++

if name[i]==readername then name[i]:=null; release(IM); end begin seatcount:=100;name:=null; end cobegin

process readeri(i=1,2.…) begin

readercome(readername); read the book;

readerleave(readername);