




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章程管/
第二章程管理
2.1程的基本概念
2.2程控制J
2.3程同步
2.4典程的同步
2.5管程機(jī)制
2.6程通信
2.7程
2.1程的基本概念
程序的序行及特征
米一、程序行有固定的序。
11"C1P1——"I2"C2——"P2
、特征:
,序性、封性、可再性
一運(yùn)工一地
2.1.2前定
。有向無(wú)循
。表示方式:
米(1)p1——>p2
米(2)——>={(pl,p2)lpl必在p2始前完成}
2.1.3程序的并
。一多個(gè)程序的并行
:?二、特征
米斷性
米失去封性:主要由共享源引起
米不可再性:
米例,N的初n。有2個(gè)循程序A和B,
它共享一個(gè)量N,A、B并行。
程序A程序B
N:=N+1;Print(N);
N:=0
*
?N:=N+1在print(N)和N:=0之前,N
分n+1,n+1,0.
?:?N:=N+1在print(N)和N:=0之后,N
分n,0,1.
?:?N:=N+1在print(N)和N:=0之,N分
n,n+1,0.
2.1.4程的特征和狀
?1.程的特征和定
米定:程序的一次行程.
分析:
要素:程序、數(shù)據(jù)、CPU、狀空
似:食、材料、廚、狀空
明:在引入了程體的概念后,我可以把OS中的程定
程是程體的運(yùn)行程,是系行源分配和度的一個(gè)獨(dú)立位”
:程與程序的異同?
程和程序是既有系又有區(qū)的兩個(gè)概念:
(1)程序是指令的集合,靜幄;程是程序在理機(jī)
上的一次行程,概念°
(2)程序是期存在的,程有生命周期,有建、活、
消亡。
(3)程序是指令的有序集合;而程由程序、數(shù)據(jù)和
程控制成°
(4)程與程序之不是——的,即同一程序同運(yùn)行
于若干不同的數(shù)據(jù)集合上,它將屬于若干個(gè)不同的程;
而一個(gè)程可以行多個(gè)程序°一
程的特征:
1.樹(shù)特征
?程:由程序段、數(shù)據(jù)段及程控制三部分構(gòu)成,
稱“程映像"°
2.性
?由“建”而生,由“度”而行;由得不到源
而阻塞;由撤消而消亡°(而程序是靜的)°
3.并性
■只有建立了程,才能并行°
4.獨(dú)立性°
■獨(dú)立運(yùn)行,獨(dú)立得源°
5.異步性:(斷性)
第二章程管一理a
?2.程的三基本狀
米就狀
米行狀
米阻塞狀
程的三基本狀及其
?:*3.掛起狀(被出內(nèi)存的狀)
米引入原因
■端用求
■父程求
?荷需要
■操作系需要
米程狀的
■活就靜止就
■活阻塞靜止阻塞
■靜止就活就
■靜止阻塞活阻塞
1^*___
—,,
=早
2.1.5程控制
程控制的作用
pid
米是程存在的唯一志
■程狀
泰PCB(processcontrol
block)常內(nèi)存先
?:*2.程控制中的信息、
阻塞原因
米、理機(jī)狀,程
度信息,程控制信息程序地址
同步機(jī)制
源清
接指
03.PCB的
米接
(p332-7)PCB14
PCB23
PCB30
PCB48
PCB5
PCB67
PCB79ZJ
PCB80
PCB91
等待列示例
structwait_queue{
structtask_struct*task;
structwait_queue*next;
Ml
03.PCB的
米索引(p342-8)PCB1
PCB2
PCB3
PCB4
PCB5
PCB6
PCB7
阻塞表指
2.2程控制
程控制的任
系中所有程人人建、存在到消亡的全程施有效的管理和控
制。具有建新程、運(yùn)行程行控制、撤程的能力°程控制由
os系的內(nèi)核完成,內(nèi)核通原操作來(lái)°
理機(jī)的兩狀
核心又稱管或系,使OS管理程序行機(jī)器所的狀。具有
高特,能行一切指令,所有寄存器和存區(qū)°
用又稱目,是用程序行機(jī)器所的狀。具有低特的行
狀,只能行定的指令,指定的寄存器和存E°
內(nèi)核:基于硬件的第一次件充,并常內(nèi)存
內(nèi)核的功能支撐功能(中斷理、管理、原操作)
源管理(程管理、存器管理、管理)
原:由若干指令構(gòu)成,用于完成一定功能的一段程序。原在行期
不可分割,所以原操作具有原子性°(中斷下完成)
常用的程摔制原:
建
撤
阻塞:行一阻塞
醒:阻塞一就
掛起:活一靜止
激活:靜止一活
、---------------■■
一里士*
2.2.1程的建
、程:
程的家族系:(P342-9)
子程可承父的源,撤消父程,父的
撤消會(huì)撤消全部子程°
、引起建程的事件:
1.用登:端用建立一程
2.作度:被度的作建立程
3.提供服:如要打印建立打印程
4.用求:由用程序建立多個(gè)程
程管一瞿t
?:?三'程的建:(creat原)
米1,申空白PCB(一個(gè)系的PCB是有限的)
米2.新程分配源(不同于一般的分配,PCB-
LIST在一個(gè)特殊區(qū)域)
米3.初始彳匕PCB
米4.將新程插入就列。
procedureCreate(n,S0,k0,M(),R()
begin
/*求分配PCB空
I:=Getinternalname(n);
/*初始化PCB
Id(i):=n;
Priority(i):=kG;
Cpustate(i):=S0;
Mainstore(i):=M();
Resourse(i):=R0;
Status⑴:='readys,;
Parent(i):=CALLER;
/*插入就列
Insert(RL,i);
end
2.2.2程的止
一、引起程止的事件
*1.正常束:女口Halt'logoff
米2.異常束:女口Protecterrorovertime等
米3.外界干:
■a.系kill程;
■b.父程止;
■c.父程求。
二程的止程
米(1)程狀;
米(2)行一一>中止,且置度志真
米(3)有無(wú)子需止。
米(4)源其父程或系。
米(5)MPCB列中移出PCB.
procedureDestroy(n)
begin
Sched:=false;/*Sched度志
i:=searchinternalname(n);
Kill(i);
ifsched=truethenSCHEDULER;
End
Procedurekill(i);
Begin
Ifstatus(i)=?running'then
Begin
Stop(i);
Sched:=true;
End
REMOVE(Queue(i),i);
Forallpeprogeny(i)dokill(p);
Forallreresoures(i)doRELEASE(r);
RELEASE(PCB(i));
End
w
2.2.3程的阻塞與醒
?:?一、引起程阻塞和醒的事件
米1.求系服而得不到足,如向系求
打印服°
米2.后某操作而需同步:如操作和求
操作的程需同步運(yùn)行(即非異步操
作)。
米3.新數(shù)據(jù)尚未到達(dá):如程A寫(xiě),程B
,A未寫(xiě),完B不能°
米4.無(wú)新工作可做°
*W萱/
程阻塞程:
是程自身的一主行
a.block原
b.停止行,修改PCB入阻塞列(一個(gè)
或多個(gè)),并度。
第二章程管一理々
——---?__~---
procedureblock(n)
begin
i:=searchinternalname(n);
Stop(i);
Status(i):=Jblockeda,;
Insert(BL,i);
SCHEDULER
End
。三、醒程:
米其它相程完成°
"a.wakeup原
米b.修改PCB,人就歹U
米可,有block原,在其它程中就有
wakeup原°
程管.類
procedurewakeup(n)
begin
i:=searchinternalname(n);
Ifstatus(i)=?blockeda'then
Status⑴:='readya,;
Insert(AL,i);
SCHEDULER
end
2,2.4程的掛起與激活
-、程的掛起程
米由程自己或其父程suspend原完成,籽
程PCB移到指定區(qū)域,注意狀的改,有可
能要重新度°
章一程萱)
proceduresuspend(n)
begin
i:=searchinternalname(n);
Casestatus(i)of
4blockeda?:status⑴:='blockeds,;
'readya':status⑴:=’readys’;
'running':beginstop(i);
status⑴:='readys’;
SCHEDULERend;
endcase
end
;?二、程的激活程°
米active原(如在外存,入內(nèi)存,改狀,根據(jù)情
況看是否度,如先或非先)°
procedureactive(n)
begin
i:=searchinternalname(n);
Ifstatus⑴='readys,then
Beginstatus(i):=’readya,;
SCHEDULERend
Elsestatus(i):=’blockeda'
End
2.3程同步
同步一
效的并程在行次序上的,以達(dá)到有
再源共享和相互合作,使程序行有可
1生
Q
231程同步的基本概念
L兩形式的制系
米源共享系:(程接制)
?需互斥地界源°
米相互合作系:(程直接制)
2..界源:(一次允一個(gè)程的源)
米引起不可再性是因界源沒(méi)有互斥
==
3.介區(qū)
*定:程界源的那段代°
??砂岩粋€(gè)界源的循程描述如下
repeat*
entrysection入?yún)^(qū):有無(wú)程入
criticalsection;?界區(qū):
退出國(guó):將志位
exitsection
remaindersection;*
untilfalse;
4.同步機(jī)制遵循的準(zhǔn)
???/p>
?:?忙等待
。有限等待:保有限等待,不會(huì)生死等
Q)
等待:不能入界區(qū)的行程放棄
CPU行°
2.3.2信號(hào)量機(jī)制
1整型信號(hào)量
米是一個(gè)整型量,通2個(gè)原子操作wait(s)和
signal(s)來(lái)0
Wait(s):whiles<=0dono-op
s:=s-1;
Signal(s):s:=s+1;
信號(hào)量的用
。利用信號(hào)量互斥
例:兩個(gè)并程共享一個(gè)賽區(qū)用信量機(jī)制保互斥
分析:
A
B
解:信號(hào)量S,初1;
「篝二阜i二一邕一里
A程B程
P(S)P(S)
使用I/O使用I/O
V(S)V(S)
varmutex:semaphore:=l
begin
parbegin
processl:begin
repeat
wait(mutex);
criticalsetion
signal(mutex);
remaindersection
untilfalse;
end
w
process!:begin
repeat
wait(mutex);
criticalsetion
signal(mutex);
remaindersection
untilfalse;
end
parend
芋^第二章一程.管一三
?:?利用信號(hào)量前系
例1:P1程P2程
n1=1n2=3
n3=n1+n2
分析:存在同步系:P2Tpi
解:置公共信號(hào)量S,初0°
P1程P2程
P(S)a2
alV(S)
注:al表示Pl程的句,a2表示P2程的句
例2.利用信號(hào)量來(lái)描述下面前系
2-10削例
*
Vara,b,c,d,eXg-semaphore:=0,0,0,0,0,0,0;
Begin
parbegin
beginSI;signal(a);signal(b);end;
beginwait(a);S2;signal(c);signal(d);end;
beginwait(b);S3;signal(e);end;
beginwait(c);S4;signal(f);end;
beginwait(d);Sl;signal(g);end;
beginwait(e);wait(f);wait(g);S6;end;
parend
end
程一管事
小
LPV操作有共享量信號(hào)量存在,所以其程序是一個(gè)
界區(qū)°PV操作是原子操作,行不可中斷。信號(hào)量只
能通PV操作改其°
2.互斥的模式PV是成出在同一程中;
同步的模式PV是成出在不同程中;
用信號(hào)量描述前系有多少前系置多少個(gè)信
號(hào)量,初0;有多少前做多少P操作,有多少后
點(diǎn)做多少V操作,無(wú)前不做P操作°
典型分析
。教材P69第28:采集程和算程共享一沖區(qū),采
集程野數(shù)據(jù)送入沖區(qū),算程M軸釀出據(jù)算
O
提示:每一源置一個(gè)信號(hào)量
。桌上有一空,允存放一只水果,爸爸可向內(nèi)放革
果或桔子,兒子等吃桔子,女兒等吃基果°
分析:本是生者-消者的一形,生者放入沖
區(qū)的品有兩,消者也有兩,每消者只消其中固定
的~,品
i.解:
process2:begin*
Varempty,full:semaphore=1,0;?
begin*repeat*
parbegin*wait(full);*
process1:begin*criticalsection*
repeat*signal(empty);*
wait(empty);?remaindersection*
criticalsection*until
signal(full);*false;*
remainderend*
section*untilfalse;parend
end
2.解:son:beginrepeat*
Vars,so,sa:semaphore=1,0,0;*wait(so);*
begin*l\k中取出
parbegin*桔子;
father:begin*signal(s);
repeat*
吃桔子;?
wait(s);*
untilfalse;*
將水果放
入中;end
if放入的是桔子daughter:begin*repeat*
thensignal(so);wait(sa);*
elsesignal(sa);*
取出莘果;
untilfalse;*
signal(s);
end
w
2型信號(hào)量
?引入:
在整型信號(hào)量機(jī)制中的wait操作,只要是信號(hào)量
S<0,就會(huì)不斷地。因此,機(jī)制并未遵循“等
待'’的準(zhǔn),而是使程于“忙等”的狀°
?:?解決方案:
typesemaphore=record
value:integer;
L:listofprocess;
end
L:程表,用于接所有等待源程°
*
procedurewait(S)
varS:semaphore
begin
S.value:=S.value-1;
ifS.value<0themblock(S,L)
end
proceduresignal(S)
varSrsemaphone
begin
S.value:=S.vaule+1
ifS.value<=0thenwakeup(S.L)
end
用wait(S)和signal(S)同步與互斥°
c-<
二早管二A
明:
l.S.value>0,表示系中可用源的數(shù)目。
2.當(dāng)S.value<0,S.value的表示阻塞程的數(shù)目°
3.如果S.value的初1,表示只允一個(gè)程界源
,此的信號(hào)量化互斥信號(hào)量°
Aye----*■程萱w
3AND型信號(hào)量
?:?引入:
processA:processB:
wait(Dmutex);wait(Emutex);
wait(Emutex);wait(Dmutex);
若2程交替行,死
3AND型信號(hào)量
。特點(diǎn):要全分配,要一個(gè)也不分配
?:?當(dāng)不用它,有可能生系死。
?:?死:在無(wú)外力作用下的一僵持狀
3AND型信號(hào)量
Swait(sl,s2,...,sn)
ifsl>land...andsn>1then
fori:=ltondosi:=si-l;endfor
else
placetheprocessinthewaitingqueuewiththefirstsifoundwith
si<l,andsettheprogramcountofthisprocesstothebeginningof
swaitoperation
endif
Ssignal(sl,s2,...,sn)
fori:=ltondosi:=si+l;
removealltheprocesswaitinginthequeueassociatedwithsiintothe
readyqueue
endfor
第二章程管/
4信號(hào)量集
。提高效率而AND信號(hào)的充
?:?允一次申多源多個(gè)°
Swait(SptpdpSn,tn,dn)<
ifand...andSn>tnthen*
fori=1tondo*
0=Srdi;*
endfor*
else*
PlacetheexecutingprocessinthewaitingqueueofthefirstSjwithSj<'
andsetitsprogramcountertothebeginningoftheSwaitOperation.?
endif*
signal(SpdpSn,4)?
fori?=1tondo*
Sj=oSi+4;*
RemovealltheprocesswaitinginthequeueassociatedwithSjintotheready
queue*
endfor;J.
?:?三特例:
(1)Swait(S,d,d):允每次申d個(gè)源。
當(dāng)源數(shù)少于d,不予分配°
(2)Swait(s,1>1):S>1,型信號(hào)量°
S=1,互斥型信號(hào)量。
(3)Swait(s,l,O),可控,當(dāng),允入,Svl
,不能入。
2.4典程同步
?2.4.1生者一一消者
<*2.4.2哲學(xué)家餐
<*2.4.3者——寫(xiě)者
2.4」生者一消者
描述
生者一消者(Producer-Consumer)是著名
的程同步。它描述一生者向一消者提供消
息,它共享一個(gè)包含n個(gè)沖的有界池,生
者向其中投放消息,消者隊(duì)中取得消息°
?在操作系中,生者程可以是算程、送程;而消者程
可以是打印程、接收程等°
?解決好生者--消者就解決好了一并程的同步O■
放消息取消息
1
n個(gè)沖區(qū)
(Buffer)
定數(shù)據(jù)構(gòu)
Varn:integer;
Typeitem=...;〃品型
varbuffer:array[04v*?n-l]ofitem;//沖池
in,out:0,1,???,n-1;
counter://品數(shù)
當(dāng)沖池,生者等待,空,消者等待
程描述如下是否存在?
producer:consumer:
repeatrepeat
???whilecounter=0dono-op;
produceaniteminnextp;nextc:=buffer[out];
???out:=(out+l)modn;
whilecounter=ndono-op;counter:=counter-l;
buffer[in]:=nextp;consumertheitemin
in:=(in+l)modn;nextc;
counter:=counter+l;untilfalse;
untilfalse;
i
registerl:=counter;registerl:=counter;
registerl:=registerl+l;registerl:=register2-l;
counter:=registerl;counter:=register2;
counter白勺初5
registerl:=counter;(registerl:=5)
registerl:=registerl+l;(registerl:=6)
register!:=counter;(register!:=5)
register!:=register2-l;(register!:=4)
counter:=registerl;(counter:=6)
counter:=register2;(counter:=4)
?:?利用型信號(hào)量解決生者一消者
定互斥信號(hào)量mutex,使程互斥地沖
池,empty、fullr表示空、沖區(qū)數(shù)量。初分
1,n,。。
1產(chǎn)房此才支清費(fèi)渚遺竊
描述如下
Varmutex,empty,full:semaphore:=l,n,0;
buffer:array[0,1v??n-l]ofitem;
in,out:integer:=0,0;
begin
parbegin
producer:beginconsumer:begin
repeatrepeat
???wait(full);
Produceaniteminnextp;wait(mutex);
???nextc:=buffer(out);
wait(empty);out:=(out+l)modn;
wait(mutex);signal(mutex);
buffer(in):=nextp;signal(empty);
in:=(in+l)modn;Consumertheitemin
signal(mutex);nextc;
signal(full);Untilfalse;
untilfalse;end
endparend
end
producer:beginconsumer:begin
repeatrepeat
???wait(mutex);
Produceaniteminnextp;wait(full);
???nextc:=buffer(out);
wait(mutex);out:=(out+l)modn;
wait(empty);signal(empty);
buffer(in):=nextp;signal(mutex);
in:=(in+l)modn;Consumertheitemin
signal(full);nextc;
signal(mutex);Untilfalse;
untilfalse;end
endparend
end
*
于用信號(hào)量機(jī)制解決生者消者:
?:*p操作的序是否可交?
?:*v操作的序是否可交?
?:?什情況下互斥信號(hào)量mutex可以省略,什
?*
P操作的序至重要,序不當(dāng)可能致死,而兩個(gè)V操
作無(wú)要;當(dāng)yWW—,mutex可省略°
。利用AND信號(hào)量解決生者消者
varmutex,empty,full:semaphore:=l,n,0;
buffer:array[O,...,n-l]ofitem;
inout:integer:=0,0;
begin
parbegin
producer:begin
repeat
???
produceaniteminnextp;
???
swait(empty9mutex);
buffer(in):=nextp;
塞上一翼一搴
in:=(in+l)modn;
ssingal(mutex9full);
Untilfalse;
End
Consumer:begin
repeat
swait(full9mutex);
nextc:=buffer(out);
out:=(out+l)modn;
ssignal(mutex9empty);
consumertheiteminnextc;
untilfalse;
end
parend
end
5個(gè)哲學(xué)家用5只筷子吃面條,筷子交替放
01.利用型信號(hào)量解決哲學(xué)家餐
信號(hào)量如何置?
>1個(gè)信號(hào)量表示筷子,初5?
>5個(gè)信號(hào)量表示5只筷子,初均,
1?
分析:了筷子的互斥使用,可以用一個(gè)信號(hào)量表示
一只筷子,由五個(gè)信號(hào)量構(gòu)成信號(hào)量數(shù)。其描述如下
Varchopstick:array[0,…,4]of
semaphore={1,1,1,1,1};
第i個(gè)哲學(xué)家的活描述
Varchopstick:array[0,4]ofsemaphore={14444};
Repeat
wait(chopstick[i]);可能死!是一個(gè)
wait(chopstick[(i+l)mod5]);
的描述!
???
eat
signal(chopstick[i]);
signal(chopstick[(i+l)mod5]);
think;描述有?
Untilfalse
可采取以下幾解決方法:?
(1)至多只允有四位哲學(xué)家同去拿左的筷子,最能
保至少有一位哲學(xué)家能餐,并在用能放出他用
的兩只筷子,AA而使更多的哲學(xué)家能餐°
(2)定奇數(shù)號(hào)哲學(xué)家先拿他左的筷子,然后再去拿右
的筷子;而偶數(shù)號(hào)哲學(xué)家相反。按此定,任何一個(gè)哲
學(xué)家拿到一支筷子以后,就已阻止了他座的一個(gè)哲學(xué)
家吃的企,除非某個(gè)哲學(xué)家一只吃下去,否不會(huì)有
人會(huì)死。
(3)當(dāng)哲學(xué)家的左、右兩只筷子均可用,才允他拿起
筷子餐。足
方案一:只允4個(gè)哲學(xué)家同餐
解:置一個(gè)信號(hào)量Sm來(lái)限制同餐的哲學(xué)家數(shù)目
,使他不能超4,故Sm的初置4°,第i個(gè)
哲學(xué)家的活可描述:
repeat*wait(Sm);
wait(chopstick[i]);?
wait(chopstick[(i+1)mod5]);?
eat;*
signal(chopstick[i]);?
signal(chopstick[(i+1)mod5]);?
signal(Sm);*
think;*
untilfalse;
方案二:奇數(shù)號(hào)哲學(xué)家先拿左的筷子,偶數(shù)號(hào)哲學(xué)家相反
第i個(gè)哲學(xué)家的活可描述:
repeat*ifimod2==0then
beginwait(chopstick[i]);wait(chopstick[(i+1)mod5]);?
eat;*
signal(chopstick[i]);signal(chopstick[(i+1)mod5
]);
end*
elsebeginwait(chopstick[(i+1)mod5]);
wait(chopstick[i]);?
eat;*
signal(chopstick[(i+1)mod5]);
signal(chopstick[i]);
end?
think;*
方案三:當(dāng)左、右兩只筷子均可用,才拿起筷子餐
。利用AND信號(hào)量解決哲學(xué)家餐,可得最的解
*
Varchopstick:array[0,4]ofsemaphore:=(l,l,1,1,1);
processi
Repeat
think;
Sswait(chopstick[(i+l)mod5],chopstick[i]);
eat
Ssignal(chopstick[(i+l)mod5],chopstick[i]);
Untilfalse
思考:如何用型信號(hào)量機(jī)制來(lái)方案三?
?:?利用整型信號(hào)量機(jī)制解決的參考描
*
efineN5/*哲學(xué)家數(shù)目*/
#defineLEFT(i-l)%N/*i的左號(hào)*/
#defineRIGHT(i+l)%N/*i的右號(hào)*/
#defineTHINKING0
#defineHUNGRY1
#defineEATING2
typedefintsemaphore;/*信號(hào)量是一個(gè)特殊的整形量
*/
intstate[N];/*每個(gè)人狀的數(shù)*/
semaphoremutex=1;/*數(shù)state的互斥量*/
semaphores[N]={0,0,0,0,0};/*每個(gè)哲學(xué)家一個(gè)信
量*/
main()
{cobegin
philopher(O);/*哲學(xué)家的活*/
philopher(1);
philopher(2);
philopher(3);
philopher(4);
coend
voidphilopher(inti)/*i:哲學(xué)家號(hào),人人0至(JN-
1*/
{while(1)/*無(wú)限循*/
{think();/*正在思考*/
take_forks(inti);/*需要兩支筷子,或者阻塞*/
eat();/*餐*/
put_forks(i);/*把兩支筷子放回桌上*/
voidtake_forks(inti)
{P(mutex);/*入界區(qū),數(shù)state*/
state[i]=HUNGRY;/*下哲學(xué)家的事*/
test(i);/*得到兩支筷子*/
V(mutex);/*離界區(qū)*/
P(s[i]);/*如果得不到筷子就阻塞*/
,
voidput_forks(inti)
{P(mutex);/*入界區(qū)*/
state[i]=THINKING;/*哲學(xué)家餐束,思考*/
test(LEFT);/*看左居是否能餐*/
test(RIGHT);/*看右居是否能餐*/
V(mutex);/*離界區(qū)*/
voidtest(inti)
{if(state[i]==HUNGRY&&statefLEFT]!=EATING
&&state[RIGHT][=EATING)
{state[i]=EATING;V(s[i]);}}
w
2.4.3者寫(xiě)者
描述:
米程可共享同一象。
米寫(xiě)程不可共享同一象
。分析:
整型量readcount--表示者數(shù);
信號(hào)量:rmutex--互斥readcount;
wmutex--寫(xiě)互斥;
利用型信號(hào)量機(jī)制描述如下:
varrmutex,wmutex:semaphore:=1,1;
readcount:integer:=0;ifreadcounf=0
beginthensignal(wmutex);
parbegin
signal(rmutex);
reader:begin
repeatuntilfalse;end
wait(rmutex);writer:begin
ifreadcount=0
repeat
thenwait(wmutex);
readcount:=readcount+l;wait(wmutex)
signal(rmutex);performwriteoperation;
???
performreadoperationsignal(wmutex)
untilfalse;
wait(rmutex);end
readcount:=readcount-l;parend
end
思考
修改算法,使得者寫(xiě)者算法耳者先。即當(dāng)寫(xiě)程
到達(dá),后的程必等待°
提示:增加信號(hào)量S(初1),用于在寫(xiě)程到達(dá)
后封后者。
“寫(xiě)者先”描述如下:wait(rmutex);
varrmutex,wmutex,s:semaphore:=1,1J;readcount:=readcount-l;
readcount:integer:=0;
ifreadcount=0
begin
parbeginthensignal(wmutex);
reader:beginsignal(rmutex);
repeatuntilfalse;end
wait(s);wait(rmutex);
writer:begin
ifreadcount=0
thenwait(wmutex);repeat
readcount:=readc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天氣預(yù)報(bào)介紹課件
- 2025年鋼鐵板材市場(chǎng)分析報(bào)告
- 中國(guó)鋰固態(tài)電池行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 奶牛酮病研究進(jìn)展
- 教師志愿者合同協(xié)議書(shū)
- 健康搞笑課件
- 創(chuàng)業(yè)計(jì)劃書(shū)基于人工智能的智能家居解決方案
- 轉(zhuǎn)租協(xié)議書(shū)范本合同
- 2025年中國(guó)海產(chǎn)干貨制品原料市場(chǎng)分析研究報(bào)告
- 新版污水處理站建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025-2030新型鋼材產(chǎn)業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資研究報(bào)告
- 新媒體國(guó)企面試題及答案
- 寶寶改姓夫妻協(xié)議書(shū)
- 2025年5G網(wǎng)絡(luò)在無(wú)人機(jī)領(lǐng)域的應(yīng)用可行性研究報(bào)告
- 央企華潤(rùn)集團(tuán)杭州片區(qū)年度品牌傳播策略案
- 工業(yè)用地開(kāi)發(fā)項(xiàng)目成本分析與資金籌措方案
- 2025-2030年中國(guó)正丁醇行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- (人教2024版)英語(yǔ)七年級(jí)下冊(cè)Unit7.4 Section B 1a-2d課件(新教材)
- 2025年廣東嘉城建設(shè)集團(tuán)有限公司及其下屬公司招聘筆試參考題庫(kù)含答案解析
- 新藥研究與開(kāi)發(fā)技術(shù) 課件3.新藥的工藝與質(zhì)量研究
- 2025-2030中國(guó)基礎(chǔ)設(shè)施行業(yè)市場(chǎng)前景趨勢(shì)及競(jìng)爭(zhēng)格局與投資研究報(bào)告
評(píng)論
0/150
提交評(píng)論