操作系统习题2(含答案)(3)

2019-01-05 13:15

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死锁避免

对进程所发出的每一个申请资源命令加以动态地检查,并根据检查结果决定是否


操作系统习题2(含答案)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:离线作业-学前儿童卫生与保健形考册201702

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: