操作系统综合题之“采用记录型信号量机制实现上述两个进程的同步算法(代码补充)”
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);
}
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com