版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章并發(fā)進(jìn)程一、概述
為了增強(qiáng)計(jì)算機(jī)系統(tǒng)處理數(shù)據(jù)的能力,提高資源的利用率,現(xiàn)代計(jì)算機(jī)系統(tǒng)采用多道程序設(shè)計(jì)技術(shù),從而使得若干作業(yè)并存于內(nèi)存中且同時(shí)執(zhí)行。每個(gè)作業(yè)的操作步驟都是由相應(yīng)的進(jìn)程完成的。多個(gè)作業(yè)同時(shí)執(zhí)行的狀態(tài),表現(xiàn)為一個(gè)進(jìn)程的工作還沒有全部完成之前,另一個(gè)進(jìn)程就開始工作,把這些可同時(shí)進(jìn)行工作的進(jìn)程稱為“并發(fā)進(jìn)程”。在并發(fā)進(jìn)程的執(zhí)行過程中,進(jìn)程同步是操作系統(tǒng)管理共享資源,避免出錯(cuò)的一個(gè)有效手段。進(jìn)程的同步包括進(jìn)程的同步與進(jìn)程的互斥兩個(gè)方面。進(jìn)程的互斥是指并發(fā)進(jìn)程即多個(gè)執(zhí)行進(jìn)程,同時(shí)競(jìng)爭(zhēng)共享資源時(shí),若某共享正在被一個(gè)進(jìn)程使用,其他申請(qǐng)?jiān)撡Y源的進(jìn)程必須等待,直至該資源被釋放后,另一個(gè)進(jìn)程才能使用該資源。也就是說,共享資源應(yīng)該互斥的使用。進(jìn)程的同步是指一個(gè)進(jìn)程的執(zhí)行依賴于其他進(jìn)程的執(zhí)行狀況,即并發(fā)進(jìn)程中,一個(gè)進(jìn)程在沒有得到其他進(jìn)程發(fā)來的消息時(shí)必須等待,直至另一個(gè)進(jìn)程送來消息后才能繼續(xù)執(zhí)行。進(jìn)程的死鎖是并發(fā)進(jìn)程之間相互等待對(duì)方占有的資源的現(xiàn)象。二、進(jìn)程間的制約關(guān)系
在多道程序系統(tǒng)中,由于資源共享與進(jìn)程合作,使諸進(jìn)程之間可能產(chǎn)生兩種形式的制約關(guān)系:1.間接相互制約
這種制約主要源于資源共享。例如,有兩進(jìn)程A和B,如果在A進(jìn)程提出打印請(qǐng)求時(shí),系統(tǒng)已將打印機(jī)分配給進(jìn)程B,則進(jìn)程A阻塞;一旦進(jìn)程B將打印機(jī)釋放,也就使進(jìn)程A由阻塞改為就緒狀態(tài)。2.直接相互制約
這種制約主要源于進(jìn)程合作。例如,有一輸入進(jìn)程A通過單緩沖向進(jìn)程B提供數(shù)據(jù)。當(dāng)該緩沖空時(shí),計(jì)算進(jìn)程B因不能獲得所需數(shù)據(jù)而阻塞,當(dāng)進(jìn)程A把數(shù)據(jù)送入緩沖時(shí),便將B喚醒;反之,進(jìn)程A因不能再向緩沖區(qū)投放數(shù)據(jù)而阻塞,當(dāng)進(jìn)程B將緩沖區(qū)內(nèi)數(shù)據(jù)取走時(shí)喚醒A。第三章并發(fā)進(jìn)程
可見,諸進(jìn)程在并發(fā)執(zhí)行時(shí),必須按照一定的次序執(zhí)行。進(jìn)程同步例子:對(duì)于共享一個(gè)緩沖區(qū)的輸入進(jìn)程和計(jì)算進(jìn)程,當(dāng)輸入進(jìn)程未將數(shù)據(jù)送入緩沖區(qū)時(shí),計(jì)算進(jìn)程不能開動(dòng)計(jì)算;同樣,若計(jì)算進(jìn)程未從緩沖區(qū)中取走數(shù)據(jù)時(shí),輸入進(jìn)程不能再啟動(dòng)下一次的輸入。輸入進(jìn)程計(jì)算進(jìn)程緩沖區(qū)
3.1進(jìn)程的并發(fā)性1、雖然對(duì)于一個(gè)程序的輸入、計(jì)算和打印必須順序執(zhí)行,但在對(duì)一批程序進(jìn)行處理時(shí),則可使上述三種操作并發(fā)執(zhí)行,以提高系統(tǒng)的吞吐量。例如,輸入程序在輸入第三個(gè)程序(I3)的同時(shí),計(jì)算程序可以正在對(duì)第二個(gè)程序進(jìn)行計(jì)算(C2),而打印程序正在打印第一個(gè)程序(P1)的計(jì)算結(jié)果。如下圖所示:I1I2I3I4C1C2C3C4P1P2P3P4程序段并發(fā)執(zhí)行的有向圖
第三章并發(fā)進(jìn)程2、與時(shí)間有關(guān)的錯(cuò)誤例如,某展示廳設(shè)置了一個(gè)自動(dòng)計(jì)數(shù)系統(tǒng),用一個(gè)計(jì)數(shù)器count指示在場(chǎng)的人數(shù)。當(dāng)有一人進(jìn)人時(shí),進(jìn)程pin實(shí)現(xiàn)計(jì)數(shù)加1,當(dāng)退出一人時(shí),進(jìn)程POUT實(shí)現(xiàn)計(jì)數(shù)減1。由于人場(chǎng)與退場(chǎng)是隨機(jī)的,因此,進(jìn)程pin和pout是并發(fā)的。用cobegin和coend表示并發(fā)執(zhí)行,這兩個(gè)進(jìn)程的程序如下:begincount:integer;count:=0;cobeginprocesspinR1:integer;beginR1:=count;R1:=R1+1;count:=R1;end;processpoutR2:integer;
beginR2:=count;R2:=R2-1;count:=R2;end;coend;end;
假定某時(shí)刻的計(jì)數(shù)值count=n,這時(shí)有一個(gè)人要進(jìn)人,正好另一個(gè)人要退出,于是進(jìn)程pin和pot都要執(zhí)行。如果進(jìn)程n和pout的執(zhí)行都沒有被打斷過,那么各自完成了count+1和count-1的工作,使計(jì)數(shù)值保持為n,這是正確的。如果兩個(gè)進(jìn)程執(zhí)行中,由于某種原因進(jìn)程PIN被打斷,且進(jìn)程調(diào)度使它們的執(zhí)行呈下面的次序:占有CPU執(zhí)行過程進(jìn)程執(zhí)行的操作count值pinR1:=countR1:=R1+1npin中斷,由pout占用CPU并執(zhí)行過程R2:=countR2:=R2+1Count:=R2n-1pin繼續(xù)執(zhí)行Count:=R1+1n+1按這樣的次序執(zhí)行后,count的最終值不能保持為n,而變成n+1。如果進(jìn)程被打斷的情況如下:占用CPU執(zhí)行過程進(jìn)程執(zhí)行的操作count值pinR1:=countR1:=R1+1npin被打斷,pout占用R2:=countR2:=R2+1npout被打斷,pin占用count:=R1n+1pin被打斷,pout占用count:=R2n-1于是,兩個(gè)進(jìn)程執(zhí)行完后,count的終值為n-1。也就是說,這兩個(gè)進(jìn)程的執(zhí)行次序?qū)Y(jié)果是有影響的,關(guān)鍵是它們涉及到共享變量count,且兩者交替訪問了count,在不同的時(shí)間里訪問count,就可能使count的值不同。所以,造成計(jì)數(shù)值不正確的因素是與進(jìn)程被打斷的時(shí)間和能占用處理的時(shí)間有關(guān),由于這種原因造成的錯(cuò)誤稱為“與時(shí)間有關(guān)的錯(cuò)誤”。3.2進(jìn)程的互斥與同步一、進(jìn)程互斥
從上面例子可知:當(dāng)若干個(gè)進(jìn)程都要使用某一共享資源時(shí),任何時(shí)刻最多只允許一個(gè)進(jìn)程使用,其他要使用該資源的進(jìn)程必須等待,直到占有資源的進(jìn)程釋放了該資源,這就是進(jìn)程的互斥。具有互斥關(guān)系的進(jìn)程并不是它們的所有操作都要互斥進(jìn)行,只需要確保涉及共享變量操作的那一段程序?qū)崿F(xiàn)互斥。通常把這一段程序稱為臨界區(qū)或臨界段,進(jìn)程的互斥實(shí)質(zhì)上就是并發(fā)進(jìn)程對(duì)臨界區(qū)的訪問是互斥的。二、臨界區(qū)(criticalsection)1.臨界資源:一次僅允許一個(gè)進(jìn)程使用的資源。
例如,有兩個(gè)進(jìn)程共享一個(gè)變量count:(R1和R2是處理機(jī)中的寄存器):
當(dāng)兩個(gè)進(jìn)程按下述順序執(zhí)行時(shí)但若P1和P2按另一種順序?qū)ount進(jìn)行修改
P1:R1:=count;P1:R1:=count;
R1:=R1+1;P2:R2:=count;
count:=R1;P1:R1:=R1+1;count:=R1;
P2:R2:=count;P2:R2:=R2+1;count:=R2;
R2:=R2+1;雖然P1和P2都各自對(duì)count作了加
count:=R2;1操作,但最后的count卻只增加了1。亦其結(jié)果使count增加了2;即發(fā)生了與執(zhí)行順序有關(guān)的錯(cuò)誤。
為了預(yù)防這種錯(cuò)誤,對(duì)變量count應(yīng)按臨界資源處理,即令P1和P2互斥地使用count。
2.
臨界區(qū):訪問臨界資源的那段代碼。諸進(jìn)程在訪問臨界資源時(shí),必須互斥。我們把每個(gè)進(jìn)程中訪問臨界資源的那段代碼稱為臨界區(qū)。為了實(shí)現(xiàn)對(duì)臨界區(qū)的互斥訪問,應(yīng)保證諸進(jìn)程互斥地進(jìn)入自己的臨界區(qū)。為此,每個(gè)進(jìn)程在進(jìn)入其臨界區(qū)前,必須先提出申請(qǐng),經(jīng)允許后方可進(jìn)入。若干個(gè)并發(fā)進(jìn)程臨界區(qū)程序的執(zhí)行準(zhǔn)則如下:(1)若干個(gè)進(jìn)程都要求進(jìn)入臨界區(qū)訪問共享變量時(shí),只允許一人進(jìn)程進(jìn)入,其他進(jìn)程必須等待;(2)任何一個(gè)進(jìn)入臨界區(qū)的進(jìn)程必須在有限的時(shí)間內(nèi)退出臨界區(qū);(3)當(dāng)某一進(jìn)程退出臨界區(qū)時(shí),若有其他進(jìn)程等待進(jìn)入,同必須允許一個(gè)進(jìn)程進(jìn)入臨界區(qū)。3、P-V操作20世60年代中期發(fā)明的P-V操作能夠滿足對(duì)臨界區(qū)的管理要求。P-V操作由兩個(gè)原語:P操作原語與V操作原語組成。P-V操作是一個(gè)整型變量上的兩個(gè)操作,設(shè)整型變量S稱作信號(hào)量或信號(hào)燈。通過s的操作,對(duì)進(jìn)程和資源進(jìn)行管理,從而實(shí)現(xiàn)對(duì)臨界區(qū)的互斥訪問。(1)P操作:s:=s-1,若s大于等于0,則表示有資源,當(dāng)前進(jìn)程繼續(xù)運(yùn)行,若s小于0,表示已無資源,則當(dāng)前進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài),將其插入到與信號(hào)量s有關(guān)的等待隊(duì)列中,直到其他進(jìn)程在s上執(zhí)行V操作為止。(2)V操作:s:=s+1,若s大0,則本進(jìn)程繼續(xù)執(zhí)行,若s小于等于0,則從與信號(hào)s相關(guān)的等待隊(duì)列中移出列首的進(jìn)程,將其由阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài),插入到就緒隊(duì)列中,當(dāng)前進(jìn)程仍繼續(xù)執(zhí)行。利用P-V操作實(shí)現(xiàn)互斥:A進(jìn)程B進(jìn)程…….……..p(s)p(s)臨界區(qū)臨界區(qū)v(s)v(s)…….…….前面例子中的兩個(gè)并發(fā)進(jìn)程都要使用共享的計(jì)數(shù)器count,從分析中看到,只有當(dāng)一個(gè)進(jìn)程不在使用count時(shí)另一個(gè)進(jìn)程再去使用,才不會(huì)出錯(cuò).如果它們交叉地使用count則會(huì)現(xiàn)與時(shí)間有關(guān)的鍺。為了保證兩個(gè)進(jìn)程互斥地使用計(jì)數(shù)器count,可以用PV操作來管理。定義一個(gè)信號(hào)量s的初值為1,把兩個(gè)并發(fā)進(jìn)程的程序改寫成如下:begincount:integer;s:semphorecount:=0;s:=1;cobeginprocesspinR1:integer;beginp(s);R1:=count;R1:=R1+1;count:=R1;v(s)end;processpoutR2:integer;beginp(s);R2:=count;R2:=R2—1;count:=R2;v(s)end;coend;end;這里p操作p(s)限制了一次只有一個(gè)進(jìn)程在臨界區(qū)執(zhí)行。如果一個(gè)進(jìn)程在臨界區(qū)執(zhí)行時(shí)被打斷,另一個(gè)進(jìn)程想進(jìn)入臨界區(qū),但由于進(jìn)人臨界區(qū)前必須先調(diào)用p(s),而此時(shí)已在臨界區(qū)的進(jìn)程尚未退出臨界區(qū),所以s的值為“0”,想進(jìn)人臨界區(qū)的進(jìn)程調(diào)用p(G)的結(jié)果必然是等待,直到已進(jìn)入臨界區(qū)的進(jìn)程再次得到處理器執(zhí)行完臨界區(qū)中的操作調(diào)用v(s)后才結(jié)束等待.所以,改寫后的程序在執(zhí)行中即使被打斷,也不會(huì)出現(xiàn)兩個(gè)進(jìn)程交叉訪問count,保證了進(jìn)程互斥地使用共享的計(jì)數(shù)器。一般說,當(dāng)n個(gè)進(jìn)程P1,P2,…Pn要共享某一資源時(shí),為保證資源的互斥,首先找出n個(gè)進(jìn)程各自的臨界區(qū),對(duì)每個(gè)進(jìn)程都用PV操作來實(shí)現(xiàn)進(jìn)入和退出臨界,進(jìn)程Pi(i=1,2,…n)互斥的一般形式為:begins:semphore;s:=1;cobeginprocessPibeginp(s);臨界區(qū)v(s);......end;coend;end;processPibeginp(s);臨界區(qū)v(s);end;coendend;但是,任何粗心地使用PV操作會(huì)違反臨界區(qū)的管理要求.例如對(duì)7.2中的第二個(gè)例子,用PV操作管理臨界區(qū)時(shí),若粗心地把程序改寫成:
begins:semaphores:=1;cobeginprocessPi(i=1,2,…n)begin按旅客訂票要求找到Aj;p(s);Ri:=AjifRi>=lthenbeginRi:=Ri—1;Ai:=Ri;v(s);輸出一張票endelse輸出“票已售完”end;coend;end進(jìn)程執(zhí)行時(shí)調(diào)用P(S)決定是否能進(jìn)入臨界區(qū),由于S的初值為1,故每次只能有一個(gè)進(jìn)程進(jìn)入臨界區(qū),其它想進(jìn)入臨界區(qū)執(zhí)行的進(jìn)程必須等待,這符合臨界區(qū)管理的第一個(gè)要求。但在改寫的程序中忽略了當(dāng)條件Ri>=1不成立時(shí)執(zhí)行else部分的V操作,以致使進(jìn)程在臨界區(qū)中判到條件Ri>=1不成立時(shí)無法退出臨界區(qū),當(dāng)然也就不能釋放等待進(jìn)入臨界區(qū)的進(jìn)程,造成進(jìn)程無限地等待進(jìn)入臨界區(qū),這就違反了對(duì)臨界區(qū)管理的第二、第三的兩個(gè)要求。正確的做法應(yīng)該是;beginS:semphore;S:=1;cobeginprocessPi(0,1,2,…,n)begin按旅客訂票要求找到Aj;p(s);Ri:=Aj;ifRi>=1thenbeginRi:=Ri-1,Aj:=Ri;v(s);輸出一張票endelsebeginv(s);輸出“票已售完”……2、P-V操作實(shí)現(xiàn)同步進(jìn)程的同步是并發(fā)進(jìn)程之間存在一種制約關(guān)系,一個(gè)進(jìn)程的執(zhí)行依賴另一個(gè)進(jìn)程的消息,當(dāng)一個(gè)進(jìn)程沒有得到另一個(gè)進(jìn)程的消息時(shí)應(yīng)等待,直到消息到這才被喚醒。先看一個(gè)例子。設(shè)有兩個(gè)進(jìn)程A和B,它們共享一個(gè)緩沖器,進(jìn)程A不斷地讀人記錄并送到緩沖器,進(jìn)程B不斷地從緩沖器中取出記錄并加工。假定緩沖器的容量為每次只能存放一個(gè)記錄,于是正確的工作應(yīng)該是這樣的:進(jìn)程A把一個(gè)記錄送人緩沖器后.應(yīng)等到進(jìn)程B發(fā)來消息(已將緩沖器的記錄取走)才能把下一個(gè)送入緩沖器。進(jìn)程B也應(yīng)等到進(jìn)程A發(fā)來消息(緩沖器中已送入一個(gè)記錄),才能從緩沖器中取出記錄并加工。如果這兩個(gè)進(jìn)程不是相互制約的話,那么可能出現(xiàn):進(jìn)程A又向緩沖器送入一個(gè)新記錄而把上一個(gè)尚未取走的記錄覆蓋了;進(jìn)程B在下一個(gè)記錄送入緩沖器之前又去取緩沖器中的記錄,造成重復(fù)地取同一個(gè)記錄加工。PV操作不僅可以用來實(shí)現(xiàn)互斥進(jìn)入臨界區(qū)而且還是一個(gè)簡(jiǎn)單而又方便的同步工具,用它來解決生產(chǎn)者/消費(fèi)者問題,可以防止生產(chǎn)者把物品放入已經(jīng)裝有物品的緩沖器中,也可防止消費(fèi)者在物品存入緩沖器之前去取物品,現(xiàn)在假定有一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者,它們公用一個(gè)緩沖器,生產(chǎn)者不斷地生產(chǎn)物品,每生產(chǎn)一件物品就要存入緩沖器,但緩沖器中每次只能存入一件物品,只有當(dāng)消費(fèi)者把物品取走后,生產(chǎn)者才能把第二件物品存入緩沖器,同樣地,消費(fèi)者要不斷地取出物品去消費(fèi),,當(dāng)緩沖器中有物品進(jìn)他就可去取,每取走一件物品后必須等生產(chǎn)者放入一件物品才可再取,用PV操作實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者之間的同步,可以定義兩個(gè)信號(hào)量:
SP:表示是否可以把物品存入緩沖器,由于緩沖器中只能放一件物品,所以SP的初值取為“1”。SG;表示緩沖器中是否存有物品,顯然,它的初值應(yīng)該為“0”,表示還沒有物品。對(duì)生產(chǎn)者來說,生產(chǎn)一件物品后應(yīng)調(diào)用P(SP),當(dāng)緩沖器中無物品時(shí)(這時(shí)SP=1)則調(diào)用p(SP)后不會(huì)成為等待狀態(tài),可繼續(xù)執(zhí)行,把物品存入緩沖器。調(diào)用一次P(SP)后,SP=0,若消費(fèi)者尚未取走物品,而生產(chǎn)者又生產(chǎn)了一件物品欲存入緩沖器,這時(shí)調(diào)用P(SP)將使生產(chǎn)者處于等待狀態(tài)而阻止它把物品再存人緩沖器。當(dāng)在緩沖器存人一件物品后,應(yīng)調(diào)用V(SG),告訴消費(fèi)者緩沖器中已經(jīng)有一件物品了(調(diào)用V(SG)后,SG的值從“0”變?yōu)椤發(fā)”)。對(duì)消費(fèi)者來說,取物品前應(yīng)查看緩沖器中是否有物品,即調(diào)用P(SG)。當(dāng)無物品時(shí),由于SG=0,調(diào)用p(SG)后消費(fèi)者等待,不能去取物品;當(dāng)有物品時(shí),由于SG=1調(diào)用P(SG)后消費(fèi)者可繼續(xù)執(zhí)行去取物品。每取走一件物品后,應(yīng)調(diào)用V(SP),通知生產(chǎn)看緩沖器中物品已取走,可以存入一件新的物品。生產(chǎn)者和消費(fèi)者并發(fā)執(zhí)行時(shí),可按如下方式同步:beginBuffer:integer;SP,SG:semaphore;Sp:=1;SG:=0;cobeginprocessproducerbeginL1:produceaproduct;P(SP);Buffer:=product;v(SG);gotoL1endbeginL2:P(SG);takeaproductV(SP);consume;gotoL2end;coend;end;
如果一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者他們共享的緩沖器容量為可以存放n件物品,那么只要把信號(hào)量SP的初值定為n。當(dāng)緩沖器中沒有放滿n件物品時(shí),生產(chǎn)者調(diào)用P(SP)都不會(huì)成為等待狀態(tài)而可把物品存人緩沖器。但當(dāng)緩沖器中已經(jīng)有n件物品,生產(chǎn)者想再存入一件物品將被拒絕。每存人一件物品后,由于調(diào)用V(SG),故SG的值表示緩沖器中可用的物品數(shù),只要SG40,消費(fèi)者調(diào)用P(SG)后總可去取物品。每取走一件物品后,由于調(diào)用V(SP),便增加了一個(gè)可用來存放物品的位置。用指針k和t分別指示生產(chǎn)者往緩沖器存物品和消費(fèi)者從緩沖器中取物品的相對(duì)位置,它們的初值為“0”,那么,一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者共用容量為n的緩沖器時(shí),可如下同步工作:beginB:array[0...n—1]ofInteger;k,t:integer;Sp,SG:Semphore;K:=t:=0;SP:=n;SG:=0;cobeginprocessproducerbeginL1:produceaproduct;P(SP);B[K]:=product;k:=(k+1)modn;
v(SG);gotoL1endprocessconsumerbeginL1:P(SG);takeaproductfromB[t];t:=(t+1)modn;V(SP);consumegotoL2end;coend;end;3.3進(jìn)程通信一、
低級(jí)和高級(jí)進(jìn)程通信方式
雖然一個(gè)作業(yè)可分為若干個(gè)能并發(fā)執(zhí)行的進(jìn)程,但它們應(yīng)經(jīng)常保持聯(lián)系,以便協(xié)調(diào)一致地完成指定任務(wù)。這種聯(lián)系是指在進(jìn)程之間交換一定數(shù)量的信息。信息量可多可少,多是指能交換成千個(gè)數(shù)據(jù),少則僅是一個(gè)狀態(tài)或數(shù)值。顯然,進(jìn)程同步是一種簡(jiǎn)單通信方式,進(jìn)程通過修改信號(hào)量,可向另一進(jìn)程表明臨界資源是否可用。在生產(chǎn)者-消費(fèi)者問題中,可由生產(chǎn)者進(jìn)程向消費(fèi)者進(jìn)程傳送一批消息,或者說,生產(chǎn)者通過緩沖池與消費(fèi)者通信。應(yīng)當(dāng)指出,信號(hào)量機(jī)制作為同步工具是卓有成效的,但作為通信工具則不夠理想,因?yàn)槠湫噬醯?,因此,稱為低級(jí)通信方式。
1、低級(jí)進(jìn)程通信
進(jìn)程的互斥和同步可歸結(jié)為低級(jí)進(jìn)程通信。在進(jìn)程互斥中進(jìn)程通過修改信號(hào)量,向其他進(jìn)程表明臨界資源是否可用;在生產(chǎn)者-消費(fèi)者問題中,生產(chǎn)者通過緩沖池與消費(fèi)者通信。應(yīng)當(dāng)指出,信號(hào)量機(jī)制作為同步工具是卓有成效的,但作為通信工具則不夠理想,主要表現(xiàn)在:
(1)效率低生產(chǎn)者每次只能向緩沖區(qū)中投放一個(gè)消息,消費(fèi)者每次只能從緩沖區(qū)中取得一個(gè)消息;
(2)通信對(duì)用戶不透明即設(shè)置共享數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)的傳送、進(jìn)程的互斥與同步都是由程序員去實(shí)現(xiàn),操作系統(tǒng)只提供共享存儲(chǔ)器。
簡(jiǎn)言之,這種通信方式的效率低,不方便,故只適用于傳送少量信息的情況。
2.
高級(jí)進(jìn)程通信
以較高的效率傳送大量數(shù)據(jù)的一種通信方式。高級(jí)通信的目的不是為了控制進(jìn)程的執(zhí)行速度,而是為了交換信息。在這種通信方式中,程序員可直接利用系統(tǒng)提供的一組通信命令(通信原語),高效地傳送大量數(shù)據(jù),操作系統(tǒng)隱藏了實(shí)現(xiàn)通信的細(xì)節(jié),這大大簡(jiǎn)化了通信程序編制上的復(fù)雜性。高級(jí)通信原語不僅保證相互制約的進(jìn)程之間的正確關(guān)系,還同時(shí)實(shí)現(xiàn)了進(jìn)程之間的信息交換。目前常用的高級(jí)通信機(jī)構(gòu)有消息緩沖通信、管道通信和信箱通信。二、進(jìn)程通信的類型(1)消息緩沖通信消息緩沖通信方式也稱為直接通信方式,即一個(gè)進(jìn)程直接發(fā)送一個(gè)消息給接收進(jìn)程。所謂消息
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球設(shè)備用墊圈和密封材料行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球微膠囊脂質(zhì)粉行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球螺旋繞線機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 上海市崇明區(qū)高三二模語文試題(含答案)
- 2025地形圖測(cè)繪合同
- 2025正規(guī)版小型工程合同樣書
- 小客車長(zhǎng)期租賃合同書
- 封陽臺(tái)工程合同協(xié)議書
- 2025醫(yī)院食堂承包合同新版(合同版本)
- 2025裝修公司裝修合同范本 資料
- 第二章《有理數(shù)的運(yùn)算》單元備課教學(xué)實(shí)錄2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)
- DB31-T 596-2021 城市軌道交通合理通風(fēng)技術(shù)管理要求
- 華為智慧園區(qū)解決方案介紹
- 2022年江西省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 人教版八年級(jí)英語上冊(cè)期末專項(xiàng)復(fù)習(xí)-完形填空和閱讀理解(含答案)
- 一例蛇串瘡患者個(gè)案護(hù)理課件
- 低壓電工理論考試題庫低壓電工考試題
- 國家電網(wǎng)培訓(xùn)課件
- 五年級(jí)上冊(cè)口算練習(xí)400題及答案
- 駱駝祥子選擇題100道及答案
- 2024年公務(wù)員考試題庫附答案【完整版】
評(píng)論
0/150
提交評(píng)論