操作系统期末试卷(含答案)
负责不断地将输入信息送入BUF1中,PRO进程负责从BUF1中取出信息进行处理,并将处理结果送到BUF2中,PUT进程负责从BUF2中读取结果并输出。试写出正确实现GET、PRO、PUT的同步与互斥的算法(要求:(1)用类C语言描述,条理清楚,注释恰当;(2)信号量原语统一使用wait和signal。)
GET 答:
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进程
图2 进程合作 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分)
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科操作系统期末试卷(含答案)(5)全文阅读和word下载服务。
相关推荐: