《2022年新版进程同步典型例题.docx》由会员分享,可在线阅读,更多相关《2022年新版进程同步典型例题.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 学习必备 欢迎下载进程同步练习题1. 在公共汽车上,司机和售票员的工作流程如下列图;为保证乘客的安全,司机和售票员应亲密协作和谐工作;请用信号量来实现司机与售票员之间的同步;司机 售票员启动车辆 关车门正常行车 售票到站停车 开车门图 司机和售票员工作流程图2. 桌子上有一只盘子,盘子中只能放一只水果;爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果;用 PV 操作实现他们之间的同步机制;3. a,b 两点之间是一段东西向的单行车道,现要设计一个自动治理系统,治理规章如下:(1)当 ab 之间有
2、车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必需在ab段外等待;(2)当 ab 之间无车辆在行驶时,到达a 点(或 b 点)的车辆可以进入ab 段,但不能从a点和 b 点同时驶入;(3)当某方向在 ab 段行驶的车辆驶出了ab 段且暂无车辆进入ab 段时,应让另一方向等待的车辆进入 ab 段行驶;请用信号量为工具,对 ab 段实现正确治理以保证行驶安全;4将只读数据的进程称为“ 读者” 进程,而写或修改数据的进程称为“ 写者” 进程;答应多个“ 读者” 同时读数据,但不答应“ 写者” 与其他“ 读者” 或“ 写者” 同时拜访数据;另外,要保证:一旦有“ 写者” 等待时,新到达的“
3、 读者” 必需等待,直到该“ 写者” 完成数据访问为止;试用 P、V 操作正的确现“ 读者” 与“ 写者” 的同步; (其次类读者写者问题,信号量解决方法)5一条河上架设了由如干个桥墩组成的一座桥;如一个桥墩只能站一个人, 过河的人只能沿着桥向前走而不能向后退;过河时,只要对岸无人过,就可以过;但不答应河对岸的两个人 同时过,以防止显现死锁;请给出两个方向的人顺当过河的同步算法;名师归纳总结 - - - - - - -第 1 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载6有一个仓库,可以存放 A 和 B 两种产品,但要求:(1)每次只能存入一种产品(A
4、或 B);(2)-NA 产品数量 B 产品数量 M ;其中, N 和 M 是正整数;名师归纳总结 试用同步算法描述产品A 与产品 B 的入库过程;第 2 页,共 11 页- - - - - - -精选学习资料 - - - - - - - - - 学习必备 欢迎下载1、在公共汽车上,司机和售票员的工作流程如下列图;为保证乘客的安全,司机和售票员应 亲密协作和谐工作;请用信号量来实现司机与售票员之间的同步;司机 售票员启动车辆 关车门正常行车 售票到站停车 开车门图 司机和售票员工作流程图【答案】设置两个 资源信号量: S1、S2; S1表示是否答应司机启动汽车,其初值为 0;S2 表示 是否答应
5、售票员开门,其初值为 0. semaphoere S1=S2=0; void Driver while1 waitS1; 启动车辆;正常行车;到站停车;signalS2; void Busman while1 关车门;signalS1;售票;waitS2;开车门; 名师归纳总结 - - - - - - -第 3 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载 main cobegin Driver; Busman; 2. 桌子上有一只盘子,盘子中只能放一只水果;爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的
6、苹果;用 PV 操作实现他们之间的同步机制;【答案】数;信号量 S 用来实现盘子的互斥拜访,S1 表示盘子中苹果个数, S2 表示盘子中橘子的个semaphore S=1,S1=S2=0; void father while1 预备苹果 ; waitS; 将苹果放在盘子内;signalS1; void mother while1 预备橘子 ; waitS; 将橘子放在盘子内;signalS2; void daughter 名师归纳总结 - - - - - - -第 4 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载while1 waitSl; 从盘子里拿走
7、苹果;signalS; 吃苹果 ; void son while1 waitS2; 从盘子里拿走橘子;signalS; 吃橘子 ; main cobegin father; mother; daughter; son; 3. a,b 两点之间是一段东西向的单行车道,现要设计一个自动治理系统,治理规章如下:(1)当 ab 之间有车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必需在ab段外等待;(2)当 ab 之间无车辆在行驶时,到达a 点(或 b 点)的车辆可以进入ab 段,但不能从a点和 b 点同时驶入;(3)当某方向在 ab 段行驶的车辆驶出了ab 段且暂无车辆进入ab 段时,应
8、让另一方向等待的车辆进入 ab 段行驶;请用信号量为工具,对 ab 段实现正确治理以保证行驶安全;【答案】名师归纳总结 - - - - - - -第 5 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载此题是读者 -写者问题的变形;设置3 个信号量 S1、S2 和 Sab,分别用于从 a 点进入的车互斥拜访 共享变量 ab(用于记录当前 ab 段上由 a 点进入车辆的数量) ,从 b 点进入的车互斥拜访 共享变量 ba(用于记录当前ab 段上由 b 点进入车辆的数量) 和 a、b 点的车辆互斥进入 ab 段; 3 个信号量的初值分别为1、1 和 1,两个共享
9、变量ab 和 ba 的初值分别为 0、0;semaphore S1=1,S2=1,Sab=1; int ab=ba=0; void Pab while1 waitS1; ifab=0 waitSab; ab=ab+1; signalS1; 车辆从 a 点驶向 b 点; waitS1; ab=ab-1; ifab=0 signalSab; signalS1; void Pba while1 waitS2; ifba=0 waitSab; ba=ba+1; signalS2; 车辆从 b 点驶向 a 点; waitS2; ba=ba-1; ifba=0 signalSab; 名师归纳总结 - -
10、- - - - -第 6 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载signalS2; main cobegin Pab; Pba; 4. 将只读数据的进程称为“ 读者” 进程,而写或修改数据的进程称为“ 写者” 进程;答应多个“ 读者” 同时读数据,但不答应“ 写者” 与其他“ 读者” 或“ 写者” 同时拜访数据;另外,要保证:一旦有“ 写者” 等待时,新到达的“ 读者” 必需等待,直到该“ 写者” 完成数据拜访为止;试用P、V 操作正的确现“ 读者” 与“ 写者” 的同步;(其次类读者写者问题,信号量解决方法)【答案】为了使写者优先, 可在原先的读
11、优先算法的基础上增加一个互斥信号量 s,初值为 1,使得当至少有一个写者预备拜访共享对象时,它可以 使后续的 读者进程等待;整型变量 writecount,初值为 0,用来对写者进行计数;互斥信号量 wmutex,初值为 1,用来实现多个写者对Process reader while1 waits; waitrmutex; ifreadcount=0waitmutex; readcount+; signalrmutex; signals; perform read operation; waitrmutex; readcount-; ifreadcount=0signalmutex; sign
12、alrmutex; writecount 进行互斥拜访;名师归纳总结 - - - - - - -第 7 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载 Process writer while1 waitwmutex; ifwritecount=0waits; writecount+; signalwmutex; waitmutex; perform write operation; signalmutex; waitwmutex; writecount-; ifwritecount=0signals; signalwmutex; Main cobegin
13、 reader; writer; 5. 一条河上架设了由如干个桥墩组成的一座桥;如一个桥墩只能站一个人,过河的人只能沿 着桥向前走而不能向后退;过河时,只要对岸无人过,就可以过;但不答应河对岸的两个人同时过,以防止显现死锁;请给出两个方向的人顺当过河的同步算法;【答案】信号量 s:互斥使用桥,初值为 1 信号量 scount1:对方向 1 上过河人计数器 count1的互斥使用,初值为 1 信号量 scount2:对方向 2 上过河人计数器 count2的互斥使用,初值为 1 信号量 scount:代表桥上过河人的计数信号量,初值为桥墩个数 N 变量 count1:方向 1 上过河人计数器名师
14、归纳总结 - - - - - - -第 8 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载变量 count2:方向 2 上过河人计数器Semaphore s, scount1, scount2, scount; int count1, count2; s=1; scount1=1; scount2=1; scount=N; count1=0; count2=0; void direct1int i waitscount1; ifcount1=0 waits; count1+; signalscount1; waitscount; 上桥,过桥,下桥;sign
15、alscount; waitscount1; count1-; ifcount1=0 signals; signalscount1; void direct2int i waitscount2; ifcount2=0 waits; count2+; signalscount2; waitscount; 上桥,过桥,下桥;signalscount; 名师归纳总结 - - - - - - -第 9 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载waitscount2; count2-; ifcount2=0 signals; signalscount2; ma
16、in cobegin direct11; direct1n; direct21; direct2m; 6、有一个仓库,可以存放 A 和 B 两种产品, 但要求:(1)每次只能存入一种产品 (A 或 B);(2)-NA 产品数量 B 产品数量 M ;其中, N 和 M 是正整数;试用同步算法描述产品 A 与产品 B 的入库过程;【答案】B 产品的 A 产品的数量不能比 B 产品的数量少 N 个以上, A 产品的数量不能比 数量多 M 个以上设置两个信号量来掌握 A、B 产品的存放数量, sa 表示当前答应 A 产品比 B 产品多入库 的数量(当前答应 A 产品入库数量),即在当前库存量和 B 产
17、品不入库的情形下,仍可以允 许 sa 个 A 产品入库;sb表示当前答应 B 产品比 A 产品多入库的数量(当前答应B 产品入库数量),即在当前库存量和 A 产品不入库的情形下,仍可以答应 sb个 B 产品入库;初始时, sa为 M 一 1,sb 为 N 一 1;当往库中存放入一个 A 产品时,就答应存入 B 产品的数量也增加 1;当往库中存放入一个 B 产品时,就答应存入 A 产品的数量也增加 1;semaphore mutex=1,sa=M-1, sb=N-1; process puta while1 取一个产品;名师归纳总结 - - - - - - -第 10 页,共 11 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载waitsa; waitmutex; 将产品入库;signalmutex; signalsb; process putb while1 取一个产品;waitsb; waitmutex; 将产品入库;signalmutex; signalsa; main cobegin puta; putb; 名师归纳总结 - - - - - - -第 11 页,共 11 页
限制150内