- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 公司级氢安全培训课件.pptx VIP
- 田径竞赛规则与方法径赛部分PPT培训课件.ppt VIP
- 实验室生物安全管理手册(2025版).docx VIP
- Al Brooks 价格行为交易区间篇.pdf VIP
- 虚拟现实伦理议题-深度研究.pptx
- 2024 - 2025 学年河北省职业学校职教高考联盟第三次全省模拟考试旅游类试卷.docx VIP
- 第三单元第三节《遵守网络社交规则》说课稿 2024—2025学年川教版(2024)初中信息技术七年级上册.docx VIP
- 2025至2030全球及中国宫颈癌筛查行业运营态势与投资前景调查研究报告.docx
- JTG-T H 21-2011公路桥梁技术状况评定标准_(高清-2011年发布).pdf VIP
- 国开《人文英语4》机考总题库.pdf VIP
原创力文档


文档评论(0)