第三章 进程同步问题习题答案
- 格式:doc
- 大小:22.00 KB
- 文档页数:4
第三章进程管理3.3习题3.3.1 选择最合适的答案1. UNIX操作系统的进程控制块中常驻内存的是()。
A.proc结构B.proc结构和核心栈C.ppda区D.proc结构和user结构2. 当()时,进程从执行状态转变为就绪状态。
A.进程被调度程序选中B.时间片到C.等待某一事件D.等待的事件发生3. 在进程状态转换时,下列()转换是不可能发生的。
A.就绪态→运行态B.运行态→就绪态C.运行态→阻塞态D.阻塞态→运行态4. 下列各项工作步骤中,()不是创建进程所必需的步骤。
A.建立一个PCBB.作业调度程序为进程分配CPUC.为进程分配内存等资源D. 将PCB链入进程就绪队列5. 下列关于进程的叙述中,正确的是()。
A.进程通过进程调度程序而获得CPU。
B.优先级是进行进程调度的重要依据,一旦确定不能改变。
C.在单CPU系统中,任一时刻都有1个进程处于运行状态。
D.进程申请CPU得不到满足时,其状态变为等待状态。
6. 从资源管理的角度看,进程调度属于()。
A.I/O管理B.文件管理C.处理机管理D.存储器管理7. 下列有可能导致一进程从运行变为就绪的事件是()。
A.一次I/O操作结束B.运行进程需作I/O操作C.运行进程结束D.出现了比现运行进程优先权更高的进程8. 一个进程释放一种资源将有可能导致一个或几个进程()。
A.由就绪变运行B.由运行变就绪C.由阻塞变运行D.由阻塞变就绪9. 一次I/O操作的结束,有可能导致()。
A.一个进程由睡眠变就绪B.几个进程由睡眠变就绪C.一个进程由睡眠变运行D.几个进程由睡眠变运行10. 当一个进程从CPU上退下来时,它的状态应变为()。
A.静止就绪B. 活动就绪C. 静止睡眠D. 活动睡眠11. 为使进程由活动就绪变为静止就绪,应利用()原语?A.SUSPENDB. ACTIVEC. BLOCKD. W AKEUP12. 在下面的叙述中,不正确的是()。
第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。
A.管道B.管程C.通道D.DMA2.以下_B__不是操作系统的进程通信手段。
A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。
A.3B.2C.1D.04.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理时信号量S的可能取值是_C__。
A.3,2,1,0,-1B.2,1,0,-1,-2C. 1,0,-1,-2,-3D.4,3,2,1,05.下面有关进程的描述,是正确的__A__。
A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。
A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B_ _。
A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。
A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。
A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。
A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。
第三章作业1.下进程之间存在相互制约关系吗?若存在,是什么制约关系?为什么?①几个同学去图书馆借同一本书。
答:互斥,只能有一个借到②篮球比赛中两队同学争抢篮板球。
答:互斥,只能有一个抢到③果汁流水线生产中捣碎、消毒、灌装、装箱等各道工序。
答:同步时进行,相互不影响④商品的入库出库。
答:同步时进行,相互无影响⑤工人做工与农民种粮。
答:同步进行,相互无影响2.在操作系统中引入管程的目的是什么?条件变量的作用是什么?答:引入管城是为了实现进程的同步和互斥。
条件变量的作用是:设置多个信号量,使用大量的P、V操作,还要仔细安排多个P操作的排列次序,否则会出现错误的结果或出现死锁现象。
3.说明P、V操作为什么要设计成原语。
答:用信号量S表示共享资源,其初值为1表示有一个资源。
设有两个进程申请该资源,若其中一个进程先执行P操作。
P操作中的减1操作有3条指令组成:去S送寄存器R;R-1送S。
若P操作不用原语实现,在执行了前述三条指令中的2条,即还未执行R 送S时(此时S值仍为1),进程被剥夺CPU,另一个进程执行也要执行P操作,执行后S的值为0,导致信号量的值错误。
正确的结果是两个进程执行完P操作后,信号量S的值为-1,进程阻塞。
4.设有一个售票大厅,可容纳200人购票。
如果厅内不足200人则允许进入,超过则在厅外等候;售票员某时只能给一个购票者服务,购票者买完票后就离开。
试问:①购票者之间是同步关系还是互斥关系?答:互斥关系②用P、V操作描述购票者的工作过程。
如下:semaphore mutex=1;semaphore full=200;void customer(){ p(metux);P(full);BuyingV(mutex);V(full);}5.进程之间的关系如图3-16所示,试用P、V操作描述它们之间的同步。
如下:设:s1→s2为a s1→s3为b s2→s6为c s3→s4 为d s3→s5为e s4→s6为f s5→s6为gsemaphore a,b,c,d,g,f,g=0,0,0,0,0,0,0;{ s1;v(a);v(b);}{ p(a);s2;v(a);}{ p(b);s3;v(b);}{ p(d);s4;v(d);}{ p(e);s5;v(e);}{ p(c);s6;}{ p(f);p(g);s6}6.有4个进程P1、P2、P3、P4共享一个缓冲区,进程P1向缓冲区存入消息,进程P2、P3、P4从缓冲区中去消息,要求发送者必须等三个进程都去过本消息后才能发送下调消息。
操作系统第3章习题带答案第三章⼀、问答题1、⽤户级线程与内核级线程的区别是什么?2、PCB中包含哪些信息?进程状态属于哪类信息?3、什么是操作系统的内核?4、简述时间⽚轮转调度算法的基本思想。
5、某系统采⽤时间⽚轮转调度算法的处理机调度算法,某个时刻根据⽤户要求创建了⼀个进程P,进程P在其存在过程中依次经历了:进程调度选中了进程P 占⽤处理机运⾏,进程P运⾏中提出资源申请,要求增加内存使⽤量,没有得到;进程等待⼀段时间后得到内存;进程调度再次选中了进程P占⽤处理机运⾏;进程P的时间⽚到;⼀段时间后,进程P再次占⽤处理机;有紧急进程Q进⼊,系统停⽌进程P的运⾏,将处理机分配进程Q;进程Q运⾏完,进程调度再次选中了进程P占⽤处理机运⾏;进程P运⾏完。
请分析进程P在其整个⽣命过程中的状态变化。
进程调度选中了进程P占⽤处理机运⾏(就绪→运⾏),进程P运⾏中提出资源申请,要求增加内存使⽤量,没有得到(运⾏→阻塞);进程等待⼀段时间后得到内存(阻塞→就绪);进程调度再次选中了进程P占⽤处理机运⾏(就绪→运⾏);进程P的时间⽚到(运⾏→就绪);⼀段时间后,进程P再次占⽤处理机(就绪→运⾏);有紧急进程Q进⼊,系统停⽌进程P的运⾏,将处理机分配进程Q(运⾏→就绪);进程Q运⾏完,进程调度再次选中了进程P占⽤处理机运⾏(就绪→运⾏);进程P运⾏完。
请分析进程P在其整个⽣命过程中的状态变化。
6、试⽐较进程与程序的异同。
7、引起创建进程的事件通常有哪些?简述进程的创建过程。
8、简述进程的阻塞过程。
911、简述操作系统的三级调度。
12、为什么要了解进程间的家族关系?因为⽗进程和⼦进程之间是⾪属关系,⼦进程可以继承使⽤⽗进程的资源;如果⽗进程被撤销,还应撤销其所有的⼦孙进程。
13、什么是进程?。
14、试⽐较进程和线程的区别。
15、简述进程的基本状态,画出其状态转换图。
⼆、计算题1、若程序Pa,Pb和Pc单独执⾏时间分别Ta,Tb和Tc,Ta=1⼩时,Tb=1.5⼩时,Tc=2⼩时,其中处理机⼯作时间分别为Ta=10分钟,Tb=15分钟,Tc=35分钟。
第三章习题:P117
25.答:c=10, a=13, b=6
28.答:设置同步信号量
S1: 传送带是否有空位; S2: 传送带上是否有产品; S3: 是否有称过重的产品 检验员进程T1: 计量员进程T2 分拣员进程T3 While(True) {
查看产品质量 if(合格) {P(S1)
放在传送带上 V(S2)} Else 销毁
}
while(True) { P(S2)
称重并记录 V(S1) V(S3) }
While(True) { P(S3) 包装 }
29.答: 首先设置同步信号量(私有信号量),设:
Mi(i=0,1,2,3)表示第i 个箱子中的消息数,初值分别为2,0,0,0 Ei(i=0,1,2,3)表示第i 个箱子中的空格数,初值分别为1,3,2,2
31答:
1)编写一个程序,每一个读者就是一个进程,因此有多少读者就有多少进程。
进程是程序的一次执行,进程是动态的,程序是静态的,进程有生命期,程序没有,进程可以并发执行。
2)设置信号量:
公有信号量R用于登记表的互斥操作,初值为1;
私有信号量S用于读者之间的同步操作,初值为1000;。
计算机操作系统练习题及答案第三章单项选择1. 两个进程合作完成一项任务。
在并发执行中,一个进程要等待其合作伙伴发来消息,或建立某个条件后再运行,这种制约性合作关系被称为进程的—A—。
A.同步B.执行C.互斥D.调度2. 为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式通常称为—C—。
A. 进程互斥B. 进程同步C. 进程通信D. 进程制约3. 除了因为资源不足,进程竞争资源可能出现死锁外,不适当的—C —也可能产生死锁。
A.进程优先权B.资源线性分配C.进程推进顺序D.分配队列优先权4. 除了可以采用资源剥夺法解除死锁外,还可以采用—C—方法解除死锁。
A.修改信号量B.拒绝分配新的资源C.撤消进程D.执行并行操作5. 资源的按序分配策略可以破坏—D—条件。
A. 互斥B. 请求与保持C. 不剥夺D. 环路等待6. 在—C—的情况下,系统出现死锁。
A. 计算机系统发生了重大故障B. 有多个阻塞的进程存在C. 若干个进程因竞争资源而无休止地相互等待他方释放已占有的资源D. 资源数远小于进程数或进程同时申请的资源数远超过资源总数7.某系统中有3个进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是—B—。
A.9B.10C.11D.128. 银行家算法是一种—B—算法。
A. 解除死锁B.避免死锁C. 预防死锁D. 检测死锁9. 在下列解决死锁的方法中,属于死锁预防策略的是—B—。
A. 银行家算法B. 资源有序分配C. 死锁检测法D. 资源分配图化简法10. 设有n个进程共用一个相同的程序段(临界区),如果每次最多允许m个进程(m≤n)同时进入临界区,则信号量的初值应为—B —。
A. nB. mC. m-nD. -m11.死锁定理是用于处理死锁的哪一种方法—C—。
A.预防死锁B.避免死锁C.检测死锁D.解除死锁12. AND信号量集机制是为了—C—。
习题 3 进程同步与通信一、选择题题号1 2 3 4 5 6 7 8 9 10答案A D D C B C A B A A题号11 12答案D C二、综合题1、答:临界资源也称独占资源、互斥资源,它是指某段时间内只充许一个进程使用的资源。
比如打印机等硬件资源,以及只能互斥使用的变量、表格、队列等软件资源。
各个进程中访问临界资源的、必须互斥执行的程序代码段称为临界区,各进程中访问同一临界资源的程序代码段必须互斥执行。
为防止两个进程同时进入临界区,可采用软件解决方法或同步机构来协调它们。
但是,不论是软件算法还是同步机构都应遵循下述准则:①空闲让进。
②忙则等待。
③有限等待。
④让权等待。
2、答:忙等待意味着一个进程正在等待满足一个没有闲置处理器的严格循环的条件。
因为只有一个CPU 为多个进程服务,因此这种等待浪费了CPU 的时钟。
其他类型的等待:与忙等待需要占用处理器不同,另外一种等待则允许放弃处理器。
如进程阻塞自己并且等待在合适的时间被唤醒。
忙等可以采用更为有效的办法来避免。
例如:执行请求(类似于中断)机制以及PV 信号量机制,均可避免“忙等待”现象的发生。
3、答:在生产者—消费者问题中,Producer 进程中P(empty)和P(mutex)互换先后次序。
先执行P(mutex),假设成功,生产者进程获得对缓冲区的访问权,但如果此时缓冲池已满,没有空缓冲区可供其使用,后续的P(empty)原语没有通过,Producer 阻塞在信号量empty 上,而此时mutex 已被改为0,没有恢复成初值1。
切换到消费者进程后,Consumer 进程执行P(full)成功,但其执行P(mutex)时由于Producer 正在访问缓冲区,所以不成功,阻塞在信号量mutex 上。
生产者进程和消费者进程两者均无法继续执行,相互等待对方释放资源,会产生死锁。
在生产者和消费者进程中,V 操作的次序无关紧要,不会出现死锁现象。
第三章进程管理一、选择题:1、下面过于程序的描述,正确的是()A. 程序执行的最终结果受到外界因素的影响,跟初始条件无关B. 程序执行的最终结果跟速度有关C. 程序是按前后次序相继地进行计算机操作序列集合,是一个静态的概念;D. 程序只能通过顺序执行2、程序的顺序执行有以下特点()A. 顺序性、封闭性、独立性B. 顺序性、封闭性、可再现性C. 顺序性、封闭性、随机性D. 顺序性、随机性、独立性3、程序A、B共享变量N,执行次A都要操作变量N,N=N+1,每执行次B都要print(N),N=0,初始值为N=0。
若执行顺序为先A后B,其结果为()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 0 14、如上题13所述,执行先B后A,其结果为()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 0 15、如上题所述,执行为A在B中间,起结果为.()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 1 16、下面关于进程描述完全的是()A. 进程是可以并发执行的计算部分;B. 进程是一个独立的调度活动.C. 进程是一个抽象实体.D. 进程是并发执行的过程中分配和管理资源的基本单位。
7、现代操作系统的特点()A. 程序的并发执行;B. 系统所拥有的资源被共享;C. 用户随机地使用系统资源;D. 以上三者都是。
8、进程和程序的区别是()A. 进程是一个动态的概念,而程序则是一个静态的概念;B. 进程具有并发性而程序没有;C. 进程是一个独立的调度活动.D. A和B都正确。
9、多道程序系统中的程序执行的特点为()A. 独立性、随机性、资源共享性;B. 顺序性、封闭性、可再现性;C. 顺序性、封闭性、随机性;D. 顺序性、随机性、独立性;10、描述信息所包括的下列描述不正确的是()。
A. 进程名B. 用户名C. 家族关系D. 用户资源11、现代oc的3个特点不包括()。
A. 程序并发执行B. 进程优先级C. 系统所拥有的资源共享D. 用户随即使用系统资源12、与进程优先级有关的PCB表项不包括()。
第三章部分习题答案第三章部分习题答案1、⾼级调度与低级调度的主要任务是什么?为什么要引⼊中级调度?答:⾼级调度主要任务是根据某种算法,把外存上处于后备队列中的那些作业调⼊内存,也就是说⾼级调度的调度对象是作业。
低级调度主要任务是:决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执⾏把处理机分配给该进程的具体操作。
中级调度的任务:使那些暂时不能运⾏的进程不再占⽤宝贵的内存资源,⽽将它们调⾄外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。
当这些进程重⼜具备运⾏条件且内存⼜稍有空闲时,由中级调度来决定把外存上的那些⼜具备运⾏条件的就绪进程重新调⼊内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。
引⼊中级调度的主要⽬的是为了提⾼内存利⽤率和系统吞吐量。
2、何谓作业、作业步和作业流?答:作业(Job):作业是⼀个⽐程序更为⼴泛的概念,它不仅包含了通常的程序和数据,⽽且还应配有⼀份作业说明书,系统根据该说明书来对程序的运⾏进⾏控制。
作业步(Job Step)。
通常,在作业运⾏期间,每个作业都必须经过若⼲个相对独⽴,⼜相互关联的顺序加⼯步骤才能得到结果,我们把其中的每⼀个加⼯步骤称为⼀个作业步,各作业步之间存在着相互联系,往往是把上⼀个作业步的输出作为下⼀个作业步的输⼊。
作业流:若⼲个作业进⼊系统后,被依次存放在外存上,这便形成了输⼊的作业流;在操作系统的控制下,逐个作业进⾏处理,于是便形成了处理作业流。
5、试说明低级调度的主要功能。
答:(1) 保存处理机的现场信息。
(2) 按某种算法选取进程。
(3) 把处理器分配给进程。
6、在抢占调度⽅式中,抢占的原则是什么?答:(1) 优先权原则。
(2) 短作业(进程)优先原则。
(3) 时间⽚原则。
7、在选择调度⽅式和调度算法时,应遵循的准则是什么?答:⾯向⽤户应遵循的准则是:(1) 周转时间短。
(2) 响应时间快。
(3) 截⽌时间的保证。
(4) 优先权准则。
第3章进程同步与通信6.有三个并发执行的进程A、B和C,A负责输入信息到缓冲区,B负责加工输入到缓冲区中的数据,C负责将加工后的数据打印输出。
在下列情况下:(1)单缓冲区。
(2)由N个缓冲区组成的缓冲池。
分别写出三个进程的并发关系。
答:(1)semaphore S1=1,S2=S3=0A: B: C:while(1) { while(1) { while(1) {P(S1); P(S2); P(S3);输入信息到缓冲区; 加工缓冲区中数据; 输出缓冲区中数据;V(S2); V(S3); V(S1);} } }(2)semaphore S1=N;semaphore S2=0,S3=0;semaphore mutex=1;int i.,j,k;ITEM buffer[N];ITEM data_i,data_o;A: B: C:while(1) { while(1) { while(1) {P(S1); P(S2); P(S3);P(mutex) ;P(mutex) ;P(mutex);输入数据data_i; data_o= buffer[k];buffer[i]=data_i; 处理中buffer[j]的数据k=(k+1)%N;i=(i+1)%N; j=(j+1)%N; 输出data_o;V(mutex); V(mutex); V(mutex) ;V(S2); V(S3); V(S1);} } }7.三个并发执行的进程A、B和C,A与B共享缓冲区M,B与C共享缓冲区N,如图所示:假如缓冲区的大小只能存放一个单位的数据,试写出A、B、C三个进程的同步关系。
答:semaphore S1=M;S3=N;semaphore S2=0,S4=0;semaphore mutex=1;int i.,j,k,l;ITEM buffer1[M];ITEM buffer2[N];ITEM data_i,data_o;A: B: C:while (1) { while (1) { while (1) {P(S1); P(S2); P(S4);P(mutex); P(mutex) ;P(mutex);输入数据data_i; data_o=buffer1[j]; data_o= buffer[l];buffer1[i]=data-i; j=(j+1)%M; l=(l+1)%N;i=(i+1)%M; V(mutex); 输出data_o;V(mutex); V(S1); V(mutex);V(S2); P(S3) V(S3);} P(mutex); }buffer2[k]=data_o;k=(k+1)%N;V(mutex);V(S4)}9.设有两个优先级相同的进程P1,P2如下,令信号量S1、S2的初值为0,已知z=2,试问P1、P2并发运行结束后x=?y=?z=?进程P1 进程P2y: =1;x:=1;y:=y+2 ;x:=x+1;V(S1);P(S1);z:=y+1;x:=x+y;P(S2);V(S2);y:=z+y;z:=x+z;解答:由题意可知执行顺序存在如下5种情况:z:=y+1----→ x:=x+y----→ y:=z+y----→ z:=x+z ……z:=y+1----→ x:=x+y----→ z:=x+z----→ y:=z+y ……x:=x+y----→ z:=y+1 ----→ z:=x+z----→ y:=z+y ……x:=x+y----→ z:=y+1 ----→ y:=z+y----→ z:=x+z ……x:=x+y----→ z:=x+z ----→ z:=y+1----→ y:=z+y ……和的结果为:x=5,y=7,z=9;和结果为:X=5,y=12,z=9;的结果为:x=5,y=7,z=4;*10.有一个隧道,由于很窄,只能容纳一个方向的车辆通过。
第3章进程的同步与通信习题与解答3.2 例题解析例3.2.1 多道程序系统程序的执行失去了封闭性和再现性,因此多道程序的执行不需要这些特性,这种说法是否正确?解这种说法不正确。
可以想象,如果一个程序在多道程序系统中,在相同的输入的情况下,多次执行所得结果是不同的,有谁还敢使用这个程序?因此,多道程序的执行也需要封闭性和再现性,只不过单道程序系统的封闭性和再现性是先天固有的,多道程序系统的程序执行要想获得封闭性和再现性,需通过程序员的精心设计才能得到。
所使用的方法就是同步和互斥的方法。
例3.2.2 多个进程对信号量S进行了5次 P操作,2次V操作后,现在信号量的值是 -3,与信号量S相关的处于阻塞状态的进程有几个?信号量的初值是多少?解(1) 因为S的当前值是-3,因此因为S处于阻塞状态的进程有3个;(2) 因为每进行一次P(S)操作,S的值都减1,每执行1次V操作S的值加1,故信号量的初值为-3+5-2=0;例3.2.3 如下锁的实现方法存在什么缺点?如何改进?LOCK(X) UNLOCK(X){ {do while X=1 ; X=0;X=1} }解存在的缺点是:当锁是关闭时,采用的是循环等待的方法,这样的等待还是要占用处理机的时间,应该采用阻塞等待的方法。
改进的锁实现如下:LOCK(X) UNLOCK(X){ {if X.value=1 if not empty(X.L) { insert( *, X.L); { P=remove(X.L);Block (*) Wakeup(P) } }else X.Value=1 else X.Value=0} }这里X.value是锁的值,X.L是存放由于锁X而阻塞的进程的队列。
insert( *, X.L)将当前进程的进程号插入到X.L,remove(X.L)是从X.L中移出一个进程号。
例3.2.4 使用多个进程计算Y=F1(X)+F2 (X).解(1) 确定并发和顺序操作在这个问题中,F1(X)和F2 (X)的计算是可以并行处理的,因此F1(X)和F2 (X)可以分别出现在两个进程中。
第二章进程管理(三)进程同步5、经典同步问题1、生产者—消费者问题生产者消费者问题是一种同步问题的抽象描述。
计算机系统中的每个进程都可以消费(使用)或生产(释放)某类资源。
这些资源可以是硬件资源,也可以是软件资源。
当某一进程使用某一资源时,可以看作是消费,称该进程为消费者。
而当某一进程释放某一资源时,它就相当于生产者。
问题1:设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区T中取出数据去打印。
通过分析可知,CP、IOP必须遵守以下同步规则:(1)当CP进程把计算结果送入缓冲区时,IOP进程才能从缓冲区中取出结果去打印;(2)当IOP进程把缓冲区中的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区.(3)为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中有无数据,Sb表示缓冲区中有无空位置。
两个进程的同步可以描述如下:问题2:一组生产者通过具有N个缓冲区的共享缓冲池向一组消费者提供数据。
问题分析”:为解决生产者消费者问题,应该设两个同步信号量,一个说明空缓冲区的数目,用empty表示,初值为有界缓冲区的大小N,另一个说明已用缓冲区的数目,用full表示,初值为0。
由于在此问题中有M个生产者和N个消费者,它们在执行生产活动和消费活动中要对有界缓冲区进行操作。
由于有界缓冲区是一个临界资源,必须互斥使用,所以,另外还需要设置一个互斥信号量mutex,其初值为1。
问题的解:注意:在每个程序中用于实现互斥的P(mutex)和V(mutex)必须成对的出现对资源信号量empty和full的P和V操作,同样需要成对地出现,但它们分别处于不同的程序中。
在每个程序中的多个P操作顺序不能颠倒。
先同步后互斥。
生产者进程缓冲池消费者进程1┇┇i┇┇2、哲学家就餐问题有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。
进程同步练习1.有一阅览室,共有100个座位。
读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。
读者离开时要消掉登记内容。
试用P、V操作描述读者进程的同步结构。
varmutex : semaphere;信号量,用于互斥full : semaphere; 信号量,用于同步table : array 0..n-1 of item; 登记表procedure reader;读者进程beginP(full);P(mutex);Register_name(table);V(mutex);Reading;P(mutex);Delet_name(table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100);初始化cobeginreader;reader;...coendend.2.设公共汽车上有一位司机和一位售票员,它们的活动如下:售票员:动车辆售票正常行车开车门到站停车关车门请分析司机与售票员之间的同步关系,如何用PV操作实现。
答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。
所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。
用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。
用PV操作实现司机进程和售票员进程同步的算法描述如下:售票员:(S1)售票动车辆P(S2)正常行车开车门到站停车关车门V(S2)V(S1)另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。
售票员:常行车售票站停车P(S2)V(S2)开车门P(S1)关车门启动车辆V(S1)。
进程同步练习
1.有一阅览室,共有100个座位。
读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。
读者离开时要消掉登记内容。
试用P、V操作描述读者进程的同步结构。
var
mutex : semaphere;信号量,用于互斥
full : semaphere; 信号量,用于同步
table : array 0..n-1 of item; 登记表
procedure reader;
读者进程
begin
P(full);
P(mutex);
;
Register_name(table);
V(mutex);
Reading;
P(mutex);
Delet_name(table);
V(mutex);
V(full)
end;
begin
…
seminitsal,1; ,100); 初始化
cobegin
reader;
reader;
...
coend
end.
2.设公共汽车上有一位司机和一位售票员,它们的活动如下:
售票员:
动车辆售票
正常行车开车门
到站停车关车门
请分析司机与售票员之间的同步关系,如何用PV
操作实现。
答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。
所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。
用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。
用PV操作实现司机进程和售票员进程同步的算法描述如下:
售票员:
(S1)售票
动车辆P(S2)
正常行车开车门
:
到站停车关车门
V(S2)V(S1)
另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的
初值均应为0。
售票员:
常行车售票
站停车P(S2)
V(S2)开车门
P(S1)关车门
启动车辆V(S1)。