文章
62
粉丝
0
获赞
0
访问
9.7k
(1)
S = S - 1和S = S + 1在执行过程中可能会发生调度,此时增减操作并未完成,其他操作读取的S值为未完成操作的结果。
(2)
方法一错误,进入关中断后进行while,之后的signal都不能进入中断执行S = S + 1
方法二错误,进入关中断后进行while,之后的signal都不能进入中断执行S = S + 1
(3)
能,将临界区用开关中断进行保护,将while(S<=0)放在关中断之前
评分及理由
(1)得分及理由(满分2分)
学生回答指出了S=S-1和S=S+1操作在执行过程中可能被调度打断,导致其他进程读取到不完整的S值,这基本正确描述了互斥的必要性。但回答未明确强调信号量S是共享变量,以及多个进程并发访问会导致竞态条件。根据标准答案,回答基本正确但不够完整,扣0.5分。
得分:1.5分
(2)得分及理由(满分3分)
学生正确指出方法1错误,理由正确(关中断后while循环无法被其他进程修改S,导致死循环)。但学生错误地认为方法2也是错误的,理由与方法1相同,这忽略了方法2在while循环内交替开关中断的改进,允许其他进程执行signal操作。因此,方法2的判断和理由错误,扣2分(方法2判断错误扣1.5分,理由错误扣0.5分)。方法1部分得1分。
得分:1分
(3)得分及理由(满分2分)
学生回答错误地认为用户程序可以使用开/关中断指令实现临界区互斥,并提出了修改方案(将while放在关中断前),但未认识到开/关中断是特权指令,用户程序无法直接使用。根据标准答案,回答完全错误。
得分:0分
题目总分:1.5+1+0=2.5分
登录后发布评论
暂无评论,来抢沙发