进程同步考研问题
- 格式:wps
- 大小:550.12 KB
- 文档页数:90
操作系统作业【注意】对于作业中的选择题,都要求抄写题目(题中若有插图可不画),并在题目上填写答案。
作业1——进程同步(1)1.设有n个进程使用同一个共享变量,如果最多允许m(m < n)个进程同时进入相关临界区,则信号量的变化范围是。
A. n,n-1,...,n-mB. m,m-1,...1,0,-1,...m-nC. m,m-1,...1,0,-1,...m-n-1D. m,m-1,...1,0,-1,...m-n+12.对于有两个并发进程的系统,设互斥信号量为mutex,若mutex=0,则。
A. 表示没有进程进入与mutex相关的临界区B. 表示有一个进程进入与mutex相关的临界区C. 表示有一个进程进入与mutex相关的临界区,另一个进程等待进入D.表示有两个进程进入与mutex相关的临界区3.S.queue,S.value是信号灯S的两个组成部分,当S.queue为空时,S.value的值是( ) A.S.value≤0 B.S.value=0 C.S.value=1 D.Svalue≥04.如果信号量的当前值为-3,则表示系统中在该信号量上有个等待进程。
5.下列选项中,操作系统提供给应用程序的接口是。
(2010全国试题)A.系统调用B.中断C.库函数D.原语6.下列选项中,导致创建新进程的操作是。
(2010全国试题)I.用户登录成功II.设备分配III.启动程序执行A.仅I和II B.仅II和III C.仅I和III D.I、II和III7.设与某资源关联的信号量初值为3,当前值为1。
若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是。
(2010全国试题)A.0、1 B.1、0 C.1、2 D.2、0作业2——进程同步(2)1.如何利用信号量机制来实现多个进程对临界资源的互斥访问?2.四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F,但限制是进程A 和进程C不能同时读文件F,进程B和进程D也不能同时读文件F,为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题:(1)应定义的信号量及初值:。
考研操作系统-进程的同步与通信(总分:82.00,做题时间:90分钟)一、单项选择题(总题数:12,分数:24.00)1.相关临界区是指( )。
A.一个共享资源B.并发进程中涉及相同变量的那些程序段√C.并发进程中与共享变量有关的程序段D.一个独占资源2.下列关于P、V操作的说法中正确的是( )。
A.P、V操作是两个操作,而且都是原语操作√B.P、V操作中P操作可以不用原语方式,而V操作必须使用原语操作C.P、V操作是一个过程,同一般函数,过程一样,只是执行管理临界区的操作D.P、V操作中P操作必须使用原语方式,而V操作可以不使用原语操作3.由于并发进程之间( )不能由进程本身控制,当它们在共享某些资源的时候可能会产生与时间有关的错误。
A.分配外部设备B.分配内存空间C.执行的相对速度√D.占用存储器的位置4.下面对线程的描述中,错误的是( )。
A.同一进程中的线程可共享该进程的主存空间B.线程是调度和执行单位C.不同的线程可执行相同的程序D.线程是资源分配单位√5.如果有4个进程共享同一程序段,每次允许3个进程进入该程序段,若用P、V操作作为同步机制,则信号量的取值范围是( )。
A.4,3,2,1,-1B.2,1,0,-1,-2C.3,2,1,0,-1 √D.2,1,0,-2,-36.在进程通信中,( )常用信件交换信息。
A.低级通信B.高级通信√C.信息缓冲D.消息通信7.下列关于进程和线程的说法中正确的是( )。
A.线程是进程中可独立执行的子任务,一个进程可以包含一个或多个线程,一个线程可以属于一个或多个进程B.多线程技术具有明显的优越性,如速度快、通信简便、设备并行性高等√C.由于线程不作为资源分配单位,线程之间可以无约束地并行执行D.线程又称为轻型进程,因为线型都比进程小8.并发进程之间相互通信时两个基本的等待事件是( )。
A.等信件和等信箱√B.等消息和等信件C.等发送原语和接收原语D.等消息和等信箱9.对若干个并发进程共享某—变量的相关临界区的管理,下列说法中不正确的是( )。
2024年研究生考试考研计算机学科专业基础(408)复习试题(答案在后面)一、单项选择题(本大题有40小题,每小题2分,共80分)1、下列关于冯·诺依曼体系结构的叙述中,正确的是:A. 计算机由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
B. 指令和数据存放在不同的存储器中。
C. 冯·诺依曼体系结构的计算机硬件系统分为运算器、显示器和键盘三大部分。
D. 程序指令存储在内存中,但数据不能存储在内存中。
2、在计算机内部,数据通常采用哪种形式表示?A. 十进制B. 八进制C. 十六进制D. 二进制3、CPU可以直接访问的存储器是哪一个?A. 软盘B. 硬盘C. 内存D. 光盘4、在计算机网络中,以下哪项不是TCP/IP模型的层次结构之一?A. 网络接口层B. 网络层C. 应用层D. 物理层5、以下哪个算法是用于查找非平衡二叉搜索树中某个特定节点的最坏情况时间复杂度?A. 二分查找B. 中序遍历C. 平衡二叉搜索树查找D. 二叉树遍历6、以下哪个语言是用于实现编译原理的?A. JavaB. C++C. PythonD. Haskell7、在计算机系统中,地址总线的宽度决定了CPU可以直接寻址的内存空间大小。
如果某计算机系统的地址总线宽度为32位,则该CPU的最大直接寻址空间为:A. 4GBB. 8GBC. 16GBD. 32GB8、在数据结构中,队列是一种特殊的线性表,其特点是先进先出(FIFO)。
若在一个初始为空的队列中按照顺序插入元素A、B、C、D,然后执行两次删除操作,再插入元素E、F,接着再次执行两次删除操作,此时队列的队首元素是:A. AB. BC. CD. F9、在关系数据库中,两个表之间的连接是一种生成新表的操作,它将第一个表中的行与第二个表中的行匹配。
如果连接操作没有找到匹配项,则返回NULL。
假设我们有两个表:Table1(A, B),Table2(C, D),其中A与C是连接字段。
2015考研计算机学科专业基础综合真题及答案一、单项选择题:140小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项符合题目要求。
请在答题卡上将所选项的字母涂黑。
1.已知程序如下:int s(int n){ return (n<=0) ? 0 : s(n-1) +n; }void main(){ cout<< s(1); }程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是A.main()->S(1)->S(0) B.S(0)->S(1)->main()C.main()->S(0)->S(1) D.S(1)->S(0)->main()【参考答案】D【考查知识点】栈的基本概念和函数调用的原理。
2.先序序列为a,b,c,d的不同二叉树的个数是A.13 B.14 C.15 D.16【参考答案】C【考查知识点】二叉树的基本概念。
3.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫曼树的是A.24,10,5和 24,10,7 B.24,10,5和24,12,7C.24,10,10和 24,14,11 D.24,10,5和 24,14,6【参考答案】C【考查知识点】哈夫曼树的原理。
4.现在有一颗无重复关键字的平衡二叉树(AVL树),对其进行中序遍历可得到一个降序序列。
下列关于该平衡二叉树的叙述中,正确的是A.根节点的度一定为2 B.树中最小元素一定是叶节点C.最后插入的元素一定是叶节点 D.树中最大元素一定是无左子树【参考答案】B【考查知识点】树的中序遍历和AVL树的基本概念。
5.设有向图G=(V,E),顶点集V={V0,V1,V2,V3},边集E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是A.2 B.3 C.4 D.5【参考答案】D【考查知识点】图的深度优先遍历。
2015年全国硕士研究生入学统一考试计算机学科专业基础综合试题一、单项选择题:140小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项符合题目要求。
请在答题卡上将所选项的字母涂黑。
1.已知程序如下:int s(int n){ return (n<=0) ? 0 : s(n-1) +n; }void main(){ cout<< s(1); }程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是A.main()->S(1)->S(0) B.S(0)->S(1)->main()C.m ain()->S(0)->S(1) D.S(1)->S(0)->main()【参考答案】D【考查知识点】栈的基本概念和函数调用的原理。
2.先序序列为a,b,c,d的不同二叉树的个数是A.13 B.14 C.15 D.16【参考答案】C【考查知识点】二叉树的基本概念。
3.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫曼树的是A.24,10,5和24,10,7 B.24,10,5和24,12,7C.24,10,10和24,14,11 D.24,10,5和24,14,6【参考答案】C【考查知识点】哈夫曼树的原理。
4.现在有一颗无重复关键字的平衡二叉树(A VL树),对其进行中序遍历可得到一个降序序列。
下列关于该平衡二叉树的叙述中,正确的是A.根节点的度一定为2 B.树中最小元素一定是叶节点C.最后插入的元素一定是叶节点D.树中最大元素一定是无左子树【考查知识点】树的中序遍历和A VL树的基本概念。
5.设有向图G=(V,E),顶点集V={V0,V1,V2,V3},边集E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是A.2 B.3 C.4 D.5【参考答案】D【考查知识点】图的深度优先遍历。
2000年硕士生入学考试操作系统试题
(本部分共50分)
一.回答问题(以下4题,每题5分,共20分)
1.何谓进程?请图示具有基本进程状态的状态转移图,并指出转移原因。
2.何谓临界资源?使用临界资源的诸进程间如何实现进程同步。
3.何谓管程,管程是由哪几部分组成?说明引入管程的必要性。
4.说明发生死锁的原因及避免死锁的方法。
二.(以下2题,每题5分,共10分)
1.某进程完成一次i/o操作,从操作系统管理角度观察,应使用哪些软、硬件资源参与操作,请示图说明。
2.某请求页式存储管理,允许用户编程空间为32个页面(每页1KB),主存为16 KB,如有一用户程序有10页
长,且某时刻该用户页面映射表如图所示:
页面影射表
如果分别遇有以下三个虚地址:0AC5H、1AC5H、3AC5H处的操作,试计算并说明存储管理系统将如何处理。
三.(以下2题,每题5分,共10分)
1.请说明UNIX系统中,shell所处的地位及其功能如何。
2.UNIX文件系统中,已建立的文件将在系统中占用一定的资源。
请说明一个“未打开”的文件将占用哪些系统
资源。
四.(本题10分)
一组合作进程,执行顺序如图所示。
请用P、V、操作实现各进程之间的同步操作。
P1 P2 P4。
操作系统考研题题型1.1操作系统⽬标和作⽤1、下列选择中,哪些不是操作系统关⼼的主要问题。
(浙⼤2003)(1)管理计算机裸机;(2)设计提供⽤户与计算机硬件系统间的界⾯;(3)管理计算机系统资源;(4)⾼级程序设计语⾔的编译器。
2、说明操作系统与硬件、其他系统软件以及⽤户之间的关系。
3、选择:从⽤户⾓度看,操作系统是()。
(选项:计算机资源的管理者;计算机⼯作流程的组织者;⽤户与计算机之间的接⼝;由按层次结构组成的软件模块的集合。
)1.2操作系统发展过程1、引⼊多道程序技术的前提条件之⼀是系统具有()(西电00)(1)多个cpu;(2)多个终端;(3)中断功能;(4)分时功能2、判断:所谓多道程序设计,即指每⼀时刻有若⼲个进程在执⾏。
(南京⼤学00)3、判断:采⽤多道程序设计的系统中,系统的程序道数越多,系统效率越⾼。
(西电01)4、判断:由于采⽤了分时技术,⽤户可以独占计算机的资源。
5、分布式操作系统与⽹络操作系统本质上的不同之处在于(实现各计算机之间的通信;共享⽹络中的资源;满⾜较⼤规模的应⽤;系统中若⼲台计算机相互协同完成同⼀任务)6、若程序A和B单独执⾏时分别⽤TA和TB,TA=1h,TB=1.5h,其中处理器⼯作时间分别为TA=18min,TB=27min。
如果采⽤多道程序设计⽅法,让A,B并⾏⼯作,假定处理器利⽤率达到50%,另加15min 系统开销,请问系统效率提⾼百分之⼏?7、在操作系统中引⼊并发可以提⾼系统效率,若有两个程序A和B,A程序执⾏时所做的⼯作按次序需要⽤cpu:10s,设备1:5s,cpu:5s,设备2:10s,cpu10s;程序B 执⾏时所做的⼯作按次序需要⽤设备1:10s,cpu:10s,设备2:5s,cpu:5s,设备2:10s。
如果在顺序环境下执⾏两个程序,则cpu的利⽤率为();如果在并发环境下执⾏两个程序,则cpu的利⽤率为()。
8、设某计算机系统有⼀个cpu、⼀台输⼊设备、⼀台打印机。
第4章进程同步与进程通信第4章进程同步与进程通信⼀、填空1.信号量的物理意义是当信号量值⼤于零时表⽰可⽤资源个数;当信号量值⼩于零时,其绝对值为等待进程个数。
2.所谓临界区是指进程程序中。
3.⽤P、V操作管理临界区时,⼀个进程在进⼊临界区前应对信号量执⾏p 操作,退出临界区时应对信号量执⾏v 操作。
4.有m个进程共享⼀个临界资源。
若使⽤信号量机制实现对临界资源的互斥访问,则该信号量取值最⼤为 1 ,最⼩为1-m 。
5.对信号量S的P操作原语中,使进程进⼊相应信号量队列等待的条件是s<0 。
6.信箱在逻辑上被分为信箱头和信箱体两部分。
7.在操作系统中进程间的通信可以分为⾼级通信与低级通信两种。
⼆、选择1.P、V操作是。
A.两条低级进程通信原语B.两条⾼级进程通信原语C.两条系统调⽤命令D.两条特权指令2.进程的并发执⾏是指若⼲个进程。
A.共享系统资源B.在执⾏的时间上是重叠的C.顺序执⾏D.相互制约3.若信号量S初值为2,当前值为?1,则表⽰有个进程在与S相关的队列上等待。
A.0 B.1 C.2 D.34.⽤P、V操作管理相关进程的临界区时,信号量的初值应定义为。
A.?1 B.0 C.1D.随意5.⽤V操作唤醒⼀个等待进程时,被唤醒进程的状态变为。
A.等待B.就绪C.运⾏D.完成6.若两个并发进程相关临界区的互斥信号量MUTEX现在取值为0,则正确的描述应该是。
A.没有进程进⼊临界区(MUTEX=1)B.有⼀个进程进⼊临界区(MUTEX=0)C.有⼀个进程进⼊临界区,另⼀个在等待进⼊临界区(MUTEX=-1)D.不定7.信箱通信是进程间的⼀种通信⽅式。
A.直接B.间接C.低级D.信号量三、问答1.进程A 和B 共享⼀个变量,因此在各⾃的程序⾥都有⾃⼰的临界区。
现在进程A 在临界区⾥。
试问进程A 的执⾏能够被别的进程打断吗(可以)?能够被进程B 打断吗(这⾥,“打断”的含义是调度新进程运⾏,使进程A 暂停执⾏)(不可以)?2.信号量上的P 、V 操作只是对信号量的值进⾏加1或减1操作吗(否)?在信号量上还能够执⾏除P 、V 操作外的其他操作吗?(不能)3. 进程在运⾏时存在哪两种形式的制约?并举例说明之。
操作系统原理-考研真题详解1下列关于线程的描述中,错误的是()。
[2019年408统考]A.内核级线程的调度由操作系统完成B.操作系统为每个用户级线程建立一个线程控制块C.用户级线程间的切换比内核级线程间的切换效率高D.用户级线程可以在不支持内核级线程的操作系统上实现【答案】B查看答案【解析】用户级线程仅存在于用户空间中,与内核无关,其线程库对用户线程的调度算法与OS的调度算法无关,不需要操作系统为每个用户级线程建立一个线程控制块。
2下列选项中,可能将进程唤醒的事件是()。
[2019年408统考] Ⅰ.I/O结束Ⅱ.某进程退出临界区Ⅲ.当前进程的时间片用完A.仅ⅠB.仅ⅢC.仅Ⅰ、ⅡD.Ⅰ、Ⅱ、Ⅲ【答案】C查看答案【解析】可能唤醒进程的事件包括I/O结束、某进程退出临界区等。
当前进程的时间片用完会引起另一个进程的调度并运行,不是唤醒进程。
3下列关于系统调用的叙述中,正确的是()。
[2019年408统考] Ⅰ.在执行系统调用服务程序的过程中,CPU处于内核态Ⅱ.操作系统通过提供系统调用避免用户程序直接访问外设Ⅲ.不同的操作系统为应用程序提供了统一的系统调用接口Ⅳ.系统调用是操作系统内核为应用程序提供服务的接口A.仅Ⅰ、ⅣB.仅Ⅱ、ⅢC.仅Ⅰ、Ⅱ、ⅣD.仅Ⅰ、Ⅲ、Ⅳ【答案】C查看答案【解析】系统调用接口是连接操作系统和应用程序的桥梁,而接口是以具体程序中的函数实现的,称之为系统调用,在不同的操作系统中,具有不同的系统调用,但是它们实现的功能是基本相同的。
4下列选项中,可用于文件系统管理空闲磁盘块的数据结构是()。
[2019年408统考]Ⅰ.位图Ⅱ.索引节点Ⅲ.空闲磁盘块链Ⅳ.文件分配表(FAT)A.仅Ⅰ、ⅡB.仅Ⅰ、Ⅲ、ⅣC.仅Ⅰ、ⅢD.仅Ⅱ、Ⅲ、Ⅳ【答案】B查看答案【解析】文件系统管理空闲磁盘块的数据结构包括位图、链表、文件分配表。
索引结点是指在许多类Unix文件系统中的一种数据结构。
每个索引节点保存了文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。
进程同步问题A. 生产者-消费者问题类1.(西北工大2000年试题)由三个进程get,copy和put以及两个缓冲区buffer1和buffer2完成一项输入/输出操作。
进程get的功能是把一张卡片上的信息从读卡机上读进buffer1;进程copy的功能是把buffer1中的信息复制到buffer2;进程put的功能是取出buffer2中的信息并从打印机上打印输出。
试用P、V操作完成这三个进程间的尽可能并发正确执行的关系(用程序或框图表示),并指明信号量的作用和初值。
解:可设置6个信号量mutex1,mutex2,empty1,empty2,full1,full2。
其中:mutex1和mutex2是互斥信号量,初值为1,分别用于对buffer1和buffer2的互斥访问;empty1和empty2为同步信号量,初值为1,分别表示buffer1和buffer2是否空闲,1表示空闲,0表示不空闲;full1和full2为同步信号量,初值为0,分别表示buffer1和buffer2中是否有可取用的信息,1表示有可取用的信息,0表示无可取用的信息。
semaphore mutex1, mutex2, empty1, empty2, full1, full2 ;mutex1=mutex2=1; //互斥信号量empty1=empty2=1; //生产者进程的同步信号量full1=full2=0; //消费者进程的同步信号量parbeginprocess get( ) //读进程(生产者进程){while (1) {从读卡机读入一张卡片的信息;P(empty1) //看看buffer1是否空闲P(mutex1); //互斥访问buffer1将信息放入buffer1;V(mutex1);V(full1); //通知进程copy,buffer1中已有信息科取(若copy正在等待,则唤醒之)}}process copy( ) //复制进程(既是消费者又是生产者进程){while (1) {P(full1) //看看buffer1是否有信息可取P(mutex1); //互斥访问buffer1从buffer1中复制出信息;V(mutex1);V(emtpy1); //通知get,buffer1中的信息已取走(可能唤醒get)P(empty2); //看看buffer2是否空闲P(mutex2); //互斥访问buffer2将复制的信息放入buffer2;V(mutex2);V(full2); //通知put,buffer2中已有信息}}process put( ) //输出进程(消费者进程){while (1) {P(full2); //测试buffer2中是否有信息P(mutex2); //互斥访问buffer2从buffer2中取出信息;V(mutex2);V(empty2); //通知copy,buffer2中的信息已取走}}parend【讨论】由于本题中对于两个缓冲区buffer1和buffer2来说,都只有一个生产者和一个消费者,因此互斥信号量mutex1和mutex2实际上是可以省去的。
以下第2、3、4题实际上与本题是同一道题。
2.(北京大学1990年试题)有三个进程PA、PB和PC协作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。
缓冲区的大小和一个记录大小一样。
试用P、V操作来保证文件的正确打印。
解:BEGINsemaphore mutex1,mutex2,avail1,avail2,full1,full2;mutex1 := 1;mutex2 := 1;{实际上mutex1,mutex2可以省去}avail1 := 1;avail2 := 1;full1 := 0;full2 := 0;PARBEGINPA:BEGINL1:read from disk;P(avail1);P(mutex1);put to buffer 1;V(full1);V(mutex1);goto L1;ENDPB:BEGINL2:P(full1);P(mutex1);get from buffer 1;V(avail1);V(mutex1);P(avail2);P(mutex2);put to buffer 2;V(full2);V(mutex2);goto L2 ;ENDPC:BEGINL3:P(full2);P(mutex2);get from buffer 2;V(avail2);V(mutex2);print RECORDgoto L3 ;ENDPARENDEND3.有三个进程,Reader进程读入数据number1,将其放入缓冲器B1,Executor进程将B1中数据取出,处理成数据number2,将其放入缓冲器B2,Printer进程将number2数据取出打印,假设B1和B2只能存放一个数据,用P、V操作管理这三个进程的执行。
解:解:采用P、V操作的同步算法如下:BEGINsemaphore empty1, full1, empty2, full2 ;empty1.vale = empty2.value = 1 ;ful2.value = full2.value = 0 ;PARBEGINReader:BEGINL1:read number1 ;P(empty1) ;B1=number1 ;V(full1) ;goto L1;ENDExecutor:BEGINL2:P(full1) ;take number1 from B1 ;V(empty1) ;Process number1-->number2 ;P(empty2) ;B2=number2 ;V(full2) ;goto L2;ENDPrinter:BEGINL3:P(full2);take number2 from B2 ;V(empty2) ;Print(number2) ;goto L3;ENDCOENDEND4.假定系统有三个并发进程read, move和print共享缓冲器B1和B2。
进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。
进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。
进程print将B2中的记录取出打印输出。
缓冲器B1和B2每次只能存放一个记录。
要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。
请用PV操作,写出它们的并发程序。
(注:本题与第3题是同一个题,与第5题类似)解:参考程序如下:beginSR, SM1, SM2, SP: semaphore;B1, B2 : record;SR:=1; SM1:=0; SM2=1; SP:=0;cobeginprocess readX : recoed;beginR: X:=从输入设备上读入的一个记录;P(SR);B1:=X;V(SM1);goto R;end;process moveY : record;beginM: P(SM1);Y :=B1;V(SR);加工Y中的记录;P(SM2);B2 := Y;V(SP);goto M;end;process printZ : record;beginP: P(SP);Z := B2;V(SM2);打印Z中的记录;goto P;end;coend;end;5.今有3个并发进程R、M、P,它们共享一个缓冲器B。
进程R负责从输入设备读入信息,每读一个记录后把它存放在缓冲器B中。
进程M在缓冲器B中加工进程R存入的记录。
进程P把加工后的记录打印出来。
缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可以存放一个新的记录。
为协调它们的工作,采用PV操作进行管理。
解:semaphore SR,SM,SP;SR=1; SM=0; SP=0;parbeginProcess R{while (1) {从输入设备读入信息X;P(SR); //看看缓冲区B是否是空的B=X; //信息存入缓冲区BV(SM); //通知M,缓冲区B中已有记录}}Process M{while (1) {P(SM); //测试R是否已在B中存放信息在缓冲器B中加工进程R存入的记录;V(SP); //通知P缓冲区B中的信息已可打印}}Process P{while (1) {P(SP); //测试M是否已将信息加工好从B中取M加工后的信息Y;V(SR); //通知R,缓冲区B已可房信息Print(Y); //打印信息Y}}parend6.若一只盘子一次只能放一个水果,A只往盘中放苹果,B只往盘中放梨子,C只从盘中取苹果,D只从盘中取梨子。
试用:(1) 信号量和P、V操作;(2) 管程,写出同步算法。
解:(1) 采用P、V操作的同步算法如下:semaphore SAB=1; //A、B的资源信号量,同时又是它们的互斥信号量semaphore SC=0; //C的资源信号量(用于与A同步)semaphore SD=0; //D的资源信号量(用于与B同步)beginparbeginprocess A: //进程A的算法描述{while(true) {取一个苹果;wait(SAB); //测试盘子是否为空将一苹果放入盘中;signal(SC) //通知C盘中已有苹果(可能唤醒C)}}process C:{while(true) {wait(SC); //测试盘子是否有苹果从盘中取出苹果;signal(SAB); //通知A(或B)盘子一空(可能唤醒A或B)消费该苹果;}}process B: //进程B的算法描述{while(true) {取一个梨子;wait(SAB); //测试盘子是否为空将一梨子放入盘中;signal(SD) //通知D盘中已有梨子(可能唤醒D)}}process D:{while(true) {wait(SD); //测试盘子是否有梨子从盘中取出梨子;signal(SAB); //通知A(或B)盘子一空(可能唤醒A或B)消费该梨子;}}parendend(2) 采用管程的同步算法如下:首先定义管程MPC,该管程可描述如下:type MPC=monitorvar flag: integer; //flag=0:盘中无水果;=1盘中有苹果;=2盘中有梨子empty: condition; //用于A或B等待空盘子W: array[1..2] of condition //W[1]用于等待苹果,W[2]用于等待梨子procedure entry put(integer k)beginif flag>0 then empty.wait; //生产者A或B进程阻塞flag=k;放一k号水果入盘中; //设1号水果为苹果,2号水果为梨子if W[k].queue then full.signal; //若有等待k号水果者,则唤醒之endprocedure entry get(integer k)beginif flag<>k then W[k].wait; //消费者C或D进程阻塞从盘中取k号水果;flag := 0;if empty.queue then empty.signal; //若等待队列非空,则唤醒队首的一个生产者进程endbeginflag :=0; //初始化内部数据endA、B、C、D四个进程的同步算法可描述如下:parbeginProcess Abegin任取一个苹果;MPC.put(1);endProcess Bbegin任取一个梨子;MPC.put(2);endProcess CbeginMPC.get(1);吃苹果;endProcess DbeginMPC.get(2);吃梨子;endparend7.设自行车生产车间有两个货架,货架A可以存放8个车架,货架B可以存放20个车轮;又设有4个工人,他们的活动是重复劳动,分别为:工人1 加工一个车架放入货架A中;工人2、3分别加工车轮放入货架B中(每人每次放入1个车轮);工人4从货架A中取一个车架,再从货架B中取两个车轮,组装成一辆自行车。