第2章:进程控制与同步.doc_第1页
第2章:进程控制与同步.doc_第2页
第2章:进程控制与同步.doc_第3页
第2章:进程控制与同步.doc_第4页
第2章:进程控制与同步.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章*基本题 2*一,单项选择题1,在进程管理中,当_时,进程从阻塞状态变为就绪状态。 A 进程被进程调度程序选中 B 等待某一事件 C 等待的时间发生 D 时间片用完2,分配到必要的资源并获得处理机是机的进程状态是_。 A 就绪状态 B 执行状态 C 阻塞状态 D 撤消状态3,p,v原语是_。 A 两条低级进程通信原语 B 两条不同的机器指令 C 两条系统调用命令 D 两条高级进程通信原语4,对进程的管理和控制使用_。 A 指令 B 原语 C 信号量 D 信箱通信5,进程的并发执行是若干个进程_。 A 同时执行 B 在执行的时间上是重叠的 C 在执行的时间上是不可重叠的 D 共享系统资源6,若p,v操作的信号量s是初值为2,当前的值为-1,则表示有_等待进程。 A 0个 B 1 个 C 2个 D 3个-7,程序的顺序执行通常在 1 的工作环境中,具有 2 特征;程序的并发执行通常在 3 的工作环境中,具有 4 特征。 A 单道程序 B 多道程序 C 程序的可在现性 D 资源共享-8,进程的三个基本状态在一定的条件下可以互相转化,进程由就绪状态转变为运行状态的条件是 1, 由运行状态转变为阻塞状态的条件是 2。 A 时间片用完 B 等待某事件发生 C 等待的某事件已发生 D 资源共享9,下列的进程状态变化中,_的变化是不可能发生的。 A 运行-就绪 B 运行-等待 C 等待-运行 D 等待-就绪10,一个运行的程序用完了分配给它的时间片后,它的状态变为 _。 A 就绪 B 等待C 运行 D 由用户自己确定11,用p,v操作管理临界区时,信号量的初值应定义为_。A -1 B 0 C 1 D任意值12,用v操作唤醒一个等待机场时,被唤醒机场的状态变为_。A 等待 B 就绪 C 运行 D 完成13,进程间的同步是只指进程在逻辑上的相互_关系。 A 联接 B 制约 C 继续 D 调用14,_是一种只能进行p操作和v操作的特殊变量。A 调度 B 进程 C 同步 D 信号量15,_是解决进程间同步和互斥的一对低级通信原语。A lock 和 unlock B p和v C w 和s D send和receive16,下面进程的描述中,错误的是_。 A 进程是动态的概念 B 进程执行需要处理机 C 进程是有生命期的 D 进程是指令的集合17,下面的叙述中正确的是_。A 操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同B为了避免发生进程死锁,各进程只能逐个申请资源C操作系统用pcb管理进程,用户可以从pcb中读出与本身运行状况有关的信息D 进程同步是指某些进程之间在逻辑上的相互制约关系18,进程控制就是对系统中的进程实施有效的管理,通过使用_,进程撤消,进程阻塞,进程唤醒等进程控制原语实现。 A 进程运行 B 进程管理 C 进程创建 D 进程同步19,信箱通信是一种_通信方式。 A 直接通信 B 间接通信 C 低级通信 D 信号量20,操作系统通过_对进程进行管理。 A 进程 B 进程控制块 C 进程启动程序 D 进程控制区21,操作系统通过_对进程进行管理。 A JCB B PCB C DCT D CHCT22,杂操作系统中,解决进程间的 _1_ 和 _2_ 问题的一种方法是使用 _3_。 A 调度 B 互斥 C 通讯 D 同步 E 分派 F 信号量23,某系统的进程状态如图2。5所示,a是 (1) 状态,b是 (2) 状态,c是( 3)状态 1表示-(4)-,2表示-(5)-,3表示发生了等待事件,4表示等待事件结束。下列情况中,当发生前者的状态转换时,-(6)-会导致发生后者的状态转换。(1)(2)(3):A 挂起 B 运行 C 等待 D 就绪 E 睡眠(4)(5)A 落选 B 选中 C 等待 (6)A 2-1 B 4-224,用p,v操作可以解决_互斥问题。 A 一切 B 某些 C 正确 D 错误25,通常,用户进程被建立后,_。 A 便一直存在与系统中,直到被操作人员撤消 B 随着作业运行正常或不正常结束而撤消 C 随着时间片轮转而撤消与建立 D 随着进程的阻塞或唤醒撤消与建立26,在操作系统中,进程是一个具有一定独立功能的程序在某个数据集上的一次_。 A 等待活动 B 运行活动 C 单独操作 D 关联操作27.一个进程被唤醒意味着_. A 该进程重新占有了CPU B它的优先权变为最大 C 其PCB移至等待队列队首 D进程变为就绪状态28 下面所述步骤中,_不是创建进程所必需的. A 由调度程序为进程分配CPU B建立一个进程控制快 C 为进程分配内存 D将进程控制块链入就绪状态29.多道程序环境下,操作系统分配资源以_为基本单位. A 程序 B 指令 C 进程 D作业30.对于两个并发进程,设互斥信号量为MUTEX,若MUTEX=0,则_ A 表示没有进程进入临界区 B表示有一个进程进入临界区 C 表示有一个进程进入临界区,另一个进程等待进入 D表示有两个进程进入临界区 31.两个进程合作完成一个任务.在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后 再向前执行,这种制约性合作关系被称为进程的_ A 同步 B 互斥 C 调度 D 执行32.为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式称为 _ A 进程互斥 B 进程同步 C 进程制约 D 进程通信*选择题答案*1.C 2.B 3. A 4. B 5 B 6 B 7 ACBD 8 DB 9C 10 A 11C 12 B13B 14 D 15 B 16 D 17 D 18 C 19 B 20 B 21 B 22 DBF23 BDC BAA 24 A 25 B 26 B 27 D 28 A 29 C 30 B 31 A 32 D *填空题 2* 1.进程的基本特征有_._.独立.异步.及结构特征. 2.信号量的物理意义是当信号量值大于0 时表示_;当信号量值小于0 时,其绝对值为_. 3.临界资源的概念是_,而临界区是指_. 4.进程在运行过程中有三种基本状态,它们是_ ._._. 5进程主要由_._._三部分内容组成,其中_-是进程 存在的唯一标志.而_部分也可以为其他进程共享. 6.系统中各进程之间逻辑上的相互制约关系称为_ 7.若一个进程以进入临界区,其他欲进入临界区的进程必需_ 8将进程的_链接在一起就形成了进程队列. 9用P. V 操作管理临界区时,任何一个进程在进入临界区之前应调用_操作,退出临界区时应调用_操作.10 用信箱实现通信时,应有_和_两条基本原语.11 在多道程序系统中,进程之间存在着的不同制约关系可以划分为两类:_与_._指进程间具有的一定逻辑关系;_是指进程间在使用共享资源方面的约束关系.12 对于信号量可以做_操作和_操作,_操作用于阻塞进程,_操作用于释放进程.程序中的_和_操作应谨慎使用,以保证其使用的正确性,否则执行时可能发生死锁.13 程序顺序执行时有顺序性._和可再现性的特点.14 有M个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是_.15 设系统中有N(N2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况:(1)没有运行进程,有2个就绪进程,N个进程处于等待状态.(2)有1个运行进程,没有就绪进程,N-1个进程处于等待状态.(3)有1个运行进程,有1个就绪进程,N-2个进程处于等待状态.(4)有1个运行进程,N-1个就绪进程,没有进程处于等待状态.上述情况中,不可能发生的情况是_.16 进程是一个_态概念,而程序是一个_态概念.17 在一个单处理机系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有_个,最少有_个.18 操作系统中,对信号量S和P原语操作定义中,使进程进入相应等待队列等待的条件是_.19 下面关于进程的叙述不正确的是_.(1)进程申请CPU得不到满足时,其状态为等待状态.(2)在单CPU系统中,任一时刻有一个进程处于运行状态.(3)优先级是进行进程调度的重要依据,一旦确定不能改变.(4)进程获得处理机而运行是通过调度实现的.20 信箱逻辑上分为_和_两部分._中存在有关信箱的描述._由若干格子组成,每格存放一信件,格子的数目和大小在创建信箱时确定.*填空题答案*1 (1)动态 (2)并发2 (1)可用资源的数目 (2)因请求该资源而被阻塞的进程数目3(1)一次仅允许一个进程访问的资源4 (1)运行(2)就绪 (3)等待5 (1)程序段(2)数据段(3)PCB (4)PCB (5)程序段6 进程同步7 等待8 PCB9 (1)P (2) V10(1)发送(2)接收11 (1)同步 (2)互斥(3)同步 (4)互斥12 1 3 5 P 2 4 6 V13封闭性14 1至-(m-1)15 116 (1)动 (2)静17 (1)4(2)018 s1 3-2 4-1解:(1)在本题所给的进程状态图中,存在四种状态转换.当进程调度程序从就绪队列中选取一个进程投入运行引起转换,当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引起转换3;当进程等待的事件发生时(如I/O完成)则会引起转换4.(2) 如果就绪队列非空,则一个进程的转换3会立即引起另一个进程的转换1.这是因为一个进程发生转换3意味着正在执行的进程由执行状态变为阻塞状态1.这时处理机空闲,进程调度程序必然会从就绪队列选取一个进程并将他投入运行,因此只要就绪队列非空,一个进程的转换3能立即引起另一个进程的转换1.(3)所谓因果转换指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个称为果,这两个转换称为因果转换,当然这种因果关系并不是什么时候都能发生,而是在一定条件下才会发生.2-1当进程发生转换2时,就必然引起另一进程的转换1.因为当发生转换2时,正在执行的进程从执行状态转变为就绪状态,进程调度程序必然会从就绪队列选取一个进程投入运行,即发生转换1.3-2某个进程的转换3决不可能引起另一进程发生转换2,这是因为当前执行进程从执行状态变为阻塞状态,不可能又从执行状态转变为就绪状态, 4-1当处理机空闲且就绪队列为空是,某一进程的转换4就会引起该进程的转换1,因为此时从阻塞状态变为就绪状态,因而调度程序就会将就绪队列中的此进程投入运行. 6 在单处理机的分时系统中,分配给进程P的时间片用完后,系统进行切换,结果调度到的仍然是进程P,有可能出现上述情形吗?如果可能请说明理由? 解,有可能出现上述情况。例如,若在进程P时间片用完后,被追回到就绪队列时,就绪队列为空,这样进程P 就是就绪队列中唯一的一个进程,于是调度程序选种的进程必然是进程P,又如在按优先级调度的系统中,就绪队列按进程优先级排列,在进程P时间片用完后回到就绪队列时,若其优先级高于当前就绪队列中的其它进程,则它排在就绪队列之首,从而再次被调度程序选种并投入运行。7 桌上有一个空盘,允许存放一只水果。爸爸可向盘中放苹果,也可以向盘中放橘子,儿子专等吃盘中的橘子,女而专等吃盘中的苹果。规定当盘空时只能放一只水果供吃着取用,请用p,v原语实现爸爸,儿子,女儿三个并发进程的同步。 解,在本题中,应设置三个信号量S,SO,Sa,信号量S表示盘子是否为空,信号量So表示盘子是否有橘子,信号量Sa表示盘子是否有苹果,其初值为0。同步描述如下:int s=1;int sa=0;int so=0;main() cobegin father(); son(); daughter(); coend father() while(1) p(S) 将水果放入盘中: if(放入的是橘子) v(So); else v(Sa); son() while(1) p(So) 从盘子中取出橘子; v(s); 吃橘子; daughter() while(1) p(Sa) 从盘子中取出橘子; v(s); 吃苹果; 8 (上海交通大学1996年试题)哲学家甲请哲学家乙,丙,丁到某处讨论问题,约定全体到齐后开始讨论;在讨论的间隙四位哲学家进餐,每位进餐是都需要使用刀,叉各一把,餐桌上的布置如图2.9所示。请用信号量及p,v原语操作说明四位哲学家的同步,互斥过程。 解,在本题中,应设置四个信号量fork1,fork2,knife1,knife2,其初值均为1,分别表示叉1,叉2,刀1,刀2是否可用。同步描述如下:int fork1=1;int fork2=1;int knife1=1;int knife2=1; main() cobegin Pa(); Pb(); Pc(); Pd(); coend Pa() while(1) p(knife1); P(fork1); 进餐 V(knife1); V(fork1); 讨论问题 Pb() while(1) p(knife2); P(fork1); 进餐 V(knife2); V(fork1); 讨论问题 Pc() while(1) p(knife2); P(fork2); 进餐 V(knife2); V(fork2); 讨论问题 Pd() while(1) p(knife1); P(fork2); 进餐 V(knife1); V(fork2); 讨论问题 while(1) p(knife1=1); 9.某数据库有一个写进程,多个读进程,他们之间读,写操作的互斥要求是:写进程正在写该数据库时不能有其他进程读该数据库,读进程之间不互斥,可以同时读该数据库.请用信号量P.V操作描述这一组进程的工作进程.解:在本题中,允许读进程同时读数据库,但写进程正在写数据库时不允许其他进程读数据库,也不允许其他进程写该数据库.为了解决读,写进程之间的同步,应设置两个信号量和一个共享变量:读互斥信号量rmutex,用于使读进程互斥地访问共享变量count,其初值为1;写互斥信号量wmutex,用于实现写进程与读进程的互斥及写进程与写进程的互斥,其初值为1;共享变量count,用于纪录当前正在读数据库的读进程数目,初值为0.其工作、过程如下: int rmutex=1; int wmutex=1; int count=0; main()cobegin reader(); writer();coend reader()while(1)p(rmutex);if (count=0) p(wmutex);count+;v(rmutex); 读数据库;p(rmutex);count-;if (count=0) v(wmutex);v(rmutex);writer()while (1)p(wmutex);写数据库;v(wmutex);在本题中,要注意对信号量rmutex意义的理解.rmutex是一个互斥信号量,用于使读进程互斥地访问共享变量count,该信号量并不表示读进程的数目,表示读进程的数目的是共享变量count.当一个读进程要读数据库时,应将读进程计数count加1;如果此前数据库无读进程,还应对写进程互斥信号量wmutex做p操作,这样,若数据库中无写进程,则通过p操作阻止写进程写,若数据库有无写进程,则通过p 操作让读进程等待.10 (华中理工大学1999年试题)设公共汽车上,司机和售票员的活动分别表示是:司机的活动:启动车辆; 正常行车; 到站停车;售票员的活动:关车门; 售票; 开车门; 在汽车不断的到站,停车,行使过程中,这两个活动有什么 同步关系?用 信号量及p,v操作实现它们的同步。 解,在汽车行使过程中,司机活动和售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开始信号后开始启动车辆,在汽车正常行使工程中售票员售票,到站时司机停车,售票员在车听后开车门让乘客上下车。因此司机启动车辆的动作必须与售票员关车取得同步,售票员开车门的门的动作也必须与司机听车的动作取得同步,在本题中,应设置两个信号量,S1,S2,S1表示是否允许司机启动车辆,其初值为0,S2表示是否允许售票员开门,其初值为0。用p,v原语描述如下:int S1=0;int S2=0;main() cobegin driver(); busman(); coend driver() while(1) p(S1); 启动车辆; 正常行车; 到站停车; V(s2); busman() while(1) 关车门; v(s1); 售票; p(s2); 开车门; 上下乘客; 用p,v操作来控制现实生活中的操作流程是一类常见的试题。这类试题要求解题者能将生活中的控制流程用形式化的方式表达出来。11.设有一个发送者进程,其流程图如图2.10 所示. S 是用于实现进程同步的信号量,MUTEX 用于实现进程互斥的信号量.试问流程图中的 A B C D 四框中应填写什么?假定缓冲区有无限多个, S 和 MUTEX 的初值应为多少?解:由上述分析可知, A B C D 四框应分别填入: A框 P(MUTEX) B框 V(MUTEX) C框 P(S) D框 P(MUTEX)开始时,消息链上没有可供接收的信息,所以 S 的初值为0 ;互斥信号量 MUTEX 的初值应为1.12 下述程序是解决两个进程互斥访问临界区问题的一种方法,试从互斥 .有空让进.有限等待等三个方面讨论它是否正确.int c1=1;int c2=1;main()cobegin P1(); p2(); /进程P1. P2并发执行/coendp1() /第一个进程P1/ while(1) other section 1; do c1=1-c2; while(c2=0); critical section; /其它部分/ c1=1; p2()/ 第二个进程P1/ while(1) other section 2; /其它部分/ do c2=1-c1; while(c1=0); critical section; /临界区/ c2=1; 解;从本题给出解决两个进程互斥访问临界区的实现算法中可以看出,全局变量C1 .C2 的初值为1,进程P1 进入临界区之前,要执行do .while 循环语句,查看变量C2的值是否为0 (可理解为查看临界资源是否空),若C2 为0 循环等待,否则 进入临界区执行,此时变量 C1 在do .while 循环语句中重新赋了值(一般情况下值 为0 ,可理解为将临界区访问标志设置为 1 ,即未访问).同样,进程P2 进入临界区之前,查看变量C2的值是否为0 (可理解为查看临界资源是否空),若C2 为0 循环等待,否则 进入临界区执行,此时变量 C2在do .while 循环语句中重新赋了值(一般情况下值 为0 ),当它退出临界区时,又将c2设置为1. 从互斥方面看,由于c1,c2的初值为1,在通常情况下,本题给出的访问临界区的实现算法能够满足互斥的要求.但在后面给出的特殊程序调度次序下,互斥条件无法满足. 若系统调度到进程p1,p1一直运行到进入了临界区,假定这时程序进行进程切换,暂停进程p1的执行转而调度进程p2.此时,变量c2的值为1,变量c1的值为0,因而在此循环语句处循环执行.若系统在进程执行完do c2=1-c1时进行进程切换,则此时c1的值为0,变量c2的值为1.当进程p1再次执行时,它将执行完临界区中的代码并退出临界区,然后执行语句c1=1,这时变量c1,c2的值均为1,若这时程序进行进程切换,调度p2运行,因此时变量c1的值为1,故进程跳出do .while 循环语句,进入临界区执行,若机车国内p2在临界区执行时,系统再次进行系统切换,调度进程p1执行,由于此时变量c2的值为1,因此进程p1可以进入临界区,从而无法满足若干进程申请进入临界区时候,只允许一个进程进入且至多只允许一个进程处于临界区的条件.图2.11描述可上述情况. 从有空让进方面看,当两个进程中的一个进程执行do .while 循环语句时,为描述方便,不妨设为p1,由于c2的初值为1且进程p2退出临界区后将变量c2的值设置为1,因此只要在当前进程p2不在临界区且执行了语句c2=1,则变量c2的值为1,因此进程p1在do .while 循环语句将变量c1设置为0并跳出循环,随后进入临界区.对于进程p2,其情况也是类似的.从上述分析可以看出,该实现算法遵循空闲让进的原则. 从有限等待方面看,若两个进程当前今不在临界区中,则任何一个申请进入临界区的进程都可以进入临界区(分析与有空让进部分相同),若当前有一个进程在临界区中执行,另一个进程申请进入临界区,为了描述方便不妨设为进程p1在临界区中执行,进程p2申请进入临界区,则进程p1会在有限的时间内执行完临界区中的代码并退出临界区,将变量c1设置为1,因此进程p2会因为变量c1的值变为1而跳出出do .while 循环语句,进入临界区.从上述分析可以看出,该实现算法遵循有限等待的原则.13.(1)写出P .V 操作的定义. (2)有三个进程PA . PB 和.PC 合作解决文件打印问题: PA 将文件纪录从磁盘读入贮存的缓冲区 1,每次执行依次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行依次复制一个记录.PC 将缓冲区 2的内容打印出来,每执行依次打印一个记录.缓冲区的大小等于一个记录;请用P .V 操作来保证文件的正确打印.解:(1)P .V 操作是两条原语 ,它们的定义如下:P 操作 / P 操作记为P(S),其中S 为一信号量,它执行时主要完成下述工作: S=S-1 若S=0,则进程继续运行. 若S0,则进程继续运行. 若S=0,则从信号量等待队列中移出队首进程,使其变为就绪状态.(2)在本题中没,进程PA . PB 和.PC之间的关系为:PA 与 PB共用一个单缓冲区,而 PB 又与PC 共用一个单缓冲区,其合作方式可用图2.12表示.当缓冲区1为空是,进程PB 可将一个纪录读入其中;若缓冲区1有数据且缓冲区2为空,PB 可将记录从缓冲区1复制到缓冲区2中;若缓冲区2中有数据,则进程可以打印记录.在其它条件下,相应进程必须等待.事实上,这是一个生产者_-消费者问题. 图2.12 为遵循这一同步规则.应设置四个信号量empty1 .empty2 .信号量empty1 .full 1.full 2,信号量empty1 与empty2 分别表示缓冲区1及缓冲区2是否为空,其初值为1;信号量full 1 及full 2分别表示缓冲区1及缓冲区2是否有记录可供处理,其初值为0.其同步描述如下:int empty 1=1;int empty 2=1;int full 1=0;int full 2=0;main()cobegin PA(); pB(); pC();coendpA() while(1) 从磁盘读入一个记录; p(empty 1); 将记录存入缓冲区1; v(full 1); pB() while(1) P(full 1); 从缓冲区1中取出记录; V(empty 1); p(empty 2); 将记录存入缓冲区2; V(full 2); pC() while(1) p(full 2); 从缓冲区2中取出记录; v(empty 2); 打印记录; 本题也是一个生产者_-消费者问题.其中的难点在于PB既是一个生产者又是一个消费者.14 设有8个程序prog1,prog2 ,g8。它们在并发系统中执行时有如图2.13所示的制约关系,试用p,v操作实现这些程序间的同步。 解,由图2.13表明开始时,prog1及prog2先执行。当prog1和prog2都执行完后,prog3,prog4,prog5才可以开始执行。prog3完成后,prog6才能开始执行。prog5完成后,prog7才可以开始执行。prog6,prog4,prog7都结束后8才可以开始执行。为了确保这一执行顺序,设有7个同步信号量,f1,f2.f7表示prog1,prog2 ,g7是否执行完,其初值均为0。这8 个进程的同步描述如下:int f1=0;int f2=0;int f3=0;int f4=0;int f5=0;int f6=0;int f7=0; main() cobegin prog1(); prog2(); prog3(); prog4(); prog5(); prog6(); prog7(); prog8(); coend prog1() . . . v(f1); v(f1); v(f1); prog2() . . . v(f2); v(f2); v(f2); prog3() p(f1); p(f2); . . . v(f3); prog4() p(f1); p(f2); . . . v(f4); prog5() p(f1); p(f2); . . . v(f5); prog6() p(f3); . . . v(f6); prog7() p(f5); . . . v(f7); prog8() p(f4); p(f6); p(f7); . . . . 15,(北京大学1991年试题)有一个仓库,可以存放A和B两种产品,但要求: (1)每次只能存入一种产品(A或B) (2)一NA产品数量-B产品数量M其中,N和M是正整数。试用p,v操作描述产品A与产品B的入库过程。 解,在本题中,我们可以设置两个型号量来控制A,B产品的存放数量,sa表示当前允许A产品比B产品多入库的数量,即在当前库存量和B产品不入库的情况下,还可以允许sa个A产品入库,sb表示当前允许B产品比A产品多入库的数量,即在当前库存量和A产品不入库的情况下,还可以允许sb个B产品入库。初始时,sa为M-1,sb为N-1。当往库中存放入一个A 产品时,则允许存入B产品的数量也增加1;当往库中存放入一个B 产品时,则允许存入A产品的数量也增加1。 产品A,B入库过程描述如下: int mutex=1; int sa=M-1; int sb=N-1; main() while (1) 取一个产品; if(取的是A 产品) p(sa); P(mutex); 将产品入库; v(mutex); v(sb); else /*取的是B 产品*/ p(sb); P(mutex); 将产品入库; v(mutex); v(sa); 从本题的加法可以看出,当有比较复杂的条件出现时,可以把复杂条件分解成一组简单条件,这样就能很容易地写出对应的程序流程了。16.进程A1,A2, . , An1通过m个缓冲区向进程B1,B2, . ,Bn2不断地发送消息。发送和接收工作遵循如下规则:1 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小等于消息长度;2 对每一个消息,B1,B2, . ,Bn2都须各接收一次,读入各自的数据区内;3 m个缓冲区都满时,发送进程等待;没有可读的消息时,接收进程等待。试用P,V操作组织正确的发送和接收工作。解:在本题中,应设置一个信号量mntex实现诸进程对缓冲区的互斥访问;两个信号量数组emptyn2和fulln2描述n2组缓冲区的使用情况。mutex的初值为1;数组empty中的元素初值为m;数组full中的元素初值为0。其同步关系描述如下:int mutex,emptyn2fulln2;int i;mutex=1;for (i=0;i=n2-1;i+) emptyi=m; fulli=0;main() cobegin A1(); A2(); . . . An1(); B1(); B2(); . . . Bn2(); coendsend() int i; for(i=0;i,=n2-1;i+) p(emptyi); p(mutex); 将消息放入缓冲区; v(mutex); for(i=0;i=n2-1;i+) v(fulli);Ai() while(1) . . . send(): . . . Bi() while(1) . . . receve(i);. 17.在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但其中有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,如图2。14所示。试设计一个算法使来往的自行车均可顺利通过。解:在本题中,应设置5个信号量ST,TS,K,L,M,信号量ST表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论