操作系统|集13

在2007门CS考试中提出了以下问题。

null

1) 虚拟内存系统使用先进先出(FIFO)页面替换策略,并为进程分配固定数量的帧。请考虑以下陈述: P:增加分配给进程的页面帧数有时会增加页面错误率。 问:有些程序没有显示参考位置。以下哪一项是正确的? (A) P和Q都是真的,Q是P的原因 (B) P和Q都是真的,但Q不是P的原因。 (C) P是假的,但Q是真的 (D) P和Q都是假的。

答复(B) P是真的。增加分配给进程的页面帧数可能会增加页面错误的数量(请参阅 贝拉迪畸形 ). Q也是正确的,但Q不是-P的原因,因为Belady的异常出现在某些特定的页面引用模式中。

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

 
    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

(A) P0 (B) P1 (C) P2 (D) 以上都没有,因为系统处于死锁状态

答复(C) 一旦分配了所有资源(分别为X、Y和Z的5、4和3个实例),就剩下0、1和2个X、Y和Z实例。只有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) 由于内核级线程由内核管理,因此阻塞一个线程不会导致所有相关线程阻塞。这是用户级线程的问题。看见 更多细节。

请看 门角 所有上一年的论文/解决方案/解释、教学大纲、重要日期、笔记等。

如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享