- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《进程同步作业
1.有一个理发师,一把理发椅和n把供等候理发的顾客坐的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当一个顾客到来时,必须唤醒理发师,进行理发;如果理发师正在理发时,又有顾客来到,则如果有空椅子可坐,他就坐下来等,如果没有空椅子,他就离开。使用wait和signal操作实现理发师和顾客的行为。要求不能带有竞争条件。
#define CHAIRS /* 为等候的顾客准备的椅子数 */
semaphore customers=0;
semaphore barbers=O;
semaphore mutex=1; /* 用于互斥 */
int waiting=0;
void barber()
{
while (1)
{
wait(customers);
wait(mutex);
waiting=waiting-1;
signal(barbers);
signal(mutex);
理发;
}
}
void customers()
{
wait(mutex);
if(waitingCHAIRS)
{
waiting=waiting+1;
signal(customers);
signal(mutex):
wait(barbers);
坐下等待;
}
else
{
signal(mutex);
}
}
2.计算进程PC和打印进程P01、P02共享一个单缓冲区,计算进程负责计算,并把计算结果放入单缓冲中;打印进程P01、P02则负责从单缓冲中取出计算结果进行打印,而且对每个计算结果,P01和P02都需分别打印一次。请用记录型信号量描述上述进程间的同步关系。
Var empty1,enpty2,full1,full2: semaphore:=1,1,0,0;
begin
Parbegin
PC:begin
Repeat
compute next number;
wait(empty1):
wait(empty2);
add the number to bufer;
signal(full1);
signal(full2);
Until false;
end
P01: begin
repeat
wait(full1);
take from bufer;
signal(emptyl):
print last number;
until flase;
end
P02:begin
Repeat
wait(full2);
take from buffer;
signal(empty2);
print last number;
until false
end
parend
end
3.有座东西方向架设、可双向通行的单车道简易桥,最大载重负荷为4辆汽车。请定义合适的信号量正确使用wait操作、signal操作,实现双向车辆的过桥过程。
设置4个信号量:
Mutex:表示桥的互斥使用的信号量,初值为1;
Scounteast:表示由东向西方向的车辆计数器的互斥使用的信号量,初值为1;
Scountwest:表示由西向东方向的车辆计数器的互斥使用的信号量,初值为1;
Scount4:表示桥上车辆计数器的信号量,初值为4。
算法过程如下:
semaphore Mutex,Scounteast,Scountwest,Scount4;
int Counteast,Countwest;
Mutex=1;Scounteast=1;Scountwest=1;Scount4=4;
Counteast=0;Countwest=0;
void P-east()
{
wait(Scounteast);
if (Counteast= =0) wait(Mutex);
Counteast++;
signal(Scounteast);
wait(Scount4);
过桥;
signal(Scount4);
wait(Scounteast);
Counteast--;
if (Counteast= =0) signal (Mutex);
signal(Scounteast);
}
void P-west()
{
wait(Scountwest);
if (Countwest = =0) wait(Mutex);
Countwest ++;
您可能关注的文档
最近下载
- 焊接方法与设备使用教学作者曹朝霞齐勇田主编其他焊接方法.pptx VIP
- 医院培训课件:《高警示等特殊药品管理规范》.pptx
- 2024年小微企业和个体户税收最新优惠政策宣讲培训课件(增值税小规模纳税人新政、“六税两费”减免、小微企业减免企业所得税、个体工商户减半征收个人所得税政策等内容)).docx
- 专升本《招投标与合同管理》教案.ppt VIP
- 中考物理专题2比热容易错分析(解析版).docx VIP
- 项目部综合办公室年度工作总结.docx VIP
- 教师数学教学经验分享精品课件.pptx VIP
- 重庆市渝中区2023-2024学年三年级下学期期末语文试卷(含答案).pdf VIP
- ZZ042 数字艺术设计赛题赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套).docx VIP
- (统编版2024版)七年级历史新教材新变化及教学建议 课件.pptx
文档评论(0)