习题解答第4章.docx

上传人:b****5 文档编号:8613594 上传时间:2023-02-01 格式:DOCX 页数:12 大小:35.11KB
下载 相关 举报
习题解答第4章.docx_第1页
第1页 / 共12页
习题解答第4章.docx_第2页
第2页 / 共12页
习题解答第4章.docx_第3页
第3页 / 共12页
习题解答第4章.docx_第4页
第4页 / 共12页
习题解答第4章.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

习题解答第4章.docx

《习题解答第4章.docx》由会员分享,可在线阅读,更多相关《习题解答第4章.docx(12页珍藏版)》请在冰豆网上搜索。

习题解答第4章.docx

习题解答第4章

习题解答

第四章并发进程的同步与互斥

1、进程间同步和互斥的含义是什么?

答:

同步:

并发进程之间存在的相互制约和相互依赖的关系。

  互斥:

若干进程共享一资源时,任何时刻只允许一个进程使用。

2、用文字描述银行家算法的基本思想?

答:

银行家算法的基本思想是:

将系统中的所有资源比做银行家的资金,每进行

一次资源的分配,银行家都要从当前的资源分配情况出发,计算这种分配方案的

安全性,如果是安全的,则进行分配,否则选择其它可能的分配方案。

这样,每

次分配都计算安全性,从而可以避免死锁的发生。

3、简述死锁的防止与死锁的避免的区别。

答:

死锁的防止是系统预先确定一些资源分配策略,进程按规定申请资源,系统按预先规定的策略进行分配,从而防止死锁的发生。

而死锁的避免是当进程提出资源申请时系统测试资源分配,仅当能确保系统安全时才把资源分配给进程,使系统一直处于安全状态之中,从而避免死锁。

4、试说明资源的静态分配策略能防止死锁的原因。

答:

资源静态分配策略要求每个进程在开始执行前申请所需的全部资源,仅在系统为之分配了所需的全部资源后,该进程才开始执行。

这样,进程在执行过程中不再申请资源,从而破坏了死锁的四个必要条件之一“占有并等待条件”,从而防止死锁的发生。

5、有三个进程P1,P2和P3并发工作。

进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3。

回答:

  

(1)若对资源分配不加限制,会发生什么情况?

为什么?

  

(2)为保证进程正确工作,应采用怎样的资源分配策略?

为什么?

答:

.

(1)可能会发生死锁

  例如:

进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等待(2分),这是循环等待。

  (或进程在等待新源时均不释放已占资源)

  

(2)可有几种答案:

  A.采用静态分配 由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。

  或B.采用按序分配   不会出现循环等待资源现象。

  或C.采用银行家算法  因为在分配时,保证了系统处于安全状态。

6、某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。

若把一个购票者看作一个进程,请回答下列问题:

  

(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

  

(2)根据所定义的信号量,把应执行的PV操作填入适当,以保证进程能够正确地并发执行。

 COBEGIN PROCESS PI(I=1,2,……)

     begin        ;

         进入售票厅;

         购票;

         退出;

     end;

 COEND

(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。

答:

.

(1)定义一信号量S,初始值为20。

  意义:

  S>0 S的值表示可继续进入售     票厅的人数

  S=0 表示售票厅中已有20名顾     客(购票者)

  S<0 |S|的值为等待进入售票     厅的人数 

(2)P(S)

 进入售票厅;

         购票;

         退出;

V(S) 

  (3)S的最大值为20

   S的最小值为20-n 

  注:

信号量的符号可不同(如写成t),但使用时应一致(即上述的s全应改成t)。

7、假定系统有三个并发进程read,move和print共享缓冲器B1和B2。

进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。

进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。

进程print将B2中的记录取出打印输出。

缓冲器B1和B2每次只能存放一个记录。

要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。

请用PV操作,写出它们的并发程序。

答:

beginSR,SM1,SM2,SP:

semaphore;

B1,B2:

record;

SR:

=1;SM1:

=0;SM2:

=1;SP:

=0

cobegin

processread

X:

record;

beginR:

(接收来自输入设备上一个记录)

X:

=接收的一个记录;

P(SR);

B1:

=X;

V(SM1);

gotoR;

end;

Processmove

Y:

record;

begin

M:

P(SM1);

Y:

=B1;

V(SR)

加工Y

P(SM2);

B2:

=Y;

V(SP);

gotoM;

end;

Processprint

Z:

record;

begin

P:

P(SP);

Z:

=B2;

V(SM2)

打印Z

gotoP;

end;

coend;

end;

8、某系统中有10台打印机,有三个进程P1,P2,P3分别需要8台,7台和4台。

若P1,P2,P3已申请到4台,2台和2台。

试问:

按银行家算法能安全分配吗?

请说明分配过程。

答:

系统能为进程P3分配二台打印机。

因为尽管此时10台打印机已分配给进程P14台,P22台和P34台,全部分配完,但P3已分配到所需要的全部4台打印机,它不会对打印机再提出申请,所以它能顺利运行下去,能释放占用的4台打印机,使进程P1,P2均可能获得乘余的要求4台和5台,按银行家算法是安全的。

9、有两个用户进程A和B,在运行过程中都要使用系统中的一台打印机输出计算结果。

(1)  试说明A、B两进程之间存在什么样的制约关系?

(2)   为保证这两个进程能正确地打印出各自的结果,请用信号量和P、V操作写出各自的有关申请、使用打印机的代码。

要求给出信号量的含义和初值。

答:

(1)A、B两进程之间存在互斥的制约关系。

因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用。

(2)mutex:

用于互斥的信号量,初值为1。

进程A进程B

......

......

P(mutex)P(mutex)

申请打印机申请打印机

使用打印机使用打印机

V(mutex)V(mutex)

试以生产者—消费者问题说明进程同步问题的实质。

答:

一个生产者,一个消费者和一个产品之间关系是典型的进程同步问题。

设信号量S为仓库内产品,P-V操作配对进行缺一不可。

生产者进程将产品放人仓库后通知消费者可用;消费者进程在得知仓库有产品时取走,然后告诉生产者可继续生产。

10、请描述产生死锁的四个必要条件。

答:

互斥使用(资源独占)一个资源每次只能给一个进程使用

不可强占(不可剥夺)资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放

请求和保持(部分分配,占有申请)-一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)

循环等待-存在一个进程等待队列{P1,P2,…,Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路

11、两个并发执行的进程A和B的程序如下:

 

进程A

Repeat

N=N+5;

Untilfalse;

 

进程B

Repeat

打印N的值;

N=0;

Untilfalse;

其中N为整数,初值为4。

若进程A先执行了三个循环后,进程A和进程B又并发执行了一个循环,写出可能出现的打印值。

正确的打印值应该是多少?

请用P、V操作进行管理,使进程A和B并发执行时不会出现与时间有关的错误。

 

答:

因为N初值为4,若进程A先执行了三个循环,此时N的值为19。

当进程A和进程B并发执行时可能会有如下两种执行次序,即进程A先执行一次循环,然后再进程B执行一次循环,此时打印的是正确值24,执行后N中的值为0。

但若进程B先执行一次循环,然后再进程A执行一次循环,则打印的值是19,执行后N中的值是5。

这是错误的,即发生了与时间有关的错误。

用P、V操作进行管理,使进程A和B并发时不会出现与时间有关的错误的程序如下:

(S为互斥信号量,初值为1),

进程A

Repeat

P(S);

N=N+5;

V(S);

Untilfalse;

 

进程B

Repeat

P(S);

打印N的值;

N=0;

V(S);

Untilfalse;

12、四个进程P0,P1,P2,P3和四个信箱M0,M1,M2,M3进程间借助相邻的信箱传递消息:

  

每次从中取出一条消息,经加工送入中。

其中M0,M1,M2,M3分别设有3,3,2,2个格子,每个格子放一条消息,初始时,M0装满了三条消息,其余为空。

写出使用信号量实现进程(i=0,1,2,3)同步及互斥的流程。

答:

mutex0~mutex3:

分别用于控制互斥访问M0~M3,初值为1。

full0~full3:

分别用于控制同步访问M0~M3,其中full0初值为3,full1~full3初值为0,表示信箱中消息条数。

 

empty0~empty3:

分别用于同步控制对M0~M3的访问。

Empty0初值为0,empty2~empty3初值为2,empty1初值为3,分别用于表示信箱中空格子个数。

另用send(Mi,message)表示将消息送到(Mimod4)号信箱中;而用receive(Mi,message)表示接收已存在于(Mimod4)中的消息。

则使用信号量实现进程Pi(i=0,1,2,3)同步及互斥的流程如下:

mutex0,mutex1,mutex2,mutex3:

semaphore;

full0,full1,full2,full3:

semaphore;

empty0,empty1,empty2,empty3:

semaphore;

begin

  mutex0:

=1;  mutex1:

=1;  mutex2:

=1;  mutex:

=1;

  full0:

=3;  full1:

=0;  full2:

=0;  full3:

  =0;

  empty0:

=0;  empty1:

=3;  empty2:

=2;  empty3:

=2;

  Parbegin

      P0:

begin

repeat

P(mutex0);

P(full0);

Receive(M0,message);

V(empty0);

Processingthemessageuntilfinished;

P(mutex1);

P(empty1);

Send(M1,message);

V(full1);

V(mutex1);

            Untilfalse;

            …

            end;

      P1:

{可类似于P0实现之};

      P2:

{可类似于P0实现之};

      P3:

{可类似于P0实现之};

    Parend;

    End;

13、设系统中仅有一类数量为M的独占型资源,系统中N个进程竞争该类资源,其中各进程对该类资源的最大需求量为W。

当M、N、W分别取下列值时,试判断哪些情况会发生死锁?

为什么?

① M=2,N=2,W=1  ②M=3,N=2,W=2  ③M=3,N=2,W=3

④M=5,N=3,W=2⑤M=6,N=3,W=3

答:

③可能会发生死锁。

只要一个进程占用了少于3个独占型资源而另一个进程占用了其余的独占型资源,两个进程都会相互处于等待对方进程释放资源的状态。

⑤也可能会发生死锁。

当每个进程都分配了两个资源时,3个进程都会彼此等待。

14、假定具有5个进程的进程集合P={P0,P1,P2,P3,P4},系统中有三类资源A,B和C。

其中A类资源有10个,B类资源有5个,C类资源有7个。

假定在某时刻有如下状态:

        Allocation          Max          Available

          A  B  C      A  B  C      A  B  C 

        P0  0  1  0      7  5  3      3  3    2

        P1  2  0  0      3  2  2              

        P2  3  0  2      9  0  2

        P3  2  1  1      2  2  2

        P4  0  0  2      4  3  3

      试给出Need,并说明当前系统是否处于安全状态,如果是,给出安全序列。

如果不是,说明理由。

答:

    当前系统处于安全状态,安全序列如下求解:

    work=Available=(3,3,2)

      寻找 Needj<=  work  =  (3,3,2)(  j  =0,1,2,3,4)

      j=1  Need1=(1,2,2)<=  (3,3,2)

      work:

=  (3,3,2)+(2,0,0)=  (5,3,2)

      寻找 Needj<=  work  =  (5,3,2)(  j  =0,2,3,4)

      j=3  Need3=(0,1,1)<=  (5,3,2)

      work:

=  (5,3,2)+(2,1,1)=(7,4,3)

      寻找 Needj<=  work  =  (7,4,3)(j=0,2  ,4)

      j=4  Need4=(4,3,1)<=  (7,4,3)

      work:

=  (7,4,3)+(0,0,2)=(7,4,5)

      寻找 Needj<=  work  =  (7,4,5)(j=0,2)

      j=2  Need2=  (6,0,0)<=  (7,4,5)

      work:

=  (7,4,5)+(3,0,2)=  (10,4,7)

      寻找 Needj<=  work  =  (10,4,7)(j=0)

      j=0  work:

=  (10,4,7)+(0,1,0)=(10,5,7)

    所以安全序列为<P1,P3,P4,P2,P0>(不止一个)。

例如:

<P1,P3,(P4,P2,P0)>、<P1,P4,(P4,P2,P3)>、<P3,P1,(P4,P2,P0)>

15、有一阅览室,读者进入时必须先在一张登记表上登记。

该表中每个表项代表阅览室中的一个座位。

读者离开时要消掉其登记信息。

阅览室共有50个座位。

登记表每次仅允许一位读者进行登记或注销。

读者登记时,发现登记表满,他在阅览室外等待,直至有空位再登记进入。

试用类Pascal语言和P、V操作,描述读者行为。

答:

Begin{initialvalueofSis50}

Parbegin

  Begin{register}

    P(S);

    Registerandenterintothereadingroom;

  End;

  

  Begin{leaveoff}

  Registeroffandleave;

  V(S);

End;

      End;

16、考虑一个共有150个存储单元的系统,如下分配给三个进程,P1最大需求70,己占有25;P2最大需求60,己占有40;P3最大需求60,己占有45。

使用银行家算法,以确定下面的任何一个请求是否安全。

(1)P4进程到达,P4最大需求60,最初请求25个。

(2)P4进程到达,P4最大需求60,最初请求35。

如果安全,找出所有的安全序列;如果不安全,给出结果分配情况。

答:

(1)由于系统目前还有150-25-40-45=40个单元,P4进程到达,把25个单元分给它。

这时系统还余15个单元,可把15个单元分给P3,它执行完后会释放60个单元。

于是可供P1(还要45个单元),P2(还要20个单元),P4(还要35个单元)任何一个执行。

安全序列为:

P1,P2,P3,P4,P3,P1,P2,P4

P1,P2,P3,P4,P3,P1,P4,P2

P1,P2,P3,P4,P3,P2,P1,P4

P1,P2,P3,P4,P3,P2,P4,P1

P1,P2,P3,P4,P3,P4,P1,P2

P1,P2,P3,P4,P3,P4,P2,P1

(2)P4进程到达,P4最大需求60,最初请求35。

如果把35个单元分给P4,系统还余5个单元,不再能满足任何一个进程的需求,系统进入不安全状态。

17、在一个盒子里,混装了数量相等的黑白围棋子。

现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1和P2,其中P1拣白子;P2拣黑子。

规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣。

试写出两进程P1和P2能并发正确执行的程序。

答:

实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。

varS1,S2:

semaphore;

S1:

=1;S2:

=0;

cobegin

{

processP1

begin

repeat

P(S1);

拣白子

V(S2);

untilfalse;

end

processP2

begin

repeat

P(S2);

拣黑子

V(S1);

untilfalse;

end

}

coend.

18、系统有A、B、C、D共4种资源,在某时刻进程P0、P1、P2、P3和P4对资源的占有和需求情况如表,试解答下列问题:

Process

Allocation

Claim

Available

ABCD

ABCD

ABCD

P0

0032

0044

1622

P1

1000

2750

P2

1354

361010

P3

0332

0984

P4

0014

06610

(1)系统此时处于安全状态吗?

为什么?

(2)若此时P2发出request1(1、2、2、2),系统能分配资源给它吗?

为什么?

答:

(1)系统处于安全状态,存在安全序列:

P0,P3,P4,P1,P2

P0,P3,P1,P4,P2

P0,P3,P1,P2,P4

(2)不能分配,否则系统会处于不安全状态。

19、假设有32个存储区域,其编号为0,1,…,31,用一个32位的标志字,位号也是0,1,…31,分别描述32个存储区域使用状态:

当某一位为1时,表示对应存储区域已分配,若为0,表示对应存储区域空闲。

  get进程:

负责存储区域分配,每次分配一个区域,找出标志字某为0的位置成1。

  put进程:

负责存储区域回收,把回收存储区域标志字对应位清成0。

  要求:

  

(1)分析get进程与put进程的具体同步关系。

答:

get进程分配完32.个存储区域后,再执行分配时必须等待put进程回收区域,而put进程无须等待分配进程get;get与put共享32位的标志字,它们必须互斥访问

  

(2)采用PV操作同步工具,写出get进程与put进程的同步算法(可用流程图描述,但信号量名称、作用、初值必须说明。

答:

mutex是互斥信号量,初值是1,对32位标志字进行保护;

S是标志字的同步信号量,初值为32,表示系统开始时32个区域均空闲,可供分配。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1