在多个生产者-消费者问题中,设置信号量mutex,初值为1,用于实现临界区(环形缓冲池)的互斥;信号量empty,初值为k,用于

作者:高老师 浏览 1

在多个生产者-消费者问题中,设置信号量mutex,初值为1,用于实现临界区(环形缓冲池)的互斥;信号量empty,初值为k,用于表示缓冲池中空缓冲区的数目;信号量full,初值为0,i表示空缓冲区的头指针,j表示有产品缓冲区的头指针。该算法的描述程序如下所示,请在有序号的空行上填写适当的关于信号量mutex、empty和full的P、V操作或缓冲区头指针变化的赋值语句。


【正确答案】:①P(mutex)②V(full)③P(mutex)④j=(j+1)mod k⑤V(empty)
【题目解析】:该题为书上的例题,注意事项如下:(1)互斥型信号量:P(mutex)和V(mutex)必须成对出现(2)资源信号量:empty、full的P操作和V必须成对出现,且分别处于相互合作的不同进程中。(3)信号量的顺序:多个P不能颠倒,首先执行对资源信号量empty或full的P操作,然后再执行对互斥信号量mutex的P操作,V操作顺序无关。(4)i=(i+1)mod k 或者j=(j+1)mod k,对k的取余操作是为了保证环形缓冲区不会越界。

📱 扫码体验刷题小程序

微信小程序二维码

扫一扫使用我们的微信小程序

热门题目

已复制到剪贴板