操作系统综合题之“采用记录型信号量机制实现进程INPUT、PROCESS和OUTPUT的同步算法(代码补充)”

1.问题:系统中有有三个进程INPUT、PROCESS和OUTPUT,共用两个缓冲区BUF1和BUF2。假期设BUF1中最多可放10个数据,现已放入了2个数据;BUF2最多可放5个数据。INPUT进程负责不断将输入的原始数据推送入BUF1,PROCESS进程负责从BUF1中取出原始数据进行处理,并将处理后的结果数据送入到BUF2中,OUTPUT进程负责从BUF2中读取结果数据并输出。请采用记录型信号量机制,实现进程INPUT、PROCESS和OUTPUT的同步算法。补充完成下列带标号处空缺的内容。(注:空缺处可能有多行代码)

struct semaphore empty1,full1,empty2,full2;// 对应BUF1、BUF2空、满的信号量

____(1)______

void process INPUT()

{

____(2)______

}

void process PROCESS()

{

____(3)______

}

void process OUTPUT()

{

____(4)______

}

 2.参考答案

答:

(1)full1.value = 2; empty1.value = 8;full2.value = 0; empty2.value = 5

(2)

while(TRUE){

wait(empty1);

将原始数据送入数据BUF1;

signal(full1);

}

(3)

while(TRUE){

wait(full1);

将BUF1中取出的原始数据进行处理;

signal(empty1);

wait(empty2);

将处理后的结果数据送到BUF2中;

signal(full2);

}

(4)

while(1){

wait(full2);

从BUF2中读取结果数据并输出;

signal(empty2);

}

 

posted @ 2024-03-20 18:16  骚哥  阅读(35)  评论(0编辑  收藏  举报