文章
327
粉丝
40
获赞
2
访问
39.5k
(1) wait和signal都是原子性操作的指令,用于实现互斥访问临界区,如果多进程并发访问下没有对信号量实现互斥执行,同时读写可能会同时持有信号量的同一个值,先后进行修改覆盖读或者写的值,造成脏数据
(2)方法一中的关中断到开中断之间,其他进程无法修改S,导致while无法退出
方法二正确
(3)用户程序不能使用开/关中断实现临界区互斥,因为中断指令是特权指令,用户态下不可以用
评分及理由
(1)得分及理由(满分2分)
学生回答正确指出了多个进程并发访问信号量时可能造成数据不一致的问题,并提到了"脏数据"的概念,这与标准答案中"多个进程共享变量、需要互斥访问"的核心思想一致。但表述中"wait和signal都是原子性操作"的表述不够准确(原题中的功能描述版本并不是原子操作),不过不影响对互斥必要性的理解。因此给予满分2分。
(2)得分及理由(满分3分)
学生正确指出了方法1的问题(关中断导致while无法退出)和方法2的正确性,与标准答案完全一致。但扣1分,因为对方法1问题的描述不够完整准确 - 学生只说"其他进程无法修改S",但应该明确指出这会陷入死循环,且没有完整描述方法1错误的具体表现。得2分。
(3)得分及理由(满分2分)
学生回答完全正确,明确指出用户程序不能使用开/关中断指令的原因是因为这些是特权指令,与标准答案一致。得2分。
题目总分:2+2+2=6分
登录后发布评论
暂无评论,来抢沙发