thenW(S)thenW(S)
C.S:
=S+l
ifS<0
thenW(S)
D.S:
=S+l
ifS~<0
thenW(S)
42.对资源采用静态分配策略后,进程在执行时
A.可以继续申请资源
B.不需要继续申请资源
C.会出现等待资源状态
D.会抢占其他进程所占资源
43.设由3个进程共享一个资源,如果最多只允许2个进程同时使用该资源,那么使用PV
操作来保证合法使用该共享资源时,信号量的初值应为(、)
A.0B.1
C.2D.3
二、多项选择题
1.信箱通信方式中的信件的内容包括()
A.等/不等回信B.回信存放地址
c.发送者名D.信息(或信息存放地址和长度)
E.收信者名’
2.下面是关于进程的一些描述,其中——是错误的。
()
A.我们把一个程序在一个数据集上的一次执行称为一个进程
B.程序是静态的,而进程是动态的
C.进程包含了数据和运行于其上的程序,而且进程和程序是一一对应的
D.一个被创建了的进程,在它消亡之前,任何时刻总是处于三种基本状态之一
E.并发进程在访问共享资源时,一定会出现与时间有关的错误
3.信息通信方式需要——两原语的支持。
()
A.发送原语B.寄信原语
c.P操作原语D.接收原语
E.V操作原语
4.在下列算法中,用于进程调度的算法是()
A.最先适应B.先来先服务
c.均衡资源调度D.优先数调度
E.先进先出
5.信箱通信方式中,信箱的组成部分之一一信箱说明,主要有如下内容:
()
A.可存信件数B.已读信件数
c.可存信件的指针D.已有信件数
E.未读信件数
6.计算机系统中,会出现死锁现象的四个必要条件是
A.环路条件B.部分分配条件
c.互斥条件D.资源独占条件
E.不剥夺条件
7.进程通信方式可以分为
A.同步通信方式
c.低级通信方式
B.异步通信方式
D.高级通信方式
E.中级通信方式
8.形成死锁的起因是()
A.系统提供的资源数比进程要求的资源数少
B.进程之间的协作关系
C.进程之间的互斥
D.若干进程要求资源的总数大于系统能提供的资源数
E.各进程逐个申请资源
9.P、V操作可以用来实现
A.进程的同步B.进程的互斥
c.进程间的低级通信D.解决系统死锁问题
E.进程间的高级通信
10.信箱通信方式中,信箱是由______组成。
()
A.信息线标志B.信箱开头标志
c.信箱体D.信箱说明
E.已有信件数
三、填空题
1.并发进程中与共享变量有关的程序段称为______。
2.任一个进入临界区的进程必须在______时间内______临界区。
3.P操作和V操作都是______操作,它人都对______进行操作。
4.进程互斥是特殊的______。
5.并发进程之间交换信息的工作称为______。
6.形成死锁的起因是______。
7.防止死锁的方法有______、______和______。
8.一组可同时执行的进程称为______进程。
.
9.死锁的检测是为了______。
IO.产生死锁的四个必要条件是______、______、______、______。
11.每执行一次V原语,信号量的数值s加1。
如果______,Q进程继续执行;如果s≤
0,则从对应的______队列中移出一个进程R,该进程状态变为______。
12.利用信号量实现进程的______,应为临界区设置一个信号量mutex。
其初值为
______,表示该资源尚未使用,临界区应置于______和______原语之间。
四、简答题
1.什么叫并发进程?
答:
在多道程序设计系统中,作为单个作业可以同时执行,而每一个作业又需要有多个进程的协作完成。
因此,系统会同时存在着许多进程,在单处理器的情况下,这些进程轮流的占用处理器,即一个进程的工作没有全部完成之前,另一个进程就开始工作,我们说
这些可同时执行的进程具有并发性,并且把可同时执行的进程称为“并发进程”。
2.临界区是怎样定义的?
对相关临界区的管理应符合哪些要求?
答:
并发进程中与共享变量有关的程序段称为“临界区”。
对若干个并发进程共享某一变量的相关临界区的管理有三点要求:
(1)一次至多一个进程能够进入临界区,当有进程在临界区执行时,其他想进入·1各界区执行的进程必须等待。
(2)不能让一个进程无限制的在临界区执行,即任何一个进入临界区的进程必须在有限的时间内退出临界区。
(3)不能强迫一个进程无限期等待进入它的临界区,即有进程退出临界区时应让一个等待进入‘临界区的进程进入它的临界区执行。
3.采用P、V操作作为同步机制时,假定与某共享变量相关的信号量s的值可在[-1,
1]之间,问s的初值是哪个值?
当s=一l,S=O,s=1时它们各自的物理含义是什么?
答:
S的初值是1。
S=一l,表示有一个进程在等待进入临界区执行。
s=O,表示已有一个进程在临界区执行,这时若有进程想进入临界区则必须等待。
s=l,表示无进程在临界区执行,若有进程想进入临界区则可以立即进入。
4.请简述P、V.操作的过程。
答:
PV操作实际上是两个操作P操作和V操作。
这两种操作在执行其间是不允许中断的。
凡是执行中不允许中断的过程称作原语。
所以P操作和V操作是原语操作。
5.用P、V操作实现并发进程的互斥和同步,要注意什么问题?
答:
用PV操作实现并发进程的互斥和同步,要注意下面4个方面:
①识别临界资源:
一是看是否被共享,二是看是否在排他性要求。
②划出临界区。
PV原语操作应分别紧靠临界区的头尾部。
③临界区代码应尽可能短小,不能有死循环。
④要保证PV操作在程序相关的任一执行流程上成对出现。
6.进程同步和进程互斥之间有什么关系?
答:
进程同步和进程互斥之间有以下的关系:
①进程互斥可在伙伴进程之间,也可以在非伙伴进程之间;同步发生在相互有逻辑关系的伙伴进程之间。
②广义地看,互斥是一种特殊的互斥。
所以把用来解决进程互斥和同步的工具统称为同步机制。
7.什么是进程通信?
什么是低级进程通信方式?
什么是高级通信方式?
答:
进程通信是指并发进程之间交换信息的工作。
应该说PV操作是进程之间进行通信的一种低级方式,因为这种通信方式只交换了很少量的信息。
利用专门的通信机制来实现
进程之间大量信息的交换的方式称为高级的通信方式。
8.通信机制中设置哪些基本通信原语?
它们的功能是什么?
答:
系统提供两个与信箱通信有关的通信原语:
send原语(发送)和receive原语(接收)。
send(B,M)原语把信件M送入到信箱B中,receive(B,M)原语从信箱B中取出一封信存放到指定的地址x中。
9.什么叫死锁?
什么原因会引起死锁?
答:
若系统中存在一组进程(二个或多个进程),他们中的每一个进程都占用某种资源而又都在等待其中另一个进程所占用的资源,这种等待永远不能结束,就说系统出现“死锁”。
进程死锁的起因是系统提供的资源数比要求使用资源的进程数少。
或者是若干个进程要求资源的总数大于系统能提供的资源数。
这时,进程问就会出现竞争资源的现象,如果对进程竞争的资源管理和分配不当就会引起死锁。
死锁的出现是与资源分配策略和并发进程的执行速度有关。
10.有哪些策略可防止和避免死锁?
答:
防止死锁的策略有:
静态分配、按序分配、剥夺式分配。
银行家算法可以避免死锁。
五、综合题
1.A、B两个火车站之间是单轨连接的,现在有许多列车同时到达A站,需经A站到达B
站,列车出B站后又可分路行驶(如下图),为保证行驶安全,请你当调度时,你将如何调度列车?
请你用PV操作为工具设计一个能实现你的调度方案的自调度系统。
车站连接示意图
答:
当A、B站之间无列车停驶时,可让到达A站的一列车进入A、B站之间行驶。
当A、B站之间有列车在行驶时,则到达A站者必须在站外等待。
当有列车到达B站后,让等在A站外的一列车进入。
用一个信号量S来控制到达A站的列车能否进入单轨道行驶,S的初始值为1。
列车到达A站后,先执行P(S),若无列车在A、B站之间行驶,则执行P(S)后立即进入单轨道行驶,到达B站后,执行V(s),可释放一个等待进入的列车进入行驶。
若A、B站之间已有列车在行驶,则执行P(s)后就等待,直到行驶者到了B站执行V(s)后释放一个欲进入者。
2.今有三个并发进程R、M、P,它们共享一个缓冲区,R负责从输人设备读信息,每次
读出一个记录并把它存放在缓冲区中;M对缓冲区中的记录加工;P把加工后的记录打
印输出。
渎人的记录经加工后,缓冲区中又可存放下一个记录。
请用PV操作为同步机
制写出它们并发执行时能正确工作的程序。
答:
三个进程共用一个缓冲区,他们必须同步工作,可定义三个信号量:
s1:
表示是否可把读入的记录放到缓冲区。
初始值为l。
s2:
表示是否可时缓冲区中的记录加工,初始值为0。
S3:
表示记录是否加工好,可以输出,初始值也为0。
三个进程可如下设计:
besi.
S1,s2,S3:
semapllore;
SI:
=I;S2:
=S3:
=0;
cobegin
processR
begin
Ll:
读记录;
P(S1);
记录存入缓冲区;
V(s2);
gotoL1:
end:
processM
Begin
L2:
P(S2);
加工记录;
V(S3);
gotoL2;
end;
processP
begin
L3:
P(S3);
输出加工后的记录;
V(S1);、
gotoL3;
end;
coend;
end.
3.现有四个进程R1、R2、wl和w2,它们共享主存中可以存放一个数的缓冲器B。
进程
R1每次把从磁盘上读人的一个数存到缓冲器B中,供进程wl打印输出;进程R2每次
从键盘上读一个数存放到缓冲器B中,供进程V汜打印输出。
当一个进程把数存放到缓
冲器后,在该数还没有被打印输出之前不准任何进程再向缓冲器中存数。
当一个进程已
把缓冲器中的数打印输出后,在缓冲器中还没有存人一个新数之前不准任何进程再从缓
冲器中取数打印。
怎样用PV操作使这四个进程并发执行时能协调地工作?
答:
这四个进程实际上是两个生产者Rl,R2和两个消费者W1,W2。
各自生成不同的产品供各自的消费对象去消费,他们共享一个缓冲器。
由于缓冲器只能存放一个数。
所以,R1和R2在存放数时必须互斥。
而Rl和W1、R2和W2之间存在同步。
为了协调它们的工作,可定义三个信号量:
S:
表示能否把数存入缓冲器B,初始值为1。
S1:
表示R1是否已向缓冲器存入从键盘上读入的一个数,初始值为0。
S2:
表示R2是否已向缓冲器存入从磁盘上读入的一个数。
初始值为0。
begin
S,Sl,s2:
semaphore:
S:
:
1;S1:
=s2:
=0;
cobegin
processR1
xl:
integer;‘、
begin
L1:
从键盘读一个数;
xl:
=读入的数:
一
P(S);
B:
。
xl:
V(S1);
gotoL1;
end;
processR2
x2:
integer;
begin
L2:
从磁盘读一数;
x2:
=读入的数:
P(S);
B:
=x2;
V(S2);
gotoL2;-
end;
processW1
Y:
integer;
begin
L3:
P(S1);
Y:
=B;
V(S);
打印Y中的数;
gotoL3;
end;
processW2
z:
integer;
begin
L4:
P(S2);
Z:
=B;
V(S);
打印Z中的数;
gotoL4;
end;
coend;
end.
4.两个并发进程的程序如下:
begjn
N:
integer;
N:
=3;
cobegin
processA
begin
Ll:
N:
=N+5;.
g0tOLl‘
end;
processB‘
begin.
L2:
print(N);
N:
=0:
g0t0L2
end;
eoend;
end;
若proeessA先执行了三个循环后,processA和processB又并发执行了一个循环,写出可能出现的打印值。
请用PV操作实现同步,使两并发进程能正确执行。
答:
可能的值是18或23。
这是因为processA执行三个循环后,N=18,之后A和
发执行。
可能先执行A中的N:
:
N+5,再执行B中的print(N);这样就会得到23
可能先执行B中的print(N);这就会得到18。
可以利用P、V操作实现同步:
begin
N:
integer;
S:
semaphore;
S:
=l;
N:
=3:
cobegin
processA
begin
L1:
P(S);
N:
=N+5:
V(S);
gotoL1;
end;一
processB
begin.
L2:
P(S);
print(N);
N:
=0:
V(S);
gotoL2;
end;
coend;
end.
5.某系统有输入机和打印机各一台,今有两个进程都要同时使用它们,采用PV操作实现请求使用和归还释放后,还会产生死锁吗?
若否,说明理由;若会产生死锁则给出一种防止死锁的方法。
答:
如果PV操作设计不当,仍会产生死锁。
假如用S1和s2分别代表输入机和打印机能否被使用的信号量,由于资源是共享的,所以必须互斥使用,因而它们的初始值都为1。
如果用如下方式实现请求使用和归还释放:
processQ1
begin
P(S1);
使用输入机:
P(S2);
使用打印机;
V(S2);
V(S1);
end;
processQ2.
begin
P(S2);
使用打印机;
P(S1);
使用输入机:
V(S2);
V(S1);
end;
那么就会出现Ql得到输入机而Q2得到打印机,双方在不释放已经有的资源的情况下又去申请新的资源,就会造成死锁。
可以采用为资源编序号的方法,要求按序申请如下:
proce88Ql
begin
P(S1);
使用输入机;
P(S2);。
使用打印机;
V(S2);
V(S1);
end:
pmcessQ2
begin
P(S1);
使用输入机;
P(s2);
使用打印机;r.
V(S2);
V(S】);
end.
6.某一系统分配资源的策略是;当进程提出申请资源时,只要系统有资源总是分配给它,系统无资源时让它等待。
任一进程总是先释放已占有的资源后再申请新的资源,且每次申请一个资源,系统中的进程得到资源后总能在有限时间内归还。
证明该系统不会发生死锁。
答:
任一进程P申请资源时出现两种情况:
情况一,立即得到满足,此时不会成为等待状态,也就不存在引起死锁的条件。
情况二,得不到满足,处于等待资源状态。
此时,资源一定被另一进程占有。
进程Q执行时若不再申请资源,则必在有限时间里归还资源,于是P不会永远等待。
如果进程Q执行时要申请资源,按照题意,它一定先释放占有的资源,于是P也不会永远等待。
所以。
任一进程申请资源总能在有限时间得到资源,因而不会产生死锁。
7.假设某系