首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
今有3个并发进程R、M和P,互斥使用一个可循环使用的缓冲区B,缓冲区B共有n个单元(n>0)。进程R负责从输入设备读信息,每读一个字符后,把它们存放在缓冲区B的一个单元中,进程M负责处理读入字符,若发现读入的字符中有空格,则把它改变成“;”;进程P负责把处
今有3个并发进程R、M和P,互斥使用一个可循环使用的缓冲区B,缓冲区B共有n个单元(n>0)。进程R负责从输入设备读信息,每读一个字符后,把它们存放在缓冲区B的一个单元中,进程M负责处理读入字符,若发现读入的字符中有空格,则把它改变成“;”;进程P负责把处
admin
2017-04-28
45
问题
今有3个并发进程R、M和P,互斥使用一个可循环使用的缓冲区B,缓冲区B共有n个单元(n>0)。进程R负责从输入设备读信息,每读一个字符后,把它们存放在缓冲区B的一个单元中,进程M负责处理读入字符,若发现读入的字符中有空格,则把它改变成“;”;进程P负责把处理后的字符取出并打印输出。当缓冲区单元中的字符被进程P取出后,又可用来存放下一次读入的字符。请添加必要的信号量和P、V(或wait()、signal())操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
选项
答案
本题还是一个生产者.消费者的变型,与2009年真题不同之处在于,2009年真题是一个生产者,对应两个消费者;本题是生产者.消费生产者.消费者类型,其实质是两个生产者一消费者关系。R是生产者,M是对应消费者,同时M也充当生产者,P是对应的消费者。把这些进程间的关系理清楚,是解题的基础。 本题的缓冲区B可描述为 char bufferB[n]; (1)缓冲区是一互斥资源,因此设互斥信号量mutex。 (2)上述进程的同步问题,需设置3个信号量,其中empty对应空闲的缓冲单元,初值为n;full_1对应缓冲区中待M处理的字符,初值为0; fu11_2对应缓冲区中已经处理过而待打印输出的字符,初值为0。另外,还需定义3个整型变量m、out_1、out_2,分别用来指示下一个可存放字符的缓冲单元、下一个待M处理的缓冲单元及下一个待打印输出的缓冲单元,它们的初值均为0。 过程如下: char bufferB[n] //缓冲区字符数组。 semaphore empty=n; //空闲缓冲单元数 semaphore full_1=0; //待M处理韵字符数。 semaphore fu11_2=0; //待p取出打印字符数。 semaphore mutex=1; //缓冲区的互斥访问信号量 int in=0; //指示可存放字符的缓冲单元 int out 1=0; //指示下一个待M处理的缓冲单元 int out 2=0; //指示下一个待p取出打印的缓冲单元 R() { char ch; while (1) { 从输入设备读取一个字符到ch中; Pl{empty); //检查缓冲区是否有可以存放新读入字符的缓冲单元 P (mutex)j //申请访问缓冲区 bufferBein]=ch; //存放新读入字符的缓冲单元 V(mutex); //释放缓冲区 v(full_1); //待M处理的字符数增1 in=(in+1)%n; //in指针后移,遇末循环到0单元 } } M() //读者可参照R()自行写出注释 { while (1) { P(full1); P (mutex), if (bufferB[out 1]==’ ’) buffer[out 1]=’;’; V (mutex); V(full 2); out_1=fout 1+1)%n; } } P() //读者可参照R()自行写出注释 { char ch while (1) { P( fu11_2); P (mutex); ch=bufferB[out 2]; V (mutex); V (empty); out_2=(out 2+1) %n; 将字符ch打印输出; } }
解析
同步和互斥的解题思路为
(1)分清哪些是互斥问题(互斥访问临界资源的),哪些是同步问题(具有前后执行顺序要求的)。
(2)对互斥问题要设置互斥信号量,不管具有互斥关系的进程有几个或几类,通常都只设置一个互斥信号量,且初值为1,代表一次只允许一个进程对临界资源访问。
(3)对同步问题要设置同步信号量,通常同步信号量的个数与参与同步的进程种类有关,即同步关系涉及几类进程,就有几个同步信号量。同步信号量表示该进程是否可以开始或该进程是否已经结束。
(4)在每个进程中用于实现互斥的PV操作必须成对出现;用于实现同步的PV操作也必须成对出现,但可以分别出现在不同的进程中;在某个进程中如果同时存在互斥于同步的P操作,则其顺序不能颠倒,必须先执行对同步信号量的P操作,再执行对互斥信号量的P操作,但V操作的顺序没有严格要求。
转载请注明原文地址:https://kaotiyun.com/show/CXRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
古文经学家()为了反对今文经派根据隶定的古书穿凿附会而曲解经文,于是编成一部《说文解字》,共收小篆及其他古文字9353个,逐字注释其形体音义。
明中叶后,商业资本比较活跃,活动于全国范围的商人和商帮中最为著名的是()。
系统总结了6世纪以前黄河中下游地区农牧业生产经验的著作是()。
美国主张建立国际联盟的主要目的是()。
全国高校院系调整的具体时间是()。
第一个五年计划的具体时间段是()。
某32位机(机器字长32位)的一台外设通过32位总线与系统内存相连。CPU每秒执行100条指令,平均每条指令需要5个机器周期,其中3个周期必须访问内存,内存读写需一个机器周期,假定CPU在95%的时间内持续执行“背景程序”,且这段时间内不执行I/O指令。现
设有一个带头结点的循环单链表,其结点值均为正整数。试设计一个算法,反复找出单链表中结点值最小的结点,并输出之,然后将该结点从中删除,直到单链表空为止,最后再删除表头结点。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
已知一个带有表头结点的单链表,结点结构为:假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求:描述算
随机试题
学生是具有能动性的教育对象,但对所施加的影响并不是无条件地接受。这表明能动性具有()。
SunSing造纸公司已经成立多年,其厂址处在镇郊。这些年该城镇已经发展成为一个城市。SunSing造纸公司仍然在原来的经营地点,也就是如今接近市中心的地方。卡车将废纸运送到工厂中去,在工厂中将其加工成优质纸,而后再运送到各个地区去。许多人抱怨说该工厂
国际竞争对手分析主要是侧重从个别企业的角度,对竞争对手的因素来进行分析。()
卵巢肿瘤中最常见的并发症是
女性,25岁,5d前无明显诱因出现双下肢麻木无力,次日出现排尿困难,症状逐渐加重。发病前1周曾患“上呼吸道感染”。既往健康,否认疫苗接种史及外伤史。查体:神志清楚,语言流利,脑神经正常。双下肢肌力。级,肌张力降低,乳头水平以下痛觉减退,深感觉缺失。双侧腹壁
化学结构为的药物临床用作
设计人交付设计文件完成合同约定的设计任务后,发包人从项目预期效益考虑要求增加部分专业工程的设计内容。由于设计人当时承接的设计任务较多,在发包人要求的时间内无力完成变更增加的工:作,故发包人征得设计人同意后,将此部分的设计任务委托给另一设计单位完成。变更设计
请谈谈你对这幅漫画的看法。
1957年整风运动采取的形式是()
AnimalsontheMoveA)Itlookedlikeascenefrom"Jaws"butwithoutthedramaticmusic.Ahugesharkwasslowlyswimmingthrou
最新回复
(
0
)