计算机操作系统(习题集)第二章 答案 联系客服

发布时间 : 星期日 文章计算机操作系统(习题集)第二章 答案更新完毕开始阅读2b1f7804de80d4d8d15a4f53

parbegin barber:begin

p(customers); p(s);

V(barber);{空出理发师椅子} 等待的顾客坐到理发椅子上;

waiting:=waiting-1;{等待的顾客减少一个,空椅子增加一个}

v(s); 理发。。。; end customers:begin p(s);

if(waiting>=chairs) then v(s);{没有空椅子,顾客就离开} else begin

waiting:= waiting+1;{等待的顾客增加一个,空椅子减少一

个}

v(customers); v(s);

坐在空椅子上等待; p(barber);{申请理发椅子}

end

end parend end

分析:本题属于生产者消费者问题。其特点是多个生产者(顾客),并且生产者数目受限(n把空椅子),消费者只有一个(理发师)。消费者缓冲区和生产者缓冲区不共用,且数目不一样。值得注意的是waiting的改变必须在p(s)和v(s)中进行,并且由于消费者缓冲区小于生产者缓冲区,因此消费者缓冲区状态应时刻被关注,本题中即p(barber)的作用。

4.一批数据n个,每个数据经计算进程计算后存入缓冲区,缓冲区有数据时,打印进程从缓冲区中取出数据进行打印,用pv操作描述计算和打印进程的同步算法。

分析:本题是典型的生产者-消费者问题。

5.某火车订票系统,提供给多个用户同时共享一个订票数据库。规定多个用户允许同时查询该数据库,有查询者时,用户不能订票;有用户订票而需要更新数据库时,不可以有其它用户使用数据库。请用PV操作描述查询和订票者的同步执行程序。 分析:本题是典型的读者-写者问题。

下面改一下要求:规定多个用户允许同时查询该数据库,当有定票者到达时,不允许后来者查询数据库,且多个订票者可以互斥使用数据库。

Var rmutex,wmutex,r,w:=semaphore:=1,1,1,1; Readcount:integer:=0; Writecount;integer:=0; Begin Parbegin Inquirer:begin Repeat P(r); P(rmutex);

If readcount:=0 then p(w); Readcount:=readcount+1;

V(rmutex);

V(r);

查询数据库; p(rmutex);

readcount:=readcount-1; if readcount=0 then v(w); v(rmutex); until false; end booker:begin Repeat

P(wmutex);

If writecount:=0 then p(r); writecount:=writecount+1;

V(wmutex);

p(w);

使用数据库,订票; v(w); p(wmutex);

if writecount =0 then v(r); writecount:=writecount-1; v(wmutex); until false; end parend end

6.试从多个方面比较线程和进程 从四个方面:

(1) 调度:在传统的操作系统中,拥有资源的基本单位和独立调

度、分派的基本单位都是进程。而在引入线程的os中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位。使传统进程的两个属性分开,线程便能轻装运行,从而可显著地提高系统的并发程度。在同一进程中,线程的切换