以下问题已在 GATE 2009 CS 考试中提出。
1) 在以下单处理器系统的进程状态转换图中,假设总是有一些进程处于就绪状态: 现在考虑以下语句:
I. 如果一个进程进行转换 D,它将导致另一个进程立即进行转换 A。
二、处于阻塞状态的进程 P2 可以在另一个进程 P1 处于运行状态时进行转换 E。
三、操作系统使用抢占式调度。
四、操作系统使用非抢占式调度。
以上哪些说法是正确的?
(A) I 和 II
(B) I 和 III
(C) II 和 III
(D) II 和 IV
答案 (C)
我是假的。如果一个进程进行转换 D,它将导致另一个进程进行转换 B,而不是 A。
二是真的。当 I/O 完成时,一个进程可以进入就绪状态,而不管其他进程是否处于运行状态。
III 是正确的,因为存在从运行状态到就绪状态的转换。
IV 为假,因为操作系统使用抢占式调度。
2) enter_CS() 和 leave_CS() 函数实现进程的临界区是使用 test-and-set 指令实现的,如下所示:
void enter_CS(X)
{
while test-and-set(X) ;
}
void leave_CS(X)
{
X = 0;
}
在上面的解决方案中,X 是与 CS 关联的内存位置并被初始化为 0。 现在考虑以下语句:
一、上述CS问题的解决方案是无死锁的
二、解决方案是无饥饿。
三、进程按 FIFO 顺序进入 CS。
IV 可以有多个进程同时进入 CS。
以上哪些说法是正确的?
(A) 我只
(B) I 和 II
(C) II 和 III
(D) 仅 IV
答案 (A)
上面的解决方案是一个简单的测试和设置解决方案,可确保不会发生死锁,但它不使用任何队列来避免饥饿或具有 FIFO 顺序。
3) 与将虚拟地址转换为物理地址的单级页表相比,多级页表更受欢迎,因为
(A) 它减少了读取或写入内存位置的内存访问时间。
(B) 它有助于减少实现进程的虚拟地址空间所需的页表大小。
(C) 翻译后备缓冲区需要它。
(D) 它有助于减少页面替换算法中的页面错误数量。
答案 (B)
页表的大小可能会变得太大(参见这里)以适应连续空间。这就是页表通常按级别划分的原因。
请参阅 GATE Corner 了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。