历年操作系统考研真题 下载本文

【参考答案】D

【考查知识点】页面分配策略和页面置换策略的概念和相应的方法。

45. 有A、B 两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问 题。将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中,设A 的信箱 最多放M 个邮件,B 的信箱最多放N 个邮件。初始时A 的信箱中有x 个邮件 (0

While(TRUE){

从A 的信箱中取出一个邮件; 回答问题并提出一个新问题; 将新邮件放入B 的信箱; } } B{

While(TRUE){

从B 的信箱中取出一个邮件; 回答问题并提出一个新问题; 将新邮件放入A 的信箱; } }

Code End

当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。 当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。

请添加必要的信号量和P、V(或wait, signed)操作,以实现上述过程的 同步,要求写出完整过程,并说明信号量的含义和初值。

【参考答案】

Semaphore mutexA=1; Semaphore mutexB=1; Semaphore emptyA=M; Semaphore emptyB=N; Semaphore fullA=0; Semaphore fullB=0; Code Begin

A{

While(TRUE){ P(fullA); P(mutexA)

Get a mail from A_mailbox; V(mutexA); V(fullA);

Answer the question and raise a question;

P(emptyB); P(mutexB)

send the mail to B; V(mutexB); V(emptyB); } } B{

While(TRUE){ P(fullB); P(mutexB)

Get a mail from B_mailbox; V(mutexB); V(fullB);

Answer the question and raise a question; P(emptyA); P(mutexA)

send the mail to A; V(mutexA); V(emptyA); } }

Code End

【考查知识点】考察了利用信号量进程同步问题。