- 2
- 0
- 约1.36千字
- 约 6页
- 2017-12-10 发布于河南
- 举报
操作系统概念ch06 练习答案
木兰为从军,令仆人甲、乙、丙、丁分别去东市买骏马,西市买鞍鞯。,南市买辔头,北市买长鞭。并规定,若仆人甲买到的是白马,则其余商品买王子牌的,否则买唐僧牌的。四人皆回后木兰整装出征。试用信号量及wait、signal操作给出仆人甲、乙、丙、丁及木兰的活动。
Semaphore s1=0, s2=0, s3=0, s4=0,s5=0,s6=0,s7=0
Bool white = false;
Procedure mulan(2分)
{
Wait(s1);
Wait(s2);
Wait(s3);
Wait(s4);
整装出征;
}
Procedure servant1{(2分)
去东市,
If(买到白马)
White=true;
Else
White=false;
Signal(s5);
Signal(s6);
Signal(s7);
Signal(s1)
}
Procedure servant2{
去西市,
Wait(s5)
If(white==true)
买王子牌;
Else
买唐僧牌;
Signal(s2)
}
Procedure servant3{
去南市,
Wait(s6)
If(white==true)
买王子牌;
Else
买唐僧牌;
Signal(s3)
}
Procedure servant4{
去北市,
Wait(s7)
If(white==true)
买王子牌;
Else
买唐僧牌;
Signal(s4)
}
一个理发店有为等待的顾客准备的n把椅子,一把理发师的椅子和一个理发师。如果顾客进入理发店,发现没有空椅子,该顾客将离开。如果顾客进入理发店,发现理发师正在睡觉,顾客唤醒理发师并理发。在其他的情况下,顾客进入理发店,坐下来等待。如果理发师给一个顾客理完发,并且还有等待的顾客,理发师给下一个顾客理发;否则理发师在自己的椅子上睡觉。使用信号量,写函数控制顾客和理发师的行为。
Shared semaphore cutHair =0;
Shared semaphore waiting =0;
Shared semaphore countMutex =1;
Shared int count=0;
Void barber()
{
while(true)
{
P(cutHair);
GiveHaircut();
}
}
Void customer()
{
P(countMutex);
If(count==n+1) //N chairs plus the barbers chair
Exit();
Count=count+1;
If(count1)
{
//-----------
//take a chair
//------------
V(countMutex);
P(waiting);
}
Else
V(countMutex);
//--------------------------------
V(cutHair);
ReceiveHaircut();
//----------------------------------
P(countMutex);
count=count-1;
If(count0)
V(waiting);
V(countMutex);
}
您可能关注的文档
最近下载
- 2025年安徽省普通高校对口招生考试(英语)历年参考题库含答案详解.docx VIP
- JIS D5301-2006(中文版本).pdf VIP
- 2025年安徽省普通高校对口招生考试(语文)历年参考题库含答案详解.docx VIP
- 2025年安徽省普通高校对口招生考试(计算机类)历年参考题库(含答案).docx VIP
- 完美演练新概念英语练习1上 参考答案.docx VIP
- 2026年安徽省普通高校对口招生考试(英语)历年参考题库含答案详解.docx VIP
- AP统计学 2015年真题 附答案和评分标准 AP Statistics 2015 Real Exam with Answers and Scoring Guidelines.pdf VIP
- 2026年安徽省普通高校对口招生考试(语文)历年参考题库含答案详解.docx VIP
- 2023年安徽省滁州市小升初语文试卷(含答案).docx VIP
- iCloud邮箱账号密码如何找回.docx VIP
原创力文档

文档评论(0)