在2007门CS考试中提出了以下问题。
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) 由于内核级线程由内核管理,因此阻塞一个线程不会导致所有相关线程阻塞。这是用户级线程的问题。看见 这 更多细节。
请看 门角 所有上一年的论文/解决方案/解释、教学大纲、重要日期、笔记等。
如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论