文章
78
粉丝
0
获赞
0
访问
7.9k
(1)P1完成时间18周转时间18
P2完成时间11周转时间8
P3完成时间23周转时间18
平均周转时间44/3
(2)是安全状态,安全序列是P1->P2->P3
(3)
semaphore c=1;所有进程互斥
semaphore x=0;//限制P1和P2的顺序关系
semaphore y=0;//限制P2和P3的顺序关系
semaphore z=1;//限制P2和P3的顺序关系
P1{
P(z);
P(c);
request(A,1);//请求打印机
work1();
V(x);
release(A,1);//释放打印机
V(c) ;
}
P2{
P(x);
P(c);
request(A,1);
request(B,1);
work2();
release(A,1);
release(B,1);
V(y);
V(c);
}
P3(){
P(c);
request(A,1);//请求打印机
work3();
release(A,1);//释放打印机
V(z);
V(c);
}
评分及理由
(1)得分及理由(满分2分)
学生答案中P1、P2、P3的完成时间和周转时间计算完全正确,平均周转时间计算也正确(44/3≈14.67ms)。答案与标准一致,得2分。
(2)得分及理由(满分2分)
学生正确判断系统为安全状态,并给出了正确的安全序列P1→P2→P3。虽然未写出详细分析过程,但结论正确,得2分。
(3)得分及理由(满分4分)
学生定义了信号量但存在以下问题:
1. 信号量c(互斥锁)的引入是多余的,因为题目要求的是同步关系(P1完成后P2才能用扫描仪,P2完成后P3才能执行),而非互斥。资源分配已由系统"按需分配"机制处理,不需要额外互斥锁。
2. 信号量z的定义和用途不明确(在P1中P(z),在P3中V(z)),且与同步需求无关,属于错误逻辑。
3. P2的代码中缺少对信号量y的等待(应等待P2完成的通知),但学生代码中P2使用了P(x)等待P1完成,正确;但P3未等待P2完成(应使用P(...
登录后发布评论
暂无评论,来抢沙发