(1)如何定义信号量及初值;CHAPTER 3. 九阴真经之研究生题辑46
(2)在下列的程序中填上适当的P、V操作,以保证它们能正确并发工作: 进程A: 进程B: 进程C: 进程D: begin begin begin begin ... ... ... ...
reade F; reade F; reade F; reade F; ... ... ... ...
end end end end 解答:
(1)定义二个信号量S1、S2,初值均为1,即:S1=1,S2=1。其中进程A和C使用信号量S1,进程B和D使用信号量S2。
(2)从[1]到[8]分别为:P(S1) V(S1) P(S2) V(S2) P(S1) V(S1) P(S2) V(S2)
_思考(北大1996):
今有k个进程,它们的标号依次为1、2、?、k,如果允许它们同时读文件file,但必须满足条件:参加同时读文件的进程的标号之和需小于K,请使用:1)信号量与P、V操作,2)管程,编写出协调多进程读文件的程序。1):使用信号量与P、V操作
The P,V code Using Pascal
var waits,mutex:semaphore; numbersum:integer:=0; wait:=0;mutex:=1; cobegin
process readeri(var number:integer;) begin P(mutex);
L: if numbersum+number≥K then begin V(mutex); P(waits); goto L; end
else numbersum:=numbersum+number; V(mutex); Read file; P(mutex);
numbersub:=numbersum-number; V(waits); V(mutex); coend
十八真经之生产消费问题扩展(北大1994)
进程A1、A2,。。。An1通过m个缓冲区向进程B1、B2、¢ ¢ ¢ ,Bn2不断发送消
息。发送和接收工作遵循下列规则:
CHAPTER 3. 九阴真经之研究生题辑47
k 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小等于消息长 度
k 对每个消息,B1,B2,Bn2都须各接收一次,读入各自的数据区内 k m个缓冲区都满时,发送进程等待,没有可读消息时,接收进程等待。 试用P、V操作组织正确的发送和接收工作。 问题分析:
每个缓冲区只要写一次但要读n2次,因此,可以看成n2组缓冲区,每个发送者要同时写n2个缓冲区,而每个接收者只要读它自己的缓冲区。
The P,V code Using Pascal
Sin[n2]=m Sout[n2]=0; cobegin
procedure Aj: while (1) begin
for(i=1;i<=n2;i++) P(Sin[i]); P(mutex);
将数据放入缓冲区 V(mutex);
for(i=1;i<=n2;i++) V(Sout[2]); end
procedure Bi: while (1) begin
P(Sout[i]); P(mutex);
从缓冲区取数 V(mutex); V(Sin[i]); end coend
_思考(北大1994原题):
判别下列用P、V操作表示同步算法是否正确?如不正确,试说明理由,并修改成正确算法。
VAR buffer : ARRAY 0..N-1 OF T; In, out:0?N-1;
VAR S1,S2:Semaphore; S1:=0;S2:=N; In:=out:=0;
PROCEDURE A:
CHAPTER 3. 九阴真经之研究生题辑48
BEGIN REPEAT
生产数据m; P(S2);
Buffer(in):=m; In:=(in+1) MODN; V(S1); Forever END
PROCEDURE B: BEGIN REPEAT V(S2);
m;=buffer(out); 消费m;
Out :=(out+1)MODN; P(S1); forever END
分析:本题目是一个标准的生产者―消费者问题。题中所给的算法与标准算法不同,但考生不能因此就说这个算法不正确。考生须仔细分析试题中所给出的算法。在本题中,进程B在使用缓冲区前(读缓冲区)无需进行任何P操作,即进程B不会因任何原因被阻塞。这与题目中控制要求不相符。因此这个算法实现是错误的。此外,对缓冲区的访问也没有用互斥信号量进行控制。
十九真经之流程问题(北大1991)
问题描述:
设有8个程序prog1,prog2,?prog8。c2同它们在并发系统中执行时有如下图所示的制约关系, 使用P、V操作实现这些程序间的同步。 问题分析:
本题目是用来检查考生对使用P、V操作实现进程间同步的掌握情况。一般地,若要求进程B在进程A之后方可执行时,只需在进程P操作,而在进程A执行完成时对同一信CHAPTER 3. 九阴真经之研究生题辑49
号量进行V操作即可。本题要求列出8个进程(程序)的控制关系,使题目显得较为复杂。但当对进程间的同步理解透彻后,应不难写出对应的程序。解这一类问题还应注意的一点是,要看清图示的制约关系,不要漏掉或多处制约条件。
The P,V code Using Pascal
BEGIN
var s13, s14, s15, s23, s24, s25,s36, s48, s57, s68, s78:semaphore; s13 :=0;s14 :=0;s15 :=0;
s23 :=0;s24 :=0;s25 :=0; s36 :=0; s48 :=0; s57 :=0; s68 :=0; s78 :=0; COBEGIN
prog1: prog2: prog3: prog4: BEGIN BEGIN BEGIN BEGIN do work; do work; V(S13); P(S14); V(s13); V(s23); V(S23); P(S24); V(s14); v(s24); do work; do work; v(s15); v(s25); v(s36); v(s48); END END END END
prog5: prog6 prog7 prog8 BEGIN BEGIN BEGIN BEGIN P(s15); p(s36); P(s57); P(s48); P(s25); do work; Do work; P(s68); Do work; v(s68); V(S78); P(s78); V(57); END END do work; END END COEND END
_思考(北邮2000):
一组合作进程,执行顺序如图所示,请用P,V操作实现各个进程之间的同步关系。 | 此类问题相对易于处理,出题的样式多样,有些题目不只是让考生实现其过程有时会让考生更正其中的错误或者判断其是否有死锁的可能并更正之。
CHAPTER 3. 九阴真经之研究生题辑50
二十九阴真经之北航篇
1 智取考场
把学生和监考老师都看做进程,学生有N个人,教师1人,考场门口每次只能进出一个人,进考场原则是先来先进,当N个学生都进入考场后,教师才能发试卷。学生交卷后可以离开考场,教师要等收上来全部试卷并封装试卷后才能离开考场。
k 问共需设臵几个进程?
k 使用P,V操作解决上述问题中的同步和互斥关系.
The P,V code Using Pascal
var mutex,Beginready,Testready,Endready:semaphore; //mutex用以标示教室门这个临界资源 //beginready等待考生来全,标示考试开始 mutex:=1;
Beginready:=-(N-1); Testready:=0; Endready:=-(N-1); cobegin
Procedure Student Procedure Teacher P(mutex); P(mutex); Enter; Enter;
v(mutex); v(mutex); Waiting;
P(Beginready);
----------------------------------------------- p(Beginready); Hand Out; v(Beginready);
----------------------------------------------- p(Testready); v(Testready); 答题; 交卷; 离开;
v(Endready);
---------------------------------------------- p(Endready); 封卷离开;
2 读写者问题(2005)
我们将只读数据的进程称为“读者”进程,而写或者修改数据的进程称为“写者”进程,允许多个“读者”同时读数据,但不运行写者与其它读者或者写者进程同时访问数据。另CHAPTER 3. 九阴真经之研究生题辑51
外,要保证:一旦有写者等待,新到达的读者必须等待,直到该写者完成数据访问为止,用P,V 操作实现读者,写者同步。 问题分析:
k 互斥资源:读写者问题,隐含一个互斥资源-读写的问件 k 互斥锁:读文件时不能写,写文件时不能读文件
k 读进程:允许多个文件读,读进程时> 0时,锁定文件,读文件进程< 1时,解 锁;读进程数> 0时,说明读进程拥有锁 k 写进程:拥有锁时写文件
The P,V code Using Pascal
解答:
增加一个信号量w:=1,用以在写进程到达时封锁后续进程 cobegin
procedure Reader procedur Writer begin begin p(w); p(w);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库os例题(6)在线全文阅读。
相关推荐: