操作系统综合题之“采用记录型信号量机制实现上述两个进程的同步算法(代码补充)”

1.问题:设有无穷多个整数缓冲区(即为无界缓冲池),A进程从输入设备逐个地读入整数并写入缓冲区,B进程则逐个地从缓冲区取出整数进行打印。其中存放整数的变量为item,缓冲区名为buffer,读取过程使用函数getAItem(int * item)来完成,而打印整数使用函数printAItem(int item)来完成。请用记录型信号量机制实现上述两个进程的同步算法,要求:补充完整下列算法程序中带标号处空缺的内容。(注:每个空缺部分的代码可能是多行代码)

structure semaphore full;

int buffer[];// 缓冲区

int in,out;// 缓冲区的入口指针量和出口指针量

____(1)______

 

void processA()

{

int item;// 存放整数的变量

____(2)______

}

 

void processB()

{

int item;// 存放整数的变量

____(3)______

}

 

 2.参考答案

答:

(1)in = 0;out = 0;full.value = 0;

(2)while(TRUE){

getAItem(&item);

buffer[in++] = item;

signal(full);

}

(3)while(TRUE){

wait(full);

item = buffer[out++];

printAItem(item);

}

 

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