操作系统习题答案第.docx
- 文档编号:673404
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:75
- 大小:60.79KB
操作系统习题答案第.docx
《操作系统习题答案第.docx》由会员分享,可在线阅读,更多相关《操作系统习题答案第.docx(75页珍藏版)》请在冰豆网上搜索。
操作系统习题答案第
CH3应用题参考答案
1、有三个并发进程:
R负责从输入设备读入信息块,M负责对信息块加工处理;P负责打印输出信息块。
今提供;
l)一个缓冲区,可放置K个信息块;
2)二个缓冲区,每个可放置K个信息块;
试用信号量和P、V操作写出三个进程正确工作的流程。
答:
1)varB:
array[0,k-1]ofitem;
sread:
semaPhore:
=k;
smanage:
semaPhore:
=0;
swrite:
semaphore:
=0;
rptr:
integer:
=O;
mptr:
integer:
=O;
wptr:
integer:
=0;
x:
item
cobegin
processreader;processmanager;processwriter;
beginbeginbegin
LI:
readamessageintox;L2:
P(smanage);L3:
P(swnte);
P(sread);x:
=B[mptr];x:
=B[swrite];
B[rptr]:
=x;mptr:
=(mptr+1)modk;wptr:
=(wptr+1)modk;
Rptr:
=(rptr+1)modk;managethemessageinx;V(sread);
V(smanage);B[mptr]:
=x;printthemessageinx;
GotoL1;V(swrite);gotoL3;
End;gotoL2;end;
End;
coend
2)varA,B:
array[0,k-l]ofitem;
sPut1:
semaphore:
=k;
SPut2:
semaPhore:
=k;
sget1:
semaPhore:
=0;
sget2:
semaphore:
=0;
put1:
integer:
=O;
put2:
integer:
=0;
get1:
integer:
=O;
get2:
integer:
=O;
cobegin
processreader;processnmanager;processWriter;
beginbeginbegin
Ll:
readamessageintox;L2:
P(sgetl);L3:
P(sgetZ);
P(SPut1);x:
=A[get1];x:
=B[get2];
A[put1]:
=x;get1:
(get1+1)modk;get2:
=(get2+l)modk;
Put1:
=(put1+1)modk;V(sput1);V(sput2);
V(sget1);managethemessageintox;printthemessageinx;
GotoL1;P(sput2);gotoL3;
Put2:
=(put2+1)modk;
V(sget2);
GotoL2;
End;
Coend
2设有n个进程共享一个互斥段,如果:
(1)每次只允许一个进程进入互斥段;
(2)每次最多允许m个进程(m簇n)同时进入互斥段。
试问:
所采用的信号量初值是否相同?
信号量值的变化围如何?
答:
所采用的互斥信号量初值不同。
1)互斥信号量初值为1,变化围为[-n+l,1]。
当没有进程进入互斥段时,信号量值为1;当有1个进程进入互斥段但没有进程等待进入互斥段时,信号量值为O;当有1个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为-1;最多可能有n-1个进程等待进入互斥段,故此时信号量的值应为-(n-1)也就是-n+1。
2)互斥信号量初值为m,变化围为[-n+m,m]。
当没有进程进入互斥段时,信号量值为m;当有1个进程进入互斥段但没有进程等待进入互斥段时,信号量值为m-1:
当有m个进程进入互斥段且没有一个进程等待进入互斥段时,信号量值为0:
当有m个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为一l;最多可能有n-m个进程等待进入互斥段,故此时信号量的值应为-(n-m)也就是-n+m.
3有两个优先级相同的进程P1和P2,各自执行的操作如下,信号量S1和S2初值均为0。
试问Pl、P2并发执行后,x、y、z的值各为多少?
P1:
P2:
Beginbegin
Y:
=1;x:
=1;
Y:
=y+3;x:
=x+5;
V(S1);P(S1);
Z:
=Y+1;X:
X+Y;
P(s2);V(S2);
Y:
=z+y;z:
=z+x;
Endend
答:
现对进程语句进行编号,以方便描述.
P1:
P2:
beginbegin
y:
=1;①x:
=1;⑤
y:
=y+3;②x:
x+5;⑥
V(S1);P(S1);
Z:
Y+1;③x:
X+Y;⑦
P(s2);V(S2);
Y:
=z+y;④z:
=Z+X;⑧
Endend
①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的。
接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到x=10,y=4。
按Bernstein条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到z=5。
最后,语句④和⑧并发执行,这时得到了两种结果为:
语句④先执行:
x=10,y=9,z=150
语句⑧先执行:
x=10,y=19,z=15
此外,还有第三种情况,语句③被推迟,直至语句⑧后再执行,于是依次执行以下三个语句:
7:
二z+X:
z:
=y+1;
y:
=Z十y;
这时z的值只可能是y+1=5,故y=Z+Y=5+4=9,而x=10。
第三种情况为:
x=10,Y=9,Z=5。
4有一阅览室,读者进入时必须先在一登记表上登记,该表为每一座位列出一个表目,包括座号、,读者离开时要注销登记信息;假如阅览室共有100个座位。
试用:
l)信号量和P、V操作;2)管程,来实现用户进程的同步算法。
答:
1)使用信号量和P、v操作:
varname:
array[l…100]ofA;
A=record
number:
integer;
name:
string;
end
fori:
=1to100do{A[i].number:
i;A[i].name:
null;}
mutex,seatcount:
semaphore;
i:
integer;mutex:
=l;seatcount:
=100;
cobegin
{
processreaderi(varreadename:
string)(i=1,2…)
{
P(seatcount);
P(mutex);
fori:
=1to100doi++
ifA[i].name=nullthenA[i].name:
readername;
readergettheseatnumber=i;/*A[I].number
V(mutex)
进入阅览室,座位号i,座下读书;
P(mutex);
A[i]name:
null;
V(mutex);
V(seatcount);
离开阅览室;
}
}
coend
2)使用管程操作:
TYPEreadbook=monitor
VARR:
condition;
I,seatcount:
integer;
name:
array[l:
100]ofstring;
DEFINErcadercome,readerleave;
USEcheck,wait,signal,release;
Procedurereadercome(readername)
begin
check(IM);
ifseatcount≥100wait(R,IM)
seatcount:
=seatcount+1;
fori=1to100doi++
ifname[i]==nullthenname[i]:
=readername;
gettheseatnumber=i;
release(IM);
end
procedurereaderleave(readername)
begin
check(IM);
seatcount--;
fori=1to100doi++
ifname[i]readernamethenname[i]:
null;
release(IM);
end
begin
seatcount:
=1OO;name:
=null;
end
cobegin
{
processreaderi(i=1,2.…)
begin
readercome(readername);
readthebook;
readerleave(readername);
leavethereadroom;
end
}
coend.
5.在一个盒子里,混装了数量相等的黑白围棋子·现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1和P2,其中P1拣白子;P2拣黑子。
规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣.试写出两进程P1和P2能并发正确执行的程序。
答1:
实质上是两个进程的同步问题,设信号量s1和s2分别表示可拣白子和黑子,不失一般性,若令先拣白子。
varS1,S2:
semaphore;
S1:
=l;S2:
=0;
cobegin
{
processP1
begin
repeat
P(S1);
拣白子
V(S2);
untilfalse;
end
processP2
begin
repeat
P(S2);
拣黑子
V(S1);
untilfalse;
end
}
coend.
答2:
TYPEpickup-chess=MONITOR
VARflag:
boolean;
S-black,s-white:
codition;
DEFINEpickup-black,pickup-white;
USEwait,signal,check,release;
procedurepickup-black;
begin
check(IM)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 习题 答案