(2)进程调度、中级调度(2分)
说明:论述条理清晰,包含上述要点,本题即可得满分
四、综合题(本大题共2小题,第1题9分,第2题13分,计22分)
34、(9分)在一个请求分页系统中,假设系统分配给某进程的物理块数为3,开始时内存为空,执行如下访问页号序列:
1,2,3,4,1,2,5,1,2,3,4,5
试说明采用先进先出(FIFO) 、最近最少使用(LRU)和最佳置换算法(OPT)进行页面置换时,缺页次数各是多少? 答:(1)FIFO: 9次 (3分)
(2)LRU:10次 (3分) (3)OPT:7次 (3分)
说明:没有计算过程,本题不得分。如果结果有误,根据步骤酌情给分。
35、(13分)如图2所示,系统中有三个进程GET、PRO和PUT,共用两个缓冲区BUF1和BUF2。假设BUF1中最多可放11个信息,现已放入了两个信息;BUF2最多可放5个信息。GET进程负责不断地将输入信息送入BUF1中,PRO进程负责从BUF1中取出信息进行处理,并将处理结果送到BUF2中,PUT进程负责从BUF2中读取结果并输出。试写出正确实现GET、PRO、PUT的同步与互斥的算法(要求:(1)用类C语言描述,条理清楚,注释恰当;(2)信号量原语统一使用wait和signal。)
GET BUF1 PRO BUF2 PUT 图2 进程合作
答:
semaphore
empty1=9;//空buf1的数目 full1=2; //有数据的buf1的数目 empty2=5; //空buf2的数目 full1=0; //有数据的buf2的数目 mutex1=mutex2=1; //互斥信号量 int main(){
Cobegin //并发开始 GET(); PRO(); PUT();
Coend //并发结束 return 0; } (3分) //GET进程 void GET(){ while(1) { …
wait(empty1); wait(mutex1); 将信息送入buf1; signal(mutex1); signal(full1); … }
} (3分) //PRO进程 void PRO(){ while(1) {
wait(full1); wait(mutex1); 从buf1中取出信息; signal(mutex1);
signal (empty1); wait(empty2); wait(mutex2); 将信息送入buf2; signal(mutex2); signal(full2); } } (4分) //PUT进程 void PUT(){ while(1) {
wait(full2); wait(mutex2); 从buf2中取出信息; signal(mutex2); signal (empty2); } (3分)