计算机操作系统题作业.docVIP

  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文档。上传文档
查看更多
计算机操作系统题作业

进程A1,A2,…,An通过一个缓冲区向进程B1,B2,…Bm不断地发送消息。发送和接收工作遵循如下规则: (1)每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小等于消息长度; (2)对每一个消息,B1,B2,…,Bm都须各接收一次,读入各自的数据区; (3)缓冲区满时,发送进程等待;没有可读的消息时,接收进程等待。 试用P,V操作组织正确的发送和接收工作。(说明信号量的意义) 分析:本题是生产者-消费者问题的一个变形。在生产者-消费者问题中,生产者和消费者公用一组缓冲区,每一个缓冲区只需写一次、读一次;而这个问题中,每一个缓冲区只写一次,但需读m次。在解题的过程中,可以把一组缓冲区看做m组缓冲区。这样一来,每一个生产者需要同时写m个缓冲区组中相应的m个缓冲区,而每一个消费者只需读自己对应的那组缓冲区中对应的单元。生产者须在m个缓冲区都为空时方可写入。这样,就可以用m组信号量(avail,full)来实现这一流程。 设公用信号量mutex保证生产者进程和消费者进程之间的互斥,设信号量avail[1…m]为生产者进程的私用信号量,信号量full[1…m]为消费者进程的私用信号量。信号量mutex表示可用有界缓冲区的个数,初值为1;信号量avail[i] 1≤i≤m 表示有界缓冲区组中的第i个缓冲区的空单元数,初值为m;信号量full[i] 1≤i≤m 表示有界缓冲区中的第i个缓冲区的非空单元数,初值为0。 send m : begin local i i←1; repeat P avail[i] ; until i m P mutex ; 把数据m送入缓冲区中某个单元; i←1; repeat V full[i] ; until i m V mutex ; end receive m,i : begin P full[i] ; P mutex ; 取出缓冲区中某个单元的数据m V avail[i] ; V mutex ; end 练习1: 假定系统有3个并发进程Read,Process,Print,他们共享缓冲区B1和B2。 进程Read负责从输入设备读信息,每读一条记录,就把他放入缓冲区B1;进程Process从缓冲区B1取出记录,加工后存入缓冲区B2;进程Print则将B2中的记录打印输出。缓冲区B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的记录与读入记录的个数和次序完全一样,请使用P,V操作,写出他们的并发程序。 本题中,三进程之间存在同步的关系。设4个私用信号量SR、SP1、SP2、ST。SR是进程Read的私用信号量,表示B1缓冲区中空缓冲单元的个数,初值为1;SP1和SP2是进程Process的私用信号量,SP1表示B1缓冲区中满缓冲单元的个数,初值为0,SP2表示B2缓冲区中空缓冲单元的个数,初值为1;ST是进程Print的私用信号量,表示B2缓冲区中满缓冲单元的个数,初值为0。 Read : begin local x repeat 接收来自输入设备上的一个记录 x←接收的一个记录 P SR B1←x V SP1 until 进程结束 end Process : begin local y repeat P SP1 y B1 V SR 加工y P SP2 B2 y V ST until 进程结束 end Print : begin local z repeat P ST z B2 V SP2 打印z until 进程结束 end 练习2: 有3个并发进程in, outA和outB共享一个缓冲区buf 容量为1 。规定: 进程in负责将读入数据放到buf中。 进程outA仅当在buf中有数据且数据为奇数时,outA才可从buf取数据打印,并使buf为空;进程outB仅当在buf中有数据且数据为偶数时,outB才可从buf取数据打印,并使buf为空; 试用P,V操作实现三个进程可正确执行的并发程序。 提示:这是一个同步问题,可以设3个私用信号量。 练习3: 桌上有一只盘子,只能容纳一个水果,每次只能放入或取出一个水果。现在有许多苹果和橘子。一家四口各行其职:父亲负责取苹果,然后将苹果放入盘中,并重复这两个动作;母亲负责取橘子,然后将橘子放入盘中,并重复这两个动作;一个儿子负责从盘中取橘子,然后吃掉橘子,并重复这两个动作;一个女儿负责从盘中取苹果,然后吃掉苹果。请用P,V操作实现父亲,母亲,儿子和女儿之间同步与互斥关系。 carried out; 4 for spring hangers included simple spring, h

文档评论(0)

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

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

1亿VIP精品文档

相关文档