操作系统习题答案第Word文件下载.docx

上传人:b****3 文档编号:13599205 上传时间:2022-10-12 格式:DOCX 页数:75 大小:60.79KB
下载 相关 举报
操作系统习题答案第Word文件下载.docx_第1页
第1页 / 共75页
操作系统习题答案第Word文件下载.docx_第2页
第2页 / 共75页
操作系统习题答案第Word文件下载.docx_第3页
第3页 / 共75页
操作系统习题答案第Word文件下载.docx_第4页
第4页 / 共75页
操作系统习题答案第Word文件下载.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

操作系统习题答案第Word文件下载.docx

《操作系统习题答案第Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统习题答案第Word文件下载.docx(75页珍藏版)》请在冰豆网上搜索。

操作系统习题答案第Word文件下载.docx

processmanager;

processwriter;

beginbeginbegin

LI:

readamessageintox;

L2:

P(smanage);

L3:

P(swnte);

P(sread);

x:

=B[mptr];

=B[swrite];

B[rptr]:

=x;

mptr:

=(mptr+1)modk;

wptr:

=(wptr+1)modk;

Rptr:

=(rptr+1)modk;

managethemessageinx;

V(sread);

V(smanage);

B[mptr]:

printthemessageinx;

GotoL1;

V(swrite);

gotoL3;

End;

gotoL2;

end;

coend

2)varA,B:

array[0,k-l]ofitem;

sPut1:

semaphore:

=k;

SPut2:

semaPhore:

sget1:

sget2:

put1:

integer:

=O;

put2:

get1:

get2:

cobegin

processnmanager;

processWriter;

Ll:

readamessageintox;

P(sgetl);

P(sgetZ);

P(SPut1);

=A[get1];

=B[get2];

A[put1]:

=x;

get1:

(get1+1)modk;

get2:

=(get2+l)modk;

Put1:

=(put1+1)modk;

V(sput1);

V(sput2);

V(sget1);

managethemessageintox;

P(sput2);

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;

=y+3;

=x+5;

V(S1);

P(S1);

Z:

=Y+1;

X:

X+Y;

P(s2);

V(S2);

=z+y;

z:

=z+x;

Endend

答:

现对进程语句进行编号,以方便描述.

P1:

P2:

beginbegin

y:

=1;

①x:

=1;

=y+3;

②x:

x+5;

Y+1;

③x:

X+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;

=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;

{

processreaderi(varreadename:

string)(i=1,2…)

P(seatcount);

P(mutex);

=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);

离开阅览室;

}

2)使用管程操作:

TYPEreadbook=monitor

VARR:

condition;

I,seatcount:

integer;

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);

procedurereaderleave(readername)

seatcount--;

fori=1to100doi++

ifname[i]readernamethenname[i]:

=1OO;

name:

=null;

processreaderi(i=1,2.…)

begin

readercome(readername);

readthebook;

readerleave(readername);

leavethereadroom;

coend.

5.在一个盒子里,混装了数量相等的黑白围棋子·

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

P2拣黑子。

规定每个进程每次拣一子;

当一个进程在拣时,不允许另一个进程去拣;

当一个进程拣了一子时,必须让另一个进程去拣.试写出两进程P1和P2能并发正确执行的程序。

答1:

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

varS1,S2:

semaphore;

S1:

=l;

S2:

=0;

processP1

repeat

P(S1);

拣白子

V(S2);

untilfalse;

processP2

repeat

P(S2);

拣黑子

V(S1);

coend.

答2:

TYPEpickup-chess=MONITOR

VARflag:

boolean;

S-black,s-white:

codition;

DEFINEpickup-black,pickup-white;

USEwait,signal,check,release;

procedurepickup-black;

check(IM)

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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