文章
6
粉丝
93
获赞
0
访问
238
评分及理由
(1)信号量定义部分得分及理由(满分2分)
学生定义了full(相当于vat_full)、empty(相当于vat_empty)、Tong(相当于pail)、jing(相当于mutex_well)、mutex(相当于mutex_vat)。信号量类型和初始值正确,但full未声明为信号量(只写了full=0),且jing和Tong也未用Semaphore声明。考虑到识别可能误写(如漏写Semaphore),且核心逻辑正确,扣1分。得1分。
(2)小和尚进程算法得分及理由(满分3分)
学生的小和尚进程基本正确:先申请桶(P(Tong)),再申请井(P(jing)),取水后释放井(V(jing)),然后申请空位(P(empty))和互斥访问水缸(P(mutex)),倒水后释放互斥(V(mutex))和增加满容量(V(full)),最后释放桶(V(Tong))。但标准答案中,P(empty)应在P(pail)之后,但学生顺序反了(先P(Tong)后P(empty)),这可能导致死锁(例如水缸满时,小和尚占着桶等待空位,但老和尚需要桶来取水释放空位)。这是一个逻辑错误,扣1分。得2分。
(3)老和尚进程算法得分及理由(满分3分)
学生的老和尚进程基本正确:先申请桶(P(Tong)),再申请水(P(full))和互斥访问水缸(P(mutex)),取水后释放互斥(V(mutex))和增加空位(V(empty)),释放桶(V(Tong)),然后喝水。但标准答案中,P(full)应在P(pail)之前,而学生顺序正确(先P(Tong)后P(full)),但P(full)和P(mutex)顺序不影响(互斥信号量应在同步之后,但这里可接受)。无逻辑错误,得3分。
题目总分:1+2+3=6分
登录后发布评论
暂无评论,来抢沙发