和进程中的两个线程来处理,这两个线程仍具有______,但不在需要额外的______。 40.在使Pv操作实现进程互斥时,调用______相当于申请一个共享资源,调用______相当于归还共享资源的使用权。 41.在多线程操作系统中,线程与进程的根本区别在于进程作为______单位,而线程是______单位。 (二)简答题
1.什么是进程的顺序性和并发性? 2为什么并发进程执行时可能会产生与时间有关的错误?如何避免? 3.简述临界区的相关临界区的概念。 4.管理相关临界区有些什么要求? 5.假设PV操作用信号量s管理某个共享资源,请问当s>0,S=0和S<0时,它们的物理意义是什么? 6.请给出Pv操作的定义。 7.用Pv操作实现进程间同步与互斥应注意些什么? 8.何谓进程通信?最基本的通信原语有哪些? 9直接通信与间接通信有何区别? 10.线程与进程的根本区别是什么? (四)应用题
1.有一南北向的单行车道,在车道A、B两端以外一段距离处有减速标志和自动计数系统,A、B两处设有信号灯,信号灯的管理要求如下:绿灯行,红灯停,A、B两端红绿灯同时变换,一方红变绿时另一方绿变红。绿灯保持到同一方向进入的车辆全部驶入AB段,当AB之间无车辆行驶时,允许到达A端(或B端)的车辆驶入AB段,但只准某一方的车辆进入;一方最后一辆车进入AB段后,双向亮红灯让车辆全部通过(假设2分钟),然后让已在等待的任何一方车辆驶入。试用Pv操作管理AB路段车辆的行驶。
2在测温系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区,转换过程把微电压值从缓冲区中取出,计算转换成温度值再存入该缓冲区,显示过程把缓冲区中的温度值取出并显示。试用Pv操作实现三个过程共享缓冲区的同步问题。
3,现有三个进程,Reader进程把键盘输入的一个整数读入缓冲区B1,Executor进程把B1中的数据取出进行处理,处理完后存到输出缓冲区B2中,最后由Pinter进程将B2中的数据打印出来。假设B1和n2都只能存放一个整数,请用Pv操作管理这三个并发进程的执行.
4.用进程通信的方法解决生产者消费者问题。要求生产者能告诉消费者产品的说明、规格、价格等。而消费者能反馈对物品的评价和处理情况。
第八章 进程同步与通信 练习题参考答案 (一)单项选择题
1.D 2.D 3.A 4.c 5.c 6.D 7.B 8.A 9 B 10 B 11.C 12.B 13.C 14.D (二)填空题
1.顺序 2.顺序性 3封闭性,可再现件 4.进程本身 5.相同 6.可同时执行的 7并发性 8.无关 9.有交往的 10.共享 11.占用处理器的时间,执行的速度 12.共享资源 13共享变量 14.相关临界区 15互斥执行 16.互斥 17.不可被中断,原语 18.P操作,v操作 19.只有一个 20.同步 21.同步机制 22.进程互斥,同步 23.P操作,v操作 24.前,后 25.同步 26.竞争,固定的必然关系,必然的 27.低级通信方式 28.进程通信 29.信件 30.send,receive 31.直接通信,间接通信 32.一对 33.信箱说明,信箱体 34.进程同步 35.线程 36.调度,并发 37.轻型进程 38.等待态,就绪态,运行态 39并发性,公共缓冲区 40.P操作,v操作 41.资源分配,调度和执行 (三)简答题
1.进程的顺序性是指进程在顺序的处理器上严格地按顺序执行。若系统中存在一组可同时执行的过程,则该组程序具有并发性。可同时执行的进程是指这些进程执行时在时间上是重叠的,即一个进程的工作没有全部完成之前,另一个进程就可以开始工作。
2.有交往的并发进程可能会同时使用共享资源,如果对这种情况不加控制,由于进程占用处理器的时间、执行的速度和外界的影响等,就会引起与时间有关的错误。只要使若干并发进程的相关临界区互斥执行,就可避免造成这类错误。
3.临界区是指并发进程中与共享变量有关的程序段。相关临界区是指并发进程中涉及到相同变量的那些程序段。
4.管理相关临界区有三点要求:(1)一次最多让一个进程在临界区执行;(2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区;(3)不能强迫一个进程无限地等待进入它的临界区。
5.信号量S的物理意义如下: s>0时,S表示可使用的资源数或表示可使用资源的进程数。s=0时,表示无资源可供使用和表示不允许进程再进入临界区。s<0时,│S│表示等待使用资源的进程个数或表示等待进入临界区的进程个数。
6.Pv操作是指在信号量上进行的P操作和v操作。假定信号量为s,则P(s)和v(s)的定义如下: Procedure p(Var s:semaphore);
begin s:=s-1; if s<0 then w(s) end; Procedure v(Var s:semaphore);
begin s:=s+1; if s<=0 then r (s) end;
其中,W(s)表示将调用P(s)过程的进程置成“等待信号量s”的状态,且将其排入等待队列。R(s)表示释放一个“等待信号量s”的进程,该进程从等待队列退出并加入就绪队列中.
7.(1)对每一个共享资源(含变量)都要设立信号量,互斥时对一个共享资源设一个信号量,同步时对一个共享资源可能要设两个或多个信号量,视由几个进程来使用该共享变量而定。(2)互斥时信号量的初值可大于或等于1,同步时,至少有一个信号量的初值大于等于1。(3)Pv操作一定要成对调用,互斥时在临界区前后对同一信号量作Pv操作,同步时则对不同的信号量作Pv操作,Pv操作的位置一定要正确。(4)对互斥和同步混合问题.PV操作可能会嵌套,—般同步的Pv操作在外,互斥的Pv操作在内。
8通过专门的通信机制实现进程间交换大量信息的通信方式称为进程通信。最基本的通信原语有send原语和receive原语,前者负责发送信件,后者负责接收信件。
9.直接通信是固定在一对进程间进行的,而间接通信时以信箱为媒体实现通信。因此在send和receive原语中,第一个参数互不相同。直接通信时分别为接收者进程名和发送者进程名,而间接通情时均为信箱名。 10.在采用线程技术的操作系统中,线程与进程的根本区别在于:进程是资源的分配单位,而线程是调度和执行单位。 (四)应用题
1 分析:本题可参考读者写者问题,相当于两组读者使用一个共享文件的互斥问题。对共享资源AB路段设一个信号量s,对A、B两端的共享计数器cA和cB应设两个信号量sA和SB。所设计的程序段如下: BEGIN s,sa,ab: semaphore; ca,cb:integer; s:=1; sa:=1; sb:=1; Cobegin
Process car-ai;{I=1,2,……}
Begin p(sa); ca:=ca+1; if ca=1 then p(s); v(sa); {使信号灯A端绿,B端红,车辆从A端驶入AB段}
p(sa); ca:=ca-1; if ca=0 then begin {A,B两端都亮红灯2分钟} v(s) end; end; Process car-bj;{j=1,2,……}
Begin p(sb); cb:=cb+1; if cb=1 then p(s); v(sb); {使信号灯B端绿,A端红;车辆从B端驶入AB段}
p(sb); cb:=cb-1; if cb=0 then begin {A,B两端都亮红灯2分钟} v(s) end; end; coend; end;
2分析:此题类似于两个生产者消费者问题。采样过程相当于生产者,转换过程相当于消费者,显示过程为消费者,而转换过程还充当生产者。为此设立三个信号量:SS表示采集的微电压值能否存入缓冲区,初值为1;Sc表示缓冲区中是否有微电压值要转换成温度值,,初值为0;sD表示缓冲区是否有温度值要显示,初值为0。解决此同步问题的程序段为:
BEGIN ss,sc,sd: semaphore; buffer : integer; ss:=1; sc:=0; sd:=0; Cobegin
Process sample;
Begin L1: get a sample; p(ss); buffer:= sample; v(sc); goto L1 end; Process convert;
Begin L2: p(sc); take a sample from buffer; convert the sample to temperature; buffer:= temperature; v(sd); goto L2 end; Process display;
Begin L3: p(sd); take a temperature from buffer; v(ss); display the temperature; goto L3 end; Coend; end;
3.分析:本题也可看作是两个生产者消费者问题。Reader进程为生产者,Executor进程既是消费者又是生产者,Printer进程为消费者,由于这里有两个缓冲区,所以要设四个信号量:sR表示是否能把数据存入缓冲区B1,初值为1;SEl表示缓冲区Bl中是否已存有数据可供处理,初值为0;SE2表示是否把处理过的数据存入缓冲区B2,初值为1;sP表示缓冲区B2中是否已存有数据可供打印,初值为0。用Pv操作管理这三个并发进程的程序如下:
BEGIN sr,se1,se2,sp: semaphore; b1,b2 : integer; sr:=1; se1:=0; sp:=0; se2:=1; Cobegin Process reader; Var number:integer;
Begin L1: read a number ; p(sr); b1:= number; v(se1); goto L1 end; Process executor; Var number2:integer;
Begin L2: p(se1); take a number from b1; v(sr); process the number to number2; p(se2); b2:= number2; v(sp); goto L2 end; Process printer;
Begin L3: p(sp); take a number from b2; v(se2); print the number; goto L3 end; Coend; end;
4.设生产者消费者进程要设立的公用信箱B,假设现在信箱中放一封初始信件,表示物品已取走。用进程通信管理生产者消费者问题的程序如下: begin ….. PROCESS Producer; ……
L1: Produce a product; L2: receive(B,H);
If {x中没有表示物品已取走} then go to L2
else begin {组织回信M,M中含产品完成存放地点,产品说明,规格,价格等} send(B,M); end; goto L1 end;
PROCESS consumer; ……
L 3:receive(B,Y);
If {Y中表示产品已完成} then begin {按信件中地址取出比物品, 组织回信M;回信中表示物品已取走,并反映对产品的评价和处理情况} send(B,m); goto L3; end; ……. End; end;
第九章 死锁 练习题 (一)单项选择题
l系统出现死锁的根本原因是( )。 A.作业调度不当 B.系统中进程太多 C.资源的独占性 D.资源管理和进程推进顺序都不得当
2.死锁的防止是根据( )采取措施实现的。 A.配置足够的系统资源 B.使进程的推进顺序合理 C.破坏产生死锁的四个必要条件之一 D.防止系统进入不安全状态
3.采用按序分配资源的策略可以防止死锁.这是利用了使( )条件不成立。 A.互斥使用资源 B循环等待资源 c.不可抢夺资源 D.占有并等待资源
4.可抢夺的资源分配策略可预防死锁,但它只适用于( )。A.打印机 B.磁带机 c.绘图仪 D.主存空间和处理器
5.进程调度算法中的( )属于抢夺式的分配处理器的策略。A.时间片轮转算法 B.非抢占式优先数算法 c.先来先服务算法 D.分级调度算法
6.用银行家算法避免死锁时,检测到( )时才分配资源。 A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量 c.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量 D进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量
7.实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用 ( )策略。 A死锁的防止 B.死锁的避免 c.死锁的检测 D.死锁的防止、避免和检测的混合 (二)填空题
l若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。 2.如果操作系统对______或没有顾及进程______可能出现的情况,则就可能形成死锁。3.系统出现死锁的四个必要条件是:互斥使用资源,______,不可抢夺资源和______。 4.如果进程申请一个某类资源时,可以把该类资源中的任意一个空闲资源分配给进程,则说该类资源中的所有资源是______。 5.如果资源分配图中无环路,则系统中______发生。 6.为了防止死锁的发生,只要采用分配策略使四个必要条件中的______。 7.使占有并等待资源的条件不成立而防止死锁常用两种方法:______和______. 8静态分配资源也称______,要求每—个进程在______就申请它需要的全部资源。 9.释放已占资源的分配策略是仅当进程______时才允许它去申请资源。 10抢夺式分配资源约定,如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时、系统可以______该进程已占有的资源。 11.目前抢夺式的分配策略只适用于______和______。 12.对资源采用______的策略可以使循环等待资源的条件不成立。 13.如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于______。 14.只要能保持系统处于安全状态就可______的发生。 15.______是一种古典的安全状态测试方法。 16.要实现______,只要当进程提出资源申请时,系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。 17.可以证明,M个同类资源被n个进程共享时,只要不等式______成立,则系统一定不会发生死锁,其中x为每个进程申请该类资源的最大量。 18.______对资源的分配不加限制,只要有剩余的资源,就可把资源分配给申请者。 19.死锁检测方法要解决两个问题,一是______是否出现了死锁,二是当有死锁发生时怎样去______。 20.对每个资源类中只有一个资源的死锁检测程序根据______和______两张表中记录的资源情况,把进程等待资源的关系在矩阵中表示出来,以判别是否出现死锁。21.如果资源类中含有若干个资源,应根据进程对各类资源的占有量、______和各类资源的______来考虑是否有死锁存在。 22.解除死锁的方法有两种,一种是______一个或几个进程的执行以破坏循环等待,另一种是从涉及死锁的进程中______ 23.中断某个进程并解除死锁后,此进程可从头开始执行,有的系统允许进程退到发生死锁之前的那个______开始执行。 24.操作系统中要兼顾资源的使用效率和安全可靠,对不同的资源采用不同的分配策略,往往采用死锁的______、避免和______的混合策略。 (三)简答题
1.何谓死锁?产生死锁的原因是有哪些? 2.可以通过哪些途径防止死锁的产生? 3.什么叫系统处于安全状