操作系统同步互斥练习题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统同步试题 1、设公共汽车上,司机和售票员的活动分别是: 司机的活动:启动车辆; 正常行车; 到站停车; 售票员的活动: 关车门; 售票; 开车门; 在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用 P、V 操作实现它们的同步。 设两个信号量 S 和 C,初值为 S=0;C=0; 司机: L1: 正常行车 到站停车 V(S) P(C) 启动开车 售票员: L2: 售票 P(S) 开车门 关车门 V(C) GO TO L1 GO TO L2 2、桌子上有一个空盘子,允许存放一只水果,爸爸可以向盘中放苹果,妈妈向 盘子中放橘子,女儿专门吃盘子中的苹果,儿子专门吃盘子中的橘子。规定当 盘子空的时候一次只能放一只水果,请用信号量实现他们之间的同步与互斥。 S, S1, S2 :semaphore=1,0,0; Cobegin: Process Father: Begin: L1: P(S); Put Apple; V(S1); GO TO L1; End; Process Mother: Begin: L2: P(S); Put Orange; V(S2); GO TO L2; End; Process Son: Begin: L3: P(S2); Get Orange; V(S); GO TO L1; End; Process Daughter: Begin: L4: P(S1); Get Apple; V(S); GO TO L4; End; CoEnd; 2、写者优先的“读者――写者”问题: 共享读 互斥写、读写互斥 写者优先于读者(一旦有写者,则后续 读者必须等待,唤醒时优先考虑写 者) wmutex:semaphore=1 //读者与写者之间、写者与写者之间互斥使用共享数据 S:semaphore=1 //当至少有一个写者准备访问共享数据时,它可使后续 的读者等待写完成 S2:semaphor=1 //阻塞第二个以后的等待读者 readcount,writecount: semaphore = 0,0; //当前读者数量、写者数量 mutex1 :semaphore = 1 //多个读者互斥使用 readcount mutex2 :semaphore = 1 //多个写者互斥使用 writecount Cobegin: Reader: begin Repeat Wait(S2); wait(S); wait(mutex1) if readcount=0 then wait(wmutex); readcount++; signal (mutex1); signal(S); signal(S2); reading… wait(mutex1); readcount--; if readcount=0 then signal(wmutex); signal(mutex1); until false; begin; writer: begin repeat; wait(mutex2); if writecount=0 then wait(S); writecount++; signal (mutex2); wait(wmutex); writing… signal(wmutex); wait(mutex2); writecount--; if writecount=0 then signal(S); signal (mutex2); until false; end; coend; 4、有一个仓库,可以存放 A、B 两种产品,但要求: 每次只能存入一种产品(A 或 B); A 产品数量-B 产品数量M; B 产品数量-A 产品数量N; 其中 M、N 是正整数,使用 P、V 操作描述产品 A 与产品 B 的入库过程。 Mutex,Sa,Sb: Semaphore; Mutex =1; Sa=M-1; Sb=N-1; CoBegin: Process PA: Begin Loop: P(Sa); P(Mutex); 产品 A 入库; V(Mutex); V(Sb); Goto Loop; End; Process PB: Begin Loop: P(Sb); P(Mutex); 产品 B 入库; V(Mutex); V(Sa); Goto Loop; End; CoEnd; 5、进程 A1、A2、……An1 通过 m 个缓冲区向进程 B1、B2……Bn2 不断地发 送消息。发送和接收工作遵循如下规则: 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小等 于消息长度; 对每一个消息,B1,B2,…,Bn 都必须接收一次,读入各自的数据 区内; m 个缓冲区都满时,发送进程等待;没有可读的消息时,接收进程等

您可能关注的文档

文档评论(0)

liushuixian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档