操作系统第五版费祥林-课后习题答案参考

内容发布更新时间 : 2025/4/2 14:25:47星期一 下面是文章的全部内容请认真阅读。

第三章 同步、通讯与死锁

1、 有三个并发进程:R 负责从输入设备读入信息块,M 负责对信息块加工处理;P 负责打印输出信息块。今提供; l )一个缓冲区,可放置K 个信息块; 2 )二个缓冲区,每个可放置K 个信息块;

试用信号量和P 、V 操作写出三个进程正确工作的流程。 答:

1 ) var B : array [ 0 , k-1 ] of item ; sread : semaPhore : = k ; smanage : semaPhore : = 0 ; swrite : semaphore : = 0 ; rptr : integer : = O ; mptr : integer : = O ; wptr :integer : = 0 ; x : item cobegin

process reader ; process manager ; process writer ; begin begin begin

LI : read a message intox ; L2 : P ( smanage ) ; L3 : P ( swnte ) ; P ( sread ) ; x:=B[mptr]; x:=B[swrite];

B[rptr]:=x; mptr:=(mptr+1) mod k; wptr:=(wptr+1) mod k; Rptr:=(rptr+1) mod k; manage the message in x; V(sread); V(smanage); B[mptr]:=x; print the message in x; Goto L1; V(swrite); goto L3; End; goto L2; end; End; coend

2 ) var A , B :array [ 0 , k -l ] of item ; sPut1 : semaphore:=k; SPut2: semaPhore:=k;

sget1 : semaPhore : = 0 ; sget2 : semaphore : = 0 ; put1 :integer :=O ; put2:integer : = 0 ; get1 :integer :=O ; get2 : integer : = O ; cobegin

process reader ; processn manager; process Writer ;

begin begin begin

Ll : read a message into x ; L2 : P ( sgetl ) ; L3 : P ( sgetZ ) ; P ( SPut1 ) ; x : = A [ get1] ; x : = B [get2];

A [put1]:=x ; get1 :(get1+1 ) mod k ; get2:=(get2 + l ) mod k ; Put1:=(put1+1) mod k; V(sput1); V(sput2);

V(sget1); manage the message into x; print the message in x; Goto L1; P(sput2); goto L3; Put2:=(put2+1) mod k; V(sget2); Goto L2; End; Coend

2 设有n 个进程共享一个互斥段,如果: ( 1 )每次只允许一个进程进入互斥段;

( 2 )每次最多允许m 个进程(m 簇n )同时进入互斥段。

试问:所采用的信号量初值是否相同?信号量值的变化范围如何? 答:所采用的互斥信号量初值不同。

1 )互斥信号量初值为1 ,变化范围为[-n+l , 1 ]。

当没有进程进入互斥段时

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi