进程的同步与互斥概要.docx
《进程的同步与互斥概要.docx》由会员分享,可在线阅读,更多相关《进程的同步与互斥概要.docx(7页珍藏版)》请在冰豆网上搜索。
进程的同步与互斥概要
例题:
选择题
1、当一个进程独占处理器执行时,具有两个特性,即()。
A、封闭性和可再现性B、独立性和可再现性
C、开放性和可再现性D、顺序性和独立性
2、对于两个并发进程,设互斥信号量为A,若A=0,则()。
A、表示有一个进程进入临界区,另一个进程等待进入
B、表示有两个进程进入临界区
C、表示有一个进程进入临界区
D、表示没有进程进入临界区
3、进程并发执行时,执行结果与其执行的()有关。
A、绝对速度B、时间C、速度D、相对速度
4、造成进程结果不正确的因素与进程占用处理器的时间、执行的速度及外界的影响有关。
而这些因素都与时间有关,所以称为()。
A、时间因素B、与时间有关的错误C、时间错误D、时间问题
5、P、V操作是对()进行操作。
A、信号量B、执行速度C、执行时间D、执行结果
5、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的()。
A、调度B、执行C、同步D、互斥
6、信号量被定义为一个整型变量,其初始值是()。
A、0B、无任何限制C、负整数D、非负数
填空题:
1、并发进程间的关系可以是()的,也可以是有()的。
2、在用P、V操作实现同步时,一定要根据具体的问题来定义()和调用()。
3、每执行一次P原语操作,信号量s的数值减1,如果s>=0,该进程();若s<0,则()该进程,并把它插入该()对应的()队列中,重新进行进程调度。
综合应用题
1、假定有三个进程R、W1、W2共享一个缓冲器B,而B中每次只能存放一个数。
当缓冲器中无数时,进程R可将M输入设备上读入的数存放到缓冲器B中;若存放到缓冲器中的是奇数,则允许进程W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程W2将其取出打印。
同时规定:
进程R必须等缓冲器中的数被取出打印后才能再存放一个数;进程W1或W2对每次存入缓冲器中的数只能打印一次;W1和W2都不能从空的缓冲器中取数。
写出这三个并发进程能正确工作的程序。
分析:
在这个问题中把进程R看做是生产者,把进程W1和W2看做是消费者。
现有一个生产者(进程R)能生产不同的产品(读入奇数或偶数),把生产的产品存放在缓冲器B中,供不同的消费者(进程W1和进程W2)取用。
可以看出,当进程R读入的是奇数,则要把有奇数的消息发送给进程W1;当进程R读入的是偶数,则要把偶数的消息发送给W2,在进程W1或进程W2从缓冲器中取出数后,应把缓冲器中又可有一个数的消息告诉进程R,于是,可以定义如下三个信号量:
s表示是否可以把数存入缓冲器;由于缓冲器中每次只能放一个数,所以其初值取为“1”。
so表示缓冲器中是否有奇数;初值为“0”,表示无奇数。
se表示缓冲器中是否有偶数;初值为“0”,表示无偶数。
参考答案:
并发进程能正确执行的程序如下:
begin
B:
integer;
S,so,se:
semaphore;
S:
=1;
So:
=0;se:
=0;
Cobegin
ProcessR
X:
integer;
Begin
L1:
从输入设备读一个数;
X:
=读入的数
P(s);
B:
=x;
IfB=偶数thenV(so)
ElseV(se);
GotoL1
End;
ProcessW1
y:
integer;
Begin
L2:
P(so);
y:
=B;
V(s);
打印y中数;
GotoL2
End;
ProcessW2
z:
integer;
Begin
L3:
P(se);
z:
=B;
V(s);
打印z中数;
GotoL3
End;
Coend;
End;
2、桌上有一只盘子,每次只能放入一只水果,爸爸专向盘中放苹果(apple),妈妈专向盘中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子中的苹果。
只要盘子空则爸爸或妈妈可向盘中放一只水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出。
把爸爸、妈妈、儿子、女儿看做四个进程,用P、V操作进行管理使这四个进程能正确地并发执行。
分析:
这个问题实际上可看作是两个生产者和两个消费者共享了一个仅能存放一件产品的缓冲器。
生产者各自生产不同的产品,消费者各自取自己需要的产品。
由于盘子中每次只能存放一只水果,因此,爸爸和妈妈在存放水果时必须互斥。
儿子和女儿分别要吃桔子和苹果,因而,当爸爸向盘子中放了一只苹果后应把“盘中有苹果”的消息发送给女儿;当妈妈向盘子中放了一只桔子后应把“盘中有桔子”的消息发送给儿子;如果儿子或女儿取走了盘子中的水果,则应发送“盘子中又可存入水果”的消息。
但这个消息不应特定地发送给爸爸或妈妈,至于谁能再向盘子中放水果则通过竞争共享资源(盘子)的使用权来决定。
应怎样定义信号量呢?
首先应定义一个是否允许向盘子中存放水果的信号量s,其初始值为“1”,表示允许放一只水果;其次要定义两个信号量sp和so,分别表示盘子中是否有苹果或桔子的消息,初值应该为“0”。
至于儿子或女儿取走水果后要发送“盘子中又可存入水果”的消息,只要调用V(s)就可达到目的,所以不必再增加信号量了。
在程序段中,其中爸爸或妈妈在向盘子中存放水果之前调用了P(s),这个P(s)起两个作用:
(1)由于s的初值为“1”,所以P(s)限制了每次至多只有一个进程可向盘子中放水果,起到了互斥地向盘子中放水果的作用;
(2)由于盘中有水果且尚未被取走时,s的值为“0”,当盘中水果被取走后调用了V(s)使s的值又为“1”,因此P(s)起到了测试“盘子中又可存入水果”的消息是否到达的同步作用。
可见,在这个问题中信号量s既被作为互斥的信号量,又被作为同步的信号量,起到了双重作用。
参考答案:
begin
s,sp,so:
semaphore;
s:
=1;sp:
=0;so:
=0;
cobegin
processfather
begin
L1:
haveanapple;
P(s);
Putanapple;
V(sp);
GotoL1
end;
processmother
begin
L2:
haveanorange;
P(s);
Putanorange;
V(so);
GotoL2
end;
processson
begin
L3:
P(so);
getanorange;
V(s);
eatanorange;
GotoL3
end;
processdaughter
begin
L4:
P(sp);
getanapple;
V(s);
eatanapple;
GotoL4
end;
coend;
end;
自测
选择题
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、如果有4个进程共享同一程序段,每次允许3个进程进入该程序段,若用P、V操作作为同步机制则信号量的取值范围是()。
A、4,3,2,1,-1B、2,1,0,-1,-2
C、3,2,1,0,-1D、2,1,0,-2,-3
4、下列关于进程同步和互斥的说法中,错误的是()
A、进程互斥和进程同步有时也统称为进程的同步
B、进程互斥是进程同步的特例,互斥进程是竞争共享资源的使用,而同步进程之间必然有依赖关系
C、进程的同步和互斥都涉及到并发进程访问共享资源的问题
D、进程同步是进程互斥的一种特殊情况
5、由于并发进程之间()不能由进程本身控制,当它们在共享某些资源的时候可能会产生与时间有关的错误。
A、分配外部设备B、分配内存空间C、执行的相对速度D、占用存储器的位置
填空题
1、当一个进程独占处理器顺序执行时,具有两个特性:
()和()。
2、我们说可同时执行的进程具有并发性,并且把可同时执行的进程称为()。
3、P、V操作是对()的进程操作。
4、()是指当有若干个进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其它要使用该资源的进程必须等待,直到占用资源者释放了该资源。
5、()是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。
6、进程互斥是特殊的()。
7、P操作和V操作都是()操作,它们都是对()进行操作。
8、信号量S可以用来表示()的使用情况。
9、利用P、V操作管理相关临界区时,P、V操作必须成对出现。
在进入临界区之前要调用(),在完成临界区操作后要调用()。
10、用P、V操作实现生产者消费者之间的同步时,在访问共享缓冲区的()和(),分别调动P操作和V操作。
判断题
1、在生产者和消费者进程中,V操作的次序无关紧要,而P操作的次序不能颠倒。
2、进程互斥是进程同步的一种特殊情况。
3、P、V操作是原语操作,原语的执行可以不被中断。