操作系统第2章习题分析.ppt
《操作系统第2章习题分析.ppt》由会员分享,可在线阅读,更多相关《操作系统第2章习题分析.ppt(24页珍藏版)》请在一课资料网上搜索。
1、进程同步与互斥习题分析进程同步与互斥习题分析解题步骤:解题步骤: 确定进程的个数及每个进程的工作;确定进程的个数及每个进程的工作; 确定关键工作步(需要控制的);确定关键工作步(需要控制的); 确定信号量表示的含义(开始或结束);确定信号量表示的含义(开始或结束);1.1. 写出伪代码。写出伪代码。1.单行隧道问题对一个单行的隧道进行模拟,为了避免碰撞,必须对一个单行的隧道进行模拟,为了避免碰撞,必须防止汽车同时从两端(防止汽车同时从两端(A A、B B端)进入隧道。现要设计一个端)进入隧道。现要设计一个自动管理系统,管理规则如下:当隧道中有车辆在行驶时自动管理系统,管理规则如下:当隧道中有车
2、辆在行驶时同方向的车可以驶入隧道,但另一方向的车必须在隧道外同方向的车可以驶入隧道,但另一方向的车必须在隧道外等待;当隧道中无车时,到达等待;当隧道中无车时,到达A A 端(或端(或B B端)的车辆可以进端)的车辆可以进入隧道,但不能从入隧道,但不能从A A、B B端同时驶入隧道;当某方向在隧道端同时驶入隧道;当某方向在隧道中行驶的车辆使出了隧道且无车辆进入隧道时,应让另一中行驶的车辆使出了隧道且无车辆进入隧道时,应让另一方向等待的车辆进入隧道行驶。请用方向等待的车辆进入隧道行驶。请用PVPV操作设计一个算法操作设计一个算法实现这个控制。实现这个控制。例:单行隧道问题例:单行隧道问题。对一个单
3、行的隧道进行模拟,为了避免。对一个单行的隧道进行模拟,为了避免死锁,必须防止汽车同时从两端进入隧道。如果一次只允死锁,必须防止汽车同时从两端进入隧道。如果一次只允许一辆车通过隧道,两个方向按车辆到达的先后顺序依次许一辆车通过隧道,两个方向按车辆到达的先后顺序依次通过,请用通过,请用pv操作设计一个算法实现这个控制。操作设计一个算法实现这个控制。 分析分析:本题涉及两个进程:本题涉及两个进程:P1和和P2。隧道是一个临界资源。隧道是一个临界资源,一次只能被一辆车占有,可以把它看作互斥问题。,一次只能被一辆车占有,可以把它看作互斥问题。 设设:一个互斥信号量:一个互斥信号量sd=1,表示隧道是否可
4、用。,表示隧道是否可用。 int sd=1; cobegin P1() / P2() coend问题:问题:两个方向车辆通过隧道的交换比较平凡,系统效率不高。两个方向车辆通过隧道的交换比较平凡,系统效率不高。分析分析:为了提高效率,把问题改为:一旦一辆车进入,则同一方向的车为了提高效率,把问题改为:一旦一辆车进入,则同一方向的车可以立即跟进。写出用信号量解决此问题的代码,不考虑可以立即跟进。写出用信号量解决此问题的代码,不考虑“饥饿饥饿”的的情况。情况。(按照读者按照读者-写者问题处理写者问题处理)设设:3个信号量:个信号量:c表示计数器,表示计数器,m表示对临界资源计数器的控制,表示对临界资
5、源计数器的控制,sd表表示对临界资源隧道的控制,即隧道是否可用。示对临界资源隧道的控制,即隧道是否可用。 int c=0,m=1,sd=1; cobegin P1() / P2()coend问题:问题: 若若P1过隧道,则后续车辆可以跟进;过隧道,则后续车辆可以跟进; 若若p2过隧道,一次只能过一辆;过隧道,一次只能过一辆;1. P1不会产生不会产生“饥饿饥饿”的现象,而的现象,而p2会产生会产生“饥饿饥饿”的现象。的现象。分析分析:解决解决p2“饥饿饥饿”现象的方法现象的方法:再设一个信号量:再设一个信号量k,让,让p1、p2排队,可排队,可以做到以做到p1方向比方向比p2方向晚来的车辆被方
6、向晚来的车辆被k阻止。阻止。int c=0,m=1,sd=1,k=1; cobegin P1() / P2()coend问题:问题: 若若P1过隧道,则后续车辆可以跟进;过隧道,则后续车辆可以跟进;1. 若若p2过隧道,一次只能过一辆过隧道,一次只能过一辆 。分析分析:解决解决p2可以过多辆车的方法可以过多辆车的方法:按照读者:按照读者-读者问题处理。即:读者问题处理。即:p1为读者,为读者,p2为读者,但两个读者不能同时读为读者,但两个读者不能同时读 。int c1=c2=0,m1=m2=1,sd=1; /c1、c2为计数器,为计数器,m1、m2、sd为互为互斥信号量斥信号量cobegin
7、P1() / P2()coend1.单行隧道问题void Pab() do 从从A端驶入,到端驶入,到B端驶出;端驶出; while(TRUE);void Pba () do 从从B端驶入,到端驶入,到A端驶出;端驶出; while(TRUE);计数器:计数器:countab、countba分别表示分别表示A-BA-B、B-AB-A的车辆数的车辆数; ; 信号量:信号量:s、mutexab、mutexba;1.单行隧道问题int countab=0,countba=0; Semaphore s=1, mutexab=1,mutexba=1;void Pab() do wait(mutexab)
8、countab+; if (countab=1) then wait(s); signal(mutexab); 从从A端驶入,到端驶入,到B端驶出;端驶出; wait(mutexab); countab- -; if (countab=0) then signal(s) signal(mutexab); while(TRUE);2.公交车行驶问题 在公交车行驶过程中汽车司机与售票员之间在公交车行驶过程中汽车司机与售票员之间必须协同工作。为了安全行驶规定:其一、只有必须协同工作。为了安全行驶规定:其一、只有售票员把车门关好了司机才能开车,因此,售票售票员把车门关好了司机才能开车,因此,售票员关
9、好车门应通知司机开车;其二、只有当汽车员关好车门应通知司机开车;其二、只有当汽车已经停下,售票员才能开门上下客,故司机停车已经停下,售票员才能开门上下客,故司机停车后应通知售票员,汽车当前正在始发站停车上客。后应通知售票员,汽车当前正在始发站停车上客。试设必要的信号灯及赋初值,用试设必要的信号灯及赋初值,用PVPV操作设计一个操作设计一个算法实现这个控制。算法实现这个控制。void Driver () do 启动开车启动开车; 正常行车正常行车; 到站停车到站停车; while(TRUE);返回2.公交车行驶问题void Conductor () do 开车门开车门; 关车门关车门; 卖票;卖
10、票; while(TRUE);信号量设置:信号量设置:用两个信号量用两个信号量s1s1、s2s2,分别表示可以,分别表示可以开门和可以开车,其初始值都为开门和可以开车,其初始值都为0 0。Semaphore s1=0, s2=0;void Driver () do wait (s2); 启动开车启动开车; 正常行车正常行车; 到站停车到站停车; signal (s1); while(TRUE); 返回2.公交车行驶问题void Conductor () do wait (s1); 开车门开车门; 关车门关车门; signal (s2); 卖票;卖票; while(TRUE);3. 和尚挑水问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 习题 分析
一课资料网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。



浙江美术馆调研报告.ppt
电热水器控制系统.doc
D6114B型柴油机结构特点.pdf

![MLSPGO8Q0C2L%`J2QI2M]C3.png](https://www.ekdoc.com/FileUpload/ueditor_s/upload/2020-5/8/6372452921073120799898817.png)


