GATE 2009 CS考试中提出了以下问题。
1)在单处理器系统的以下进程状态转换图中, 假定总是有某些进程处于就绪状态:现在考虑以下语句:
I. 如果一个进程进行转换D, 则将导致另一个进程立即进行转换A。
II. 处于阻塞状态的进程P2可以在另一个进程P1处于运行状态时进行转换E。
III. 操作系统使用抢占式调度。
IV. 操作系统使用非抢占式调度。
上面哪个陈述是正确的?
(A)I和II
(B)I和III
(C)II和III
(D)II和IV
答案(C)
I是错误的。如果一个进程进行了转换D, 则将导致另一个进程进行了转换B, 而不是A。
II是正确的。 I / O完成时, 无论其他进程是否处于运行状态, 该进程都可以进入就绪状态。
III是正确的, 因为存在从运行状态到就绪状态的过渡。
IV是错误的, 因为OS使用抢占式调度。
2)使用测试和设置指令来实现用于实现进程关键部分的enter_CS()和leave_CS()函数, 如下所示:
void enter_CS(X)
{
while test-and-set(X) ;
}
void leave_CS(X)
{
X = 0;
}
在上述解决方案中, X是与CS关联的内存位置, 并且被初始化为0。现在考虑以下语句:
I.上述解决CS问题的方法没有死锁
II.解决方案是无饥饿的。
III.进程按FIFO顺序输入CS。
IV多个进程可以同时进入CS。
以上哪个陈述是正确的?
(A)仅I
(B)I和II
(C)II和III
(D)仅IV
答案(A)
上面的解决方案是一个简单的test-and-set解决方案,它确保不会发生死锁,但它没有使用任何队列来避免饥饿或具有FIFO顺序。
3)与将虚拟地址转换为物理地址的单级页表相比, 多级页表更可取
(A)它减少了读取或写入内存位置的内存访问时间。
(B)它有助于减小实现进程的虚拟地址空间所需的页表的大小。
(C)转换后备缓冲区需要它。
(D)它有助于减少页面替换算法中的页面错误数。
答案(B)
页表的大小可能太大(请参考http://dysphoria.net/OperatingSystems1/4_multilevel_paging.html)以适合连续的空间。这就是为什么页表通常分为几层。
如果你发现任何答案/解释不正确, 或者你想分享有关上述主题的更多信息, 请写评论。