网站大量收购独家精品文档,联系QQ:2885784924

进程同步典型例题.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程同步练习题 在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。 司机 售票员 启动车辆 关车门 正常行车 售票 到站停车 开车门 图 司机和售票员工作流程图 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中 放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用 PV 操作实现他 们之间的同步机制。 a , b 两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下: ( 1)当 ab 之间有车辆在行驶时同方向的车可以同时驶入 ab 段,但另一方向的车必须在 ab 段外等待; ( 2)当 ab 之间无车辆在行驶时,到达 a 点(或 b 点)的车辆可以进入 ab 段,但不能从 a 点和 b 点同时驶入; 3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 ab 段时,应让另一方向等待的车辆进入 ab 段行驶。 请用信号量为工具,对 ab 段实现正确管理以保证行驶安全。 4.将只读数据的进程称为“读者”进程,而写或修改数据的进程称为“写者”进程。允许多个“读者”同时读数据,但不允许“写者”与其他“读者”或“写者”同时访问数据。另外,要保证:一旦有“写者”等待时,新到达的“读者”必须等待,直到该“写者”完成数据访 问为止。试用 P、V 操作正确实现“读者”与“写者”的同步。 (第二类读者写者问题,信号量解决方法) 5.一条河上架设了由若干个桥墩组成的一座桥。 若一个桥墩只能站一个人, 过河的人只能沿 着桥向前走而不能向后退。过河时,只要对岸无人过,就可以过。但不允许河对岸的两个人同时过,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。 6.有一个仓库,可以存放 A 和 B 两种产品,但要求: 1)每次只能存入一种产品( A 或 B); 2)-N< A 产品数量- B 产品数量< M。其中, N 和 M是正整数。试用同步算法描述产品 A 与产品 B 的入库过程。 1、在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全, 司机和售票员应 密切配合协调工作。请用信号量来实现司机与售票员之间的同步。 司机 售票员 启动车辆 关车门 正常行车 售票 到站停车 开车门 图 司机和售票员工作流程图 【答案】 设置两个 资源信号量: S1、S2。 是否允许售票员开门,其初值为 0.  S1表示是否允许司机启动汽车,其初值为  0; S2 表示 semaphoere S1=S2=0; void Driver() { while(1) { wait(S1); 启动车辆; 正常行车; 到站停车; signal(S2); } } void Busman() { while(1) { 关车门; signal(S1)  ; 售票; wait(S2)  ; 开车门; } main() { cobegin{ Driver(); Busman(); } } 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中 放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用 PV 操作实现他 们之间的同步机制。 【答案】 信号量 S 用来实现盘子的互斥访问, S1 表示盘子中苹果个数, S2 表示盘子中橘子的个 数。 semaphore S=1,S1=S2=0; void father() { while(1) { 准备苹果 ; wait(S); 将苹果放在盘子内; signal(S1); } } void mother() { while(1) { 准备橘子 ; wait(S); 将橘子放在盘子内; signal(S2); } } void daughter() { while(1) { wait(Sl); 从盘子里拿走苹果; signal(S); 吃苹果 ; } } void son() { while(1) { wait(S2); 从盘子里拿走橘子; signal(S); 吃橘子 ; } } main() { cobegin{ father(); mother(); daughter(); son(); } } a , b 两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下: ( 1)当 ab 之间有车辆在行驶时同方向的车可以同时驶入 ab 段,但另一方向的车必须在 段外等待; ( 2)当 ab 之间无车辆在行驶时,到达 a 点(或 b 点)的车辆可以进入 ab 段,但不能从 点和 b 点同时驶入;  ab a 3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 ab 段时,应让另一方向等待的车辆进入 ab 段

文档评论(0)

q96tcntzow + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档