os例题(3)

2019-09-01 22:22

Procedure father: begin

while(TRUE) begin

CHAPTER 3. 九阴真经之研究生题辑30

P(S);

将水果放入盘中; if(放入的是桔子) V(So); else V(Sa); end end

Procedure son: begin

while(TRUE) begin P(So);

从盘中取出桔子; V(S); 吃桔子; end end

Procedure daughter: begin

while(TRUE) begin P(Sa);

从盘中取出苹果; V(S); 吃苹果; end end

十真经之安全岛问题(南开1997)

在南开大学至天津大学间有一条弯曲的路,每次只允许一辆自行车通过,但中间有小的安全岛M(同时允许两辆车),可供两辆车在已进入两端小车错车,设计算法并使用P,V实现。 问题分析:

由于安全岛M仅仅允许两辆车停留,本应该作为临界资源而要设臵信号量, 但根据题意,任意时刻进入安全岛的车不会超过两辆(两个方向最多各有一辆), 因此,不需要为M设臵信号量,在路口s和路口t都需要设臵信号量,以控制来自两个方向的车对路口资CHAPTER 3. 九阴真经之研究生题辑31

源的争夺.这两个信号量的初值都是1.此外,由于从s到t的一段路只允许一辆车通

过,所以还需要设臵另外的信号量用于控制,由于M的存在,可以为两端的小路分别设臵一个互斥信号量.

The P,V code Using Pascal

var T2N, N2T,L,M,K:semaphore; T2N:=1; N2T:=1; L:=1; K:=1; M:=2; cobegin

Procedure Bike T2N begin p(T2N); p(L); go T to L; p(M); go into M; V(L); P(k); go K to s; V(M); V(k); V(T2N); end

Procedure Bike N2T begin P(N2T); p(k); go v to k; p(M); go into M; V(k); P(L); go L to T; V(M); V(L); V(N2T); end coend

CHAPTER 3. 九阴真经之研究生题辑32

十一真经之珍珑棋局问题

问题描述:

在一个盒子里,混装了数量相等的黑白围棋子〃现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1 和P2 ,其中P1 拣白子;P2 拣黑子。规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣.试写出两进程P1 和P2 能并发正确执行的程序。 问题分析:

大家熟悉了生产-消费问题(PC),这个问题很简单。题目较为新颖,但是本质非常简单即:生产-消费问题的简化或者说是两个进程的简单同步问题。答案如下:

The P,V code Using Pascal

设信号量s1 和s2 分别表示可拣白子和黑子; 不失一般性,若令先拣白子。 var S1 , S2 : semaphore; S1 : = l; S2 :=0; cobegin

process P1 process P2 begin begin repeat repeat P(S1); p(S2);

pick The white; pick the black; V(S2); v(s1);

until false ; until false; end end coend

十二真经之公交车问题(哈尔滨工业大学2000)

问题描述:

设公共汽车上,司机和售票员的活动分别如下:司机的活动:启动车辆:正常行车;到站停车。售票员的活动:关车门;售票;开车门。在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P 、V 操作实现它们的同步。 问题分析:

CHAPTER 3. 九阴真经之研究生题辑33

在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后, 向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,

到站时司机停车,售票员在车停后开门让乘客上下车。因此,司机启动车辆的动作必须

与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步。应

设臵两个信号量:S1 、S2 ;

S1表示是否允许司机启动汽车(其初值为0 ) S2表示是否允许售票员开门(其初值为0 ) 用P 、v 原语描述如下:

The P,V code Using Pascal

var S1,S2 : semaphore ; S1=0;S2=0; cobegin

Procedure driver Procedure Conductor begin begin

while TRUE while TRUE begin begin

P(S1); 关车门; Start; v(s1);

Driving; 售票; Stop; p(s2);

V(S2); 开车门; end 上下乘客; end end coend

十三真经之少林寺问题

问题描述:

某寺庙,有小和尚、老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳10桶水,每次入水、取水仅为1桶,不可同时进行。水取自同一井中,水井径窄,每次只能容纳一个水桶取水。设水桶个数为3个,试用信号灯和PV操作给出老和尚和小和尚的活动。 问题分析:

CHAPTER 3. 九阴真经之研究生题辑34

从井中取水并放入水缸是一个连续的动作可以视为一个进程,从缸中取水为另一个进程。设水井和水缸为临界资源,引入mutex1,mutex2;三个水桶无论从井中取水还是放入水缸中都一次一个,应该给他们一个信号量count,抢不到水桶的进程只好为等待,水缸满了时,不可以再放水了。设empty控制入水量,水缸空了时,不可取水设full。

The P,V code Using Pascal

var mutex1,mutex2,empty,full,count:semaphore; mutex1:=mutex2:=1; empty:=10; full:=0; count:=3; cobegin

Procedure Fetch_Water Procedure Drink_Water begin begin

while true while true p(empty); p(full); P(count); p(count); P(mutex1); p(mutex2); Get Water; Get water and v(mutex1); Drink water; P(mutex2); p(mutex2);

pure water into the jar; v(empty); v(mutex2); v(count); v(count); end v(full); end coend

十四真经之过桥问题

问题描述:

一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一人过桥,南侧桥段和北侧桥段较窄只能通过一人,桥中央一处宽敞,允许两个人通过或歇息。试用信号灯和PV操作写出南、北两岸过桥的同步算法。 问题分析:

桥上可能没有人,也可能有一人,也可能有两人。

CHAPTER 3. 九阴真经之研究生题辑35

两人同时过桥两人都到中间南(北)来者到北(南)段 共需要三个信号量,load用来控制桥上人数,初值为2,表示桥上最多有2人;north用来控制北段桥的使用,初值为1,用于对北段桥互斥;south用来控制南段桥的使用,初值为1,用于对南段桥互斥。

The P,V code Using Pascal

var load,north,south:semaphore; load=2; north=1; south=1; GO_South() P(load); P(north); 过北段桥; 到桥中间; V(north); P(south); 过南段桥; 到达南岸; V(south); V(load); GO_North()


os例题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广西贺州市2016年中考物理试题(word版,含解析)

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

马上注册会员

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