考研操作系统经典例题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Copyright © 2010 by Zhongtao Zhu
- 6/35 -
Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
单行通道
下行
1 2 3 4 5 6 7 8 9 10 11 12 } void north_to_south() { P(turnstile); P(down_count_mutex); if (++down_count==1) P(pass); V(down_count_mutex); V(turnstile); go_down(); P(down_count_mutex); if (--down_count==0) V(pass); V(down_count_mutex);
语句 15、19 避免饥饿。
Copyright © 2010 by Zhongtao Zhu - 8/35 Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
search—insert—delete 问题
三类线程 search、insert、delete共享(访问)单链表,利用 PV 原语操作实现 这三类线程。限定如下: 1 search 在表中查找结点。 search 类线程可以与同类线程并发执行。 2 insert 在 表 尾 插 入 新 结 点。 insert 类 线 程 同 类 互 斥, 但 是 可 以 与 任 意 多 search 并发执行。 3 delete 可以删除表中任意结点。 delete 不但同类之间互斥,而且与其它类线 程互斥。
用 PV 操作模拟两条单行线交叉路口的交通。限定如下: 2两条路上如果都有车辆同时到达路口,它们应交替依次通过,任何车辆都不 应无限等待,即避免饥饿或饿死。
Copyright © 2010 by Zhongtao Zhu
- 3/35 -
Typeset using Troff with OpenSolaris
操作系统补充
Turn off your please
PV 操作
操作系统补充
典型问题
晚间阅览室
某阅览室晚间开放,第一个进入的读者开灯,最 后 一 个 离开 的读者关灯。利 用 PV 原语操作实现读者进程。
1 2 3 4 5 6 7 8 9 10 11 12 } semaphore mutex = 1; int readers = 0; void reader() { P(mutex); if (++readers==1) turn_on_light(); V(mutex); reading(); P(mutex); if (--readers==0) turn_off_light(); V(mutex);
Copyright © 2010 by Zhongtao Zhu
- 1/35 -
Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
开会
某会议必须等待 n 个参与者到齐后才能开始,利用 PV 原语操作实现会议参与 者进程。
1 2 3 4 5 6 7 8 9 10 11 12 } semaphore mutex = 1, barrier = 0; int count = 0; void meeter() { P(mutex); count++; V(mutex); if (count==n) V(barrier); P(barrier); V(barrier); meeting();
PV 操作
操作系统补充
典型问题
单行通道
信号量初始化
int down_count = 0; int up_count = 0; up_count_mutex = 1; pass = 1; semaphore down_count_mutex = 1; semaphore semaphore
semaphore turnstile = 1;
4 void north_to_south() 5 { 6 7 8 9 10 11 }
Copyright © 2010 by Zhongtao Zhu
- 4/35 -
Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
单行通道
用 PV 操作模拟单行通道的交通。限定如下: 1若通道中无车辆,则任何方向车辆都可以驶入; 2若通道中已有车辆,则后续同方向车辆可以驶入; 3反方向车辆必须等待通道中的车辆全部驶出之后才可以驶入。
Copyright © 2010 by Zhongtao Zhu
- 5/35 -
Typeset using Troff with OpenSolaris
语句 3、7 避免饥饿。
Copyright © 2010 by Zhongtao Zhu - 7/35 Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
单行通道
上行
13 14 15 16 17 18 19 20 21 22 23 24 } void south_to_north() { P(turnstile); P(up_count_mutex); if (++up_count==1) P(pass); V(up_count_mutex); V(turnstile); go_up(); P(up_count_mutex); if (--up_count==0) V(pass); V(up_count_mutex);
Copyright © 2010 by Zhongtao Zhu
- 2/35 -
Typeset using Troff with OpenSolaris
PV 操作
操作系统补充
典型问题
wenku.baidu.com
十字路口
______ ______
1任何时刻只能有一辆车通过路口;
______ ______
PV 操作
操作系统补充
典型问题
十字路口
1 semaphore pass = 1; 2 semaphore NS 3 semaphore EW = 1; = 1; 12 void east_to_west() 13 { P(NS); P(pass); cross(); V(pass); V(NS); 14 15 16 17 18 19 } P(EW); P(pass); cross(); V(pass); V(EW);