📜  操作系统 | 13套

📅  最后修改于: 2021-09-28 09:55:28             🧑  作者: Mango

以下问题已在 GATE CS 2007 考试中提出。

1) 虚拟内存系统使用先进先出 (FIFO) 页面替换策略,并为进程分配固定数量的帧。考虑以下语句:
P:增加分配给进程的页帧数有时会增加缺页率。
问:有些程序不显示参考位置。以下哪一项是正确的?

(A) P 和 Q 都为真,Q 是 P 的原因
(B) P 和 Q 都是真的,但 Q 不是 P 的原因。
(C) P 为假,但 Q 为真
(D) P 和 Q 都是假的。

答案 (B)
P是真的。增加分配给进程的页框数量可能会增加数量。页错误(见 Belady 的异常)。
Q 也是如此,但 Q 不是 -P 的原因,因为 Belady 异常发生在某些特定的页面引用模式中。

2) 单处理器系统具有三种资源类型X、Y和Z,由三个进程共享。每种资源类型有 5 个单位。考虑以下场景,其中 alloc 列表示分配给每个进程的每种资源类型的单元数,而 request 列表示进程为完成执行而请求的每种资源类型的单元数。这些过程中的哪一个将最后完成?

alloc           request
    X Y Z            X Y Z
P0  1 2 1            1 0 3
P1  2 0 1            0 1 2
P2  2 2 1            1 2 0

(一) P0
(二) P1
(C) P2
(D) 以上都不是,因为系统处于死锁

答案 (C)
一旦分配了所有资源(分别为 X、Y 和 Z 的 5、4 和 3 个实例),则剩下 X、Y 和 Z 的 0、1 和 2 个实例。只能满足 P1 的需要。所以P1可以先完成它的执行。一旦 P1 完成,它会分别释放 2、1 和 3 个单位的 X、Y 和 Z。在P0和P2中,只能满足P0的需要。这样 P0 就完成了它的执行。最后,P2 完成执行。

3) P1 和 P2 两个进程需要访问代码的临界区。考虑进程使用的以下同步构造:这里, Wants1 和 Wants2 是共享变量,它们被初始化为 false。关于上述结构,以下哪一项是正确的?

/* P1 */
while (true) {
  wants1 = true;
  while (wants2 == true);
  /* Critical
    Section */
  wants1=false;
}
/* Remainder section */       


/* P2 */
while (true) {
  wants2 = true;
  while (wants1==true);
  /* Critical
    Section */
  wants2 = false;
}
/* Remainder section */

(A) 它不保证互斥。
(B) 它不能确保有界等待。
(C) 要求进程严格交替进入临界区。
(D) 它不防止死锁,但保证互斥。

答案 (D)

上述同步结构不能防止死锁。当 Wants1 和 Wants2 都为真时,P1 和 P2 永远停留在它们的 while 循环中等待对方完成。

4) 考虑以下关于用户级线程和内核级线程的陈述。以下哪一项陈述是错误的?
(A) 内核级线程的上下文切换时间比用户级线程长。
(B) 用户级线程不需要任何硬件支持。
(C) 相关的内核级线程可以在多处理器系统中的不同处理器上进行调度。
(D) 阻塞一个内核级线程阻塞所有相关线程。

答案 (D)
由于内核级线程由内核管理,因此阻塞一个线程不会导致所有相关线程都阻塞。这是用户级线程的问题。有关更多详细信息,请参阅此内容。

请参阅 GATE Corner 了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。