第二章进程同步典型习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请回答下列问题: 请回答下列问题: 段的车辆看做是一个进程, (1)把每一辆需经过 段的车辆看做是一个进程,则这 )把每一辆需经过AB段的车辆看做是一个进程 些进程在AB段执行时 它们之间的关系应是同步还是互斥? 段执行时, 些进程在 段执行时,它们之间的关系应是同步还是互斥? 操作管理AB段时 (2)用PV操作管理 段时,应怎样定义信号量?给出信 ) 操作管理 段时,应怎样定义信号量? 号量的初值以及信号量可能取值的含义. 号量的初值以及信号量可能取值的含义. (3)若每个进程的程序如下,请在空白处填上适当的 )若每个进程的程序如下,请在空白处填上适当的PV 操作,以保证行车的安全. 操作,以保证行车的安全. begin 到达A点 到达 点; ________; ; 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; ________; ; end; ;
}
}
6 有一个仓库,可以存放 和B两种产品,但要求: 有一个仓库,可以存放A和 两种产品 但要求: 两种产品, (1) 每次只能存入一种产品(A或B) ) 每次只能存入一种产品( 或 ) 产品数量- 产品数量 产品数量< . (2) -N<A产品数量-B产品数量<M. ) < 产品数量 其中, 和 是正整数 试用P, 操作描述产品 是正整数. 其中,N和M是正整数.试用 ,V操作描述产品 A与B的入库过程. 的入库过程. 与 的入库过程 提示:设两个信号量Sa, 提示:设两个信号量Sa,Sb Sa Sa表示允许 产品比B 表示允许A Sa表示允许A产品比B产品多入库的数量 Sb表示允许 产品比A 表示允许B Sb表示允许B产品比A产品多入库的数量
解
设两个信号量Sa,Sb,初值分别为 两个信号量 , ,初值分别为M-1,N-1 , Sa表示允许 产品比 产品多入库的数量 表示允许A产品比 表示允许 产品比B产品多入库的数量 Sb表示允许 产品比 产品多入库的数量 表示允许B产品比 表示允许 产品比A产品多入库的数量 互斥信号量mutex,初值为 . 设互斥信号量 ,初值为1.
1.答: 答 1)各进程之间的关系是互斥 ) 2)可定义一个互斥信号量 S,S的初值为 1.用 PV操作管理时 S可能 ) , 的初值为 . 操作管理时 可能 的取值为 1,0及<0, , 及 , 这些值的含义是: 这些值的含义是: S=1时表示无车辆在 段行驶,若有某车辆欲进人AB段则立即可以 时表示无车辆在AB段行驶,若有某车辆欲进人 段则立即可以 时表示无车辆在 段行驶 进入. 进入. S=0时表示已有一车辆正在 AB段行驶,这时任何其它车辆欲进入 段行驶, 时表示已有一车辆正在 段行驶 AB段都必须等待. 段都必须等待. 段都必须等待 S<0时其绝对值 表示在 A点等待进入 AB段行驶的车辆数. 时其绝对值|S|表示在 点等待进入 段行驶的车辆数. 时其绝对值 段行驶的车辆数 3)用PV操作管理时进程的程序如下: 操作管理时进程的程序如下: ) 操作管理时进程的程序如下 begin 到达A点 到达 点; P(S); ( ) 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; V(S); ( ) end
解答
3,答: Var empty1,empty2,full1,full2:semaphore: =1,1,0,0; begin parbegin process A: begin repeat produce an item; wait(empty1); put to buffer1; signal(full1); until false; end
练习
1. 某条由西向东的单行车道有一卡脖子的路段 (如图 某条由西向东的单行车道有一卡脖子的路段AB( ),为保证行车的安全 需设计一个自动管理系统, 为保证行车的安全, 示),为保证行车的安全,需设计一个自动管理系统, 管理原则如下: 管理原则如下:
1)当AB间无车行驶时,可让到达 点的一辆车进人 段 ) 间无车行驶时, 点的一辆车进人AB段 间无车行驶时 可让到达A点的一辆车进人 行驶; 行驶; 2)当在 段有车行驶时,让到达 点的车等待; 段有车行驶时, 点的车等待; )当在AB段有车行驶时 让到达A点的车等待 3)当AB段内行驶的车通过 点后,可让等待在 点的一辆 段内行驶的车通过B点后 ) 段内行驶的车通过 点后,可让等待在A点的一辆 车进人AB段 车进人 段.
Hale Waihona Puke Baidu
process E->W; ; begin …… P(S1); ( ); 过桥; 过桥; V(S2); ( ); …… end; ;
process W->E; ; begin …… P(S2); ( ); 过桥; 过桥; V(S1); ( ); …… end; ;
3.设有三个进程A,B,C,其中A与B构成一 3.设有三个进程A,B,C,其中A 设有三个进程A,B,C,其中 对生产者和消费者,共享一个由1个缓冲区组 对生产者和消费者,共享一个由1 成的缓冲池;B与C也构成一对生产者和消费 成的缓冲池;B与 ;B 者,共享另一个由1个缓冲区组成的缓冲池. 共享另一个由1个缓冲区组成的缓冲池. 用PV操作描述它们的同步关系. PV操作描述它们的同步关系. 操作描述它们的同步关系
解:
设置三个信号量s,so,sa ,初值分别为1,0, 0.分别表示可否向盘中放水果,可否取桔子, 可否取苹果.
semaphore s=1; semaphore so=0; semaphore sa=0;
main() { cobegin father(); mother(); daughter(); son(); coend }
A产品入库进程: 产品入库进程: 产品入库进程 i = 0; while (1) { 生产产品; 生产产品 P(Sa); P(mutex); A产品入库 产品入库 V(mutex); V(Sb); };
B产品入库进程: 产品入库进程: 产品入库进程 j = 0; while (1) { P(Sb); P(mutex); B产品入库 V(mutex); V(Sa); 消费产品; };
east() {
p(emutex); if e=0 then p(wait) e++; v(emutex); 车辆过桥; p(emutex); e--; if e=0 then v(wait); v(emutex);
west() {
p(wmutex); if w=0 then p(wait) w++; p(wmutex); 车辆过桥; p(wmutex); w--; if w=0 then v(wait); v(wmutex);
father() { while(true) { p(s); 将苹果放入 盘中; v(sa); } }
daughter() { while(true) { p(sa) 取苹果 v(s); 吃苹果; } }
mother() { while(true) { p(s);
将桔子放入盘中;
v(so); } }
(1)写出应定义的 信号量及其初值. 信号量及其初值. (2)假定开始时让 河东的一个人先过桥, 河东的一个人先过桥, 然后交替过桥. 然后交替过桥.请用 适当的PV操作, PV操作 适当的PV操作,达到 上述管理要求. 上述管理要求.
2.答: 答 1)定义两个信号量 和S2,S1:=1,S2:=0. )定义两个信号量S1和 , : , : . 2)假定开始时让河东的一个人先过桥,则用 操作管理时的 )假定开始时让河东的一个人先过桥,则用PV操作管理时的 程序应如下: 程序应如下:
son() { while(true) { p(so) 取桔子 v(s); 吃桔子; ; } }
5. 车流如箭头所示.桥上不允许两车交会,但允 许同方向多辆车依次通行(即桥上允许有多辆同 方向的车).用P,V操作实现交通管理以防止 桥上堵塞.
解: semaphore emutex=1; semaphore wmutex=1; semaphore wait=1; int e=0; int w=0; main() { cobegin east(); west(); coend }
4.吃水果问题 吃水果问题
问题描述:桌上有一只盘子, 问题描述:桌上有一只盘子,每次只能放一个 水果,爸爸专向盘中放苹果, 水果,爸爸专向盘中放苹果,妈妈专向盘中放 桔子,儿子专等吃盘里的桔子, 桔子,儿子专等吃盘里的桔子,女儿专等吃盘 里的苹果.只要盘子空, 里的苹果.只要盘子空,则爸爸或妈妈可向盘 中放水果,仅当盘中有自己需要的水果时, 中放水果,仅当盘中有自己需要的水果时,儿 子或女儿可从中取出. 子或女儿可从中取出. 请给出四人之间的同步关系,并用P, 操作 请给出四人之间的同步关系,并用 ,V操作 实现四人正确活动的程序. 实现四人正确活动的程序.
答: Var student,computer, enter, finish, test : semaphore : = 0, 2m,0,0,0; student: begin P(computer) ----- 得到一台计算机 V(student) ----- 有学生到达,通知门卫 有学生到达, P(enter) ----- 等待进入 Practice; V(finish); ----- 实习结束,通知教师 实习结束, P(test); ----- 等待教师检查 V(computer); ----- 释放计算机资源 End;
思考:某高校计算机系开设网络课并安排上机实习, 思考:某高校计算机系开设网络课并安排上机实习,假
设机房有共有2m台机器, 名学生选该课, 设机房有共有 台机器,有2n名学生选该课,规定: 台机器 名学生选该课 规定: 1)每2个学生组成一组,各占一台机器,合作完成 个学生组成一组, ) 个学生组成一组 各占一台机器, 上机实习 2)只有一组 个学生到齐,并且此时机房有空闲机 个学生到齐, )只有一组2个学生到齐 器时, 器时,该组学生才能进入机房 3)上机实习由一名教师检查,检查完毕,一组学生 )上机实习由一名教师检查,检查完毕, 同时离开机房 设计相应的数据结构,并用wait,signal操作模拟上面 设计相应的数据结构,并用 , 操作模拟上面 实习过程. 提示:除了有学生和教师进程外, 实习过程. (提示:除了有学生和教师进程外,还应 该有门卫进程) 该有门卫进程)
Process B: begin repeat wait(full1); get from buffer1; signal(empty1); wait(empty2); put to buffer2; signal(full2); until false; end Process C: begin repeat wait(full2); get from buffer2; signal(empty2); until false; end
问题分析:
四人之间的关系: 四人之间的关系: 爸爸,妈妈要互斥使用盘子, 爸爸,妈妈要互斥使用盘子,所以两者之间是互斥关 系; 爸爸放的苹果,女儿吃,所以两者是同步关系; 爸爸放的苹果,女儿吃,所以两者是同步关系; 妈妈放的桔子,儿子吃,所以两者也是同步关系. 妈妈放的桔子,儿子吃,所以两者也是同步关系. 提示:设置一个信号量表示可否向盘中放水果, 提示:设置一个信号量表示可否向盘中放水果,一个信 号量表示可否取桔子,一个信号量表示可否取苹果. 号量表示可否取桔子,一个信号量表示可否取苹果.
2. 一条小河上有一座独木桥(如图),规定每次只允许一个人过 一条小河上有一座独木桥(如图),规定每次只允许一个人过 ),规定 现河东和河西都有相等的人数在等待过桥, 桥.现河东和河西都有相等的人数在等待过桥,为了使两边的 人都有同样的过桥机会,规定某边的一个人过桥后要让另一边 人都有同样的过桥机会,规定某边的一个人过桥后要让另一边 的一个人过桥,即两边的人交替过桥.如果把每个过桥者看做 的一个人过桥,即两边的人交替过桥. 一个进程,为保证安全,可用PV操作来管理 操作来管理. 一个进程,为保证安全,可用 操作来管理.