if (rc==1) P(Sw) V(Src)
V(S) (2’) 查询库当中的信息 P(Src)
rc=rc-1;
if (rc==0) V(Sw) V(Src) (2’)
写者进程 (`2’) P(S) P(Sw)
更新数据库内容 V(Sw) V(S)
8某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:
(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,把应执行的PV操作填入下述空格中,以保证进程能够正确地并发执行。
COBEGIN PROCESS PI(I=1,2,??) begin
进入售票厅; 购票;
退出; end COEND
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
答:(1)定义一信号量S,初始值为20。 (1’) 意义:(`3’=1’*3)
S>0 S的值表示可继续进入售票厅的人数 S=0 表示售票厅中已有20名顾客(购票者) S<0 |S|的值为等待进入售票厅的人数 (2)上空格为P(S) (2’) ;下空格为V(S) (2’)
(3)S的最大值为20 (1’ );S的最小值为20-n (1’ )
9在公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开门关门,当售票员关好车门后,驾驶员才能开车行使。试用P/V操作
实现司机与售票员间的同步。
解答:semaphore mutex1=0,mutex2=0; (2’) main(){
cobegin driver() busman()
coend
} (2’) driver(){
while(true){
p(mutex1) 启动公共汽车 正常开车 到站停车 v(mutex2) }
} (3’) busman(){
while(true){
关车门 v(mutex1) 售票
p(mutex2) 开车门 上下乘客 }
} (3’)
10并发问题:设有两个优先级相同的进程p1, p2如下。令信号s1, s2的初值为0,已知z=2,试问p1, p2并发运行结束后x=? y=? z=? 进程p1 进程p2 y := 1 x := 1 y := y+2 x := x+1 v(s1) p(s1) z := y+1 x := x+y p(s2) v(s2) y := z+y z := x+z 解答:(分析过程略 2’)从结果来看,两个进程无论谁先谁后,结果都是一样的。(2’)
x = 5; y = 12; z = 9 (6’)
11 试用信号量机制来描述下述前趋图
M1
M5 M2 M4 M3 M6 M8 M7
解答:首先定义信号量S12,S13,S14,S26,S36,S47,S57,S38,S78的初值都为0,分别表示相对应的进程是否完成:(2’) COBEGIN (`8’=1’*8) Process M1: begin
V(S12) V(S13) V(S14) end
Process M2: begin
P(S12) V(26) end
Process M3: begin
P(S13) V(S36) V(S38) end
Process M4: begin
P(S14) V(S47) end
Process M5: begin
V(S57) end
Process M6: begin
P(S26) P(S36) end
Process M7: begin
P(S47) P(S57)
P(S78) end
Process M8: begin
P(S38) P(S78) end COEND 12
试用信号量机制来描述下述前趋图
M1 解答:首先定义
M2 M3 M5 信号量
S12,S13,S24,S25,S56,S46,S36的初值都为0,分别表示相对应的进程是否完成(2’):
COBEGIN (`6’=1’*6)
M4 M6 Process M1:
begin V(S12) V(S13) end
Process M2: begin
P(S12) V(24) V(25) end
Process M3: begin
P(S13) V(S36) end
Process M4: begin
P(S14) V(S46) end
Process M5: begin
P(S25)
V(S56)
end
Process M6: begin
P(S36)
P(S46)
P(S56) end COEND
13设系统有三个并发进程R,C,P,共享一个能存放n个数据的环形缓冲区buf。进程R负责从输入设备上读数据,每读一个后把它存放在缓冲区buf的一个单元中;进程C负责从缓冲区读数据并进行处理,之后将处理结果再送入缓冲区的一个单元中;进程P负责从缓冲区读进程C处理的结果并打印。请用P、V操作为三进程的正确执行写出同步算法。 解答:解决同步问题需设一个互斥信号量mux,用于控制三个进程互斥使用缓冲区,初值为1;再设三个同步信号量,用于控制对缓冲区的空闲数量和不同数据个数的记录。S0表示缓冲区空闲个数,初值为n;S1表示缓冲区中输入数据的个数,初值为0;S2表示缓冲区中输出数据的个数,初值为0。(4’) 算法描述如下:(`6’=2’*3)
进程R 进程C 进程P L1: L2: L3:
P(S0) P(S1) P(S2) P(mux) P(mux) P(mux)
读一个数据 从缓冲区中取一个 从缓冲区中读 送缓冲区 数据处理后放回去 输出数据 V(mux) V(mux) V(mux)
V(S1) V(S2) V(S0) 打印 gotoL1: gotoL2: gotoL3:
第三章 死锁
名词解释 1死锁
是指在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件而无限期地僵持下去的局面。
2饥饿
在系统中,每个资源占有者都在有限时间内释放它所占有的资源,但资源中存在某些申请者由于某种原因却永远得不到资源的一种错误现象。
3死锁防止
要求进程申请资源时遵循某种协议,从而打破产生死锁的四个必要条件中的一个或几个,保证系统不会进入死锁状态。
4死锁避免
对进程所发出的每一个申请资源命令加以动态地检查,并根据检查结果决定是否
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统习题2(含答案)(3)在线全文阅读。
相关推荐: