欢迎来到天天文库
浏览记录
ID:32736746
大小:823.78 KB
页数:22页
时间:2019-02-15
《操作系统算法题.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.在信号量机制中,若P(S)操作是可中断的,则会有什么问题?答:P(S)的操作如下:BeginS.Value:=S.Value-1;①IfS.Value<0Then②BeginInsert(*,S.L);Block(*)③EndEnd.若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程继续执行而
2、被阻塞。这就出现了错误:本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。2.何谓临界区?下面给出的两个进程互斥的算法是安全的吗?为什么?#definetrue;#definefalse;Intflag[2];flag[1]=flag[2]=false;enter-crtsec(i)inti;{While(flag[1-i])flag[i]=true;}feave-crtsec(i)Inti;{flag[i]=false;}processI;…Enter-crtsec(i);Incriticals
3、ection;Leave-crtsec(i);答:一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。3.当进程X和进程Y共
4、享某个资源r,进程并发执行时的程序如下:BeginS:semaphore:=1;CobeginProcessXBeginL1:P(S);使用资源r;V(S);GotoL1;End;ProcessYBeginL2:P(S);使用资源r;V(S);GotoL2;End;Coend;End;请回答:(1)两个进程并发执行时,能否保证互斥地使用资源?为什么?(2)若要使用两个进程交替使用资源,仍使用P、V操作来进行管理,写出应定义的信号量及其初值。(3)修改上述程序,使两个进程能交替使用资源r。答:当进程X和进程Y共享某个资源r,回答
5、各问如下:(1)能保证互斥使用资源。因为在两个进程中,"使用资源r"都是作为临界区,由于P(S)和V(S)操作保证了互斥执行,S的初值定义为1,符合要求。(2)要使两个进程交替使用资源,仅仅保证互斥使用是不够的,必须要两个进程互相等待互相通知。为此,必须定义新的信号量。定义两个私有信号量S1和S2。假定进程X先使用资源,那么进程X的私有信号量S1的初值定义为1,进程Y的私有信号量S2的初值定义为0。轮流使用可以保证互斥,因此信号量S可以不要。(3)两个进程可以改写为:BeginS1:semaphore:=1;S2:semaph
6、ore:=1;CobeginProcessXBeginL1:P(S1);使用资源r;V(S2);GotoL1;End;ProcessYBeginL2:P(S2);使用资源r;V(S1);GotoL2;End;Coend;End;4.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:(1)用P、V操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量各种取值的含义。(2)根据所定义的信号量,把应执行的P
7、、V操作填入下述程序中,以保证进程能够正确地并发执行。CobeginPROCESSPi(i=1,2,…)Begin进入售票厅;购票;退出;End;Coend(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。答:售票厅问题解答如下:(1)定义一信号量S,初始值为20。S>0S的值表示可继续进入售票厅的人数;S=0表示售票厅中已有20名购票者;S<0
8、S
9、的值为等待进入售票厅中的人数。(2)上框为P(S),下框为V(S)。(3)S的最大值为20,S的最小值为20-N,N为某一时刻需要进入售票厅的最多人数。5
10、.已经系统中有四个缓冲池M0,M1,M2,M3。其容量分别为3、2、3、2,现各缓冲区分别存在0、1、0、2个数据。现同时有四个进程P0、P1、P2、P3分别在各缓冲区间不断地移动数据(见图3.5)。例如,P0进程从M0向M1移动数据。试用信号量及其P、V(或signal,w
此文档下载收益归作者所有