首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
系统中有多个生产者进程和多个消费者进程,共享一个能存放1000件产品的环形缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待;当缓冲区未空时,消费者进程可以从缓冲区取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出10
系统中有多个生产者进程和多个消费者进程,共享一个能存放1000件产品的环形缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待;当缓冲区未空时,消费者进程可以从缓冲区取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出10
admin
2015-12-30
25
问题
系统中有多个生产者进程和多个消费者进程,共享一个能存放1000件产品的环形缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待;当缓冲区未空时,消费者进程可以从缓冲区取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出10件产品后,其他消费者进程才可以取产品。请使用信号量P,V(或waitt(),signal()操作实现进程间的互斥与同步,要求写出完整的过程,并说明所用信号量的含义和初值。
选项
答案
这是典型的生产者和消费者问题,只对典型问题加了一个条件,只需在标准模型上新加一个信号量,即可完成指定要求。 设置四个变量mutex1、mutex2、empty和full,mutex1用于一个控制一个消费者进程一个周期(10次)内对于缓冲区的控制,初值为1,mutex2用于进程单次互斥的访问缓冲区,初值为1,empty代表缓冲区的空位数,初值为0,full代表缓冲区的产品数,初值为1000,具体进程的描述如下: semaphore mutex1=1; semaphore mutex2=1, semaphore empty=n; semaphore full=0; producer(){ while(1){ 生产一个产品; P(empty);//判断缓冲区是否有空位 P(mutex2);//互斥访问缓冲区 把产品放入缓冲区; V(mutex2),//互斥访问缓冲区 V(full);//产品的数量加1 } } consumer()( while(1){ P(mutex1)//连续取10次 for(int i=0;i<=10;++i){ P(full);//判断缓冲区是否有产品 P(mutex2);//互斥访问缓冲区 从缓冲区取出一件产品; V(mutex2);//互斥访问缓冲区 V(empty);//腾出一个空位 消费这件产品; } V(mutex1) } }
解析
转载请注明原文地址:https://jikaoti.com/ti/ZrfjFFFM
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
苏州的踹工、织工、纸工、烛业工人,景德镇的陶瓷工、门头沟的煤矿工、北京的香工,云南的矿工、广州的织工、陕西的木工和铁工等,均爆发过反对雇主克扣工价、开除工匠和要求增加工银的()斗争。
维也纳会议争论的焦点问题是()。
公元5世纪晚期,北方农民的生产和生活较为稳定的最主要原因是政府()。
中古时代实行索贡巡行赋税征收方式的国家是()。
欧洲历史上第一部系统完备的法典是()。
重庆谈判的焦点问题是()
(北魏孝文帝)“初谋南迁,恐众心恋旧,乃示为大举,因以胁定群情,外谋南伐,其实迁也。1日人怀土,多不所愿,内惮南征,无敢言者。于是定都洛阳。”上引材料不能说明的问题是()。
下面条约没有涉及德国的赔款问题的是()。
某32位机(机器字长32位)的一台外设通过32位总线与系统内存相连。CPU每秒执行100条指令,平均每条指令需要5个机器周期,其中3个周期必须访问内存,内存读写需一个机器周期,假定CPU在95%的时间内持续执行“背景程序”,且这段时间内不执行I/O指令。现
以下()协议完成了从网卡到IP地址的映射。
随机试题
A、血尿素氮超过正常B、夜尿量超过750mlC、内生肌酐清除率D、酚红排泄试验低于正常E、内生肌酐清除率低于正常提示早期肾功能不全的是()
以下哪项是糖尿病酮症酸中毒昏迷治疗的主要措施
A.肝肠循环B.首关消除C.一级动力学消除D.零级动力学消除E.稳态血药浓度
组织结构模式可用()束描述。
依据《增值税暂行条例》的规定,下列货物中适用13%的征税率的有()。
县级以上人民政府土地行政主管部门履行监督检查职责时,有权采取的措施有()。
依靠专家的意见和知识,通过理性、客观和系统化的分析,处理社区问题的过程被称为()。
事故所处的阶段一般分为()。
教学反思是教师对已完成的课堂教学活动进行总结的一种重要教研形式,教学反思的主要内容不包括()。
在计算机系统中,_____________是指在CPU执行程序的过程中,由于发生了某个事件,需要CPU暂时中止正在执行的程序,转去处理这一事件,之后又回到原先被中止的程序,接着中止前的状态继续向下执行。
最新回复
(
0
)