




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
4.4 進程的相互制約關(guān)系 在多道程序的環(huán)境中,系統(tǒng)中的多個進程可以并發(fā)執(zhí)行,同時它們又要共享系統(tǒng)中的資源,這些資源有些是可共享使用的,如磁盤,有些是以獨占方式使用的,如打印機。由此將會引起一系列的矛盾,產(chǎn)生錯綜復(fù)雜的相互制約的關(guān)系。 產(chǎn)生這種錯綜復(fù)雜的相互制約關(guān)系的原因有二: 資源共享 進程合作進程間的關(guān)系 進程之間有兩種關(guān)系: 第一種是競爭關(guān)系,從而有進程的互斥(Mutual Exclusion)是解決進程間競爭關(guān)系的手段。 第二種是協(xié)作關(guān)系,某些進程為完成同一任務(wù)需要分工協(xié)作。進程的同步(Synchronization)是解決進程間協(xié)作關(guān)系的手段。進程間的關(guān)系 進程的互斥(Mutual Exclusion)是指若干個進程要使用同一共享資源時,任何時刻最多允許一個進程去使用,其它要使用該資源的進程必須等待,直到占有資源的進程釋放該資源。 臨界區(qū)管理可以解決進程互斥問題,后續(xù)課程將詳細(xì)介紹臨界區(qū)的解決方案。進程間的關(guān)系 進程的同步(Synchronization)是解決進程間協(xié)作關(guān)系的手段。指一個進程的執(zhí)行依賴于另一個進程的消息,當(dāng)一個進程沒有得到來自于另一個進程的消息時則等待,直到消息到達(dá)才被喚醒。 不難看出,進程互斥關(guān)系是一種特殊的進程同步關(guān)系,即逐次使用互斥共享資源。進程間的關(guān)系 對于協(xié)作關(guān)系有如下例子: 設(shè)input 、process、和output三個進程分工協(xié)作完成讀入數(shù)據(jù)、加工處理和打印輸出任務(wù),這是一種典型的協(xié)作關(guān)系。 操作系統(tǒng)要確保諸進程在執(zhí)行次序上協(xié)調(diào)一致: 沒有輸入完一塊數(shù)據(jù)之前不能加工處理 沒有加工處理完一塊數(shù)據(jù)之前不能打印輸出等等 每個進程都要接收到它進程完成一次處理的消息后,才能進行下一步工作。4.5.1 互斥的概念 引例: 宿舍固定電話的使用 打印機的使用 還有內(nèi)存變量、指針、數(shù)組等等也是臨界資源。臨界資源說明 例1:兩個進程A、B共享一臺打印機 若不加以控制,兩個進程的輸出結(jié)果可能交織在一起,很難區(qū)分。 臨界資源說明 例2:兩個進程共享一個變量x 設(shè):x代表某航班機座號,p1和p2兩個售票進程,售票工作是對變量x加1。 這兩個進程在一個處理機C上并發(fā)執(zhí)行,分別具有內(nèi)部寄存器r1和r2 ,兩個進程共享一個變量x時,兩種可能的執(zhí)行次序: 說明 以前的課程也講到了與時間有關(guān)的錯誤,其實就是因為共享變量,這個共享的變量就是臨界資源。 如果不對臨界資源加以控制,那么就可能出現(xiàn)錯誤,這就是本節(jié)要解決的問題。什么是臨界資源 特點:當(dāng)兩個進程公用一個變量時,它們必須順序地使用,一個進程對公用變量操作完畢后,另一個進程才能去訪問和修改這一變量。 一次僅允許一個進程使用的資源稱為臨界資源。 哪些臨界資源? 臨界資源: 物理設(shè)備,如輸入機、打印機、磁帶機等都具有這種性質(zhì)。 軟件資源,如公用變量、數(shù)據(jù)、表格、隊列等也都具有這一特點。什么是臨界區(qū) 臨界區(qū):在每個進程中,訪問臨界資源的那段程序能夠從概念上分離出來,稱為臨界區(qū)或臨界段。 它就是進程中對公共變量(或存儲區(qū))進行審查與修改的程序段,稱為相對于該公共變量的臨界區(qū)。什么是臨界區(qū)什么是臨界區(qū)什么是互斥? 互斥:在操作系統(tǒng)中,當(dāng)某一進程正在訪問某一存儲區(qū)域時,就不允許其他進程來讀出或者修改存儲區(qū)的內(nèi)容,否則,就會發(fā)生后果無法估計的錯誤。 進程間的這種相互制約關(guān)系稱為互斥。進入臨界區(qū)的準(zhǔn)則:進入臨界區(qū)的準(zhǔn)則: (1)每次至多有一個進程處于臨界區(qū); (2)當(dāng)有若干個進程欲進入臨界區(qū)時,應(yīng)在有限的時間內(nèi)使其進入; (3)進程在臨界區(qū)內(nèi)僅逗留有限的時間。4.5.2 鎖和上鎖、開鎖操作 解決進程互斥的最簡單的辦法是加鎖。 什么是鎖用某假設(shè)變量w代表某種資源的狀態(tài),w稱為“鎖”。鎖位值: 為“0”表示資源可用 為1表示資源已被占用(不可用) 。 在系統(tǒng)中為每個臨界資源設(shè)置一個鎖位。4.5.2 鎖和上鎖、開鎖操作 當(dāng)一個進程使用某個臨界資源之前必須完成下列操作: 1、考察鎖位的值(是0還是1); ; 2、若原來的值是為“0”,將鎖位置為“1” ,此為上鎖操作 (表示占用該資源); 3、若原來值是為“1”,(該資源已被別人占用),則不改變原來的值,循環(huán)檢測等待。 4、當(dāng)某進程使用完資源后,將鎖位置為“0 ” ,稱為開鎖操作,此時別的等待進程一旦檢測到w的不為1了,則表示可以使用臨界資源了。4.5.2 鎖和上鎖、開鎖操作說明 在上述簡單的關(guān)鎖原語中,goto語句使得lock(w)原語的進程占用處理機而等待進入互斥段(稱為忙等待busy waiting)測試法,浪費CPU時間。 。 為此,可將上述上鎖原語和開鎖原語做進一步修改。 修改后的原語如下所示:改進的lock和unlock算法鎖和上鎖、開鎖操作 設(shè)臨界區(qū)的類名為w。為了保證每一次臨界區(qū)中只能有一個程序段被執(zhí)行,又設(shè)鎖定位keyw。keyw表示該鎖定位屬于類名為w的臨界區(qū)。 加鎖后的臨界區(qū)程序描述如下: lock(keyw)/上鎖 unlock(keyw) /開鎖 經(jīng)過鎖處理,任何時候都不可能有兩個及以上的進程進入臨界去。4.5.3 用上鎖原語和開鎖原語實現(xiàn)互 假設(shè)有兩個進程共享打 印機,兩個進程中使用 打印機的程序段為臨界 區(qū)。 為保證打印的正確,設(shè) 置打印機的鎖print, 其初值為“0”,表示打印機可用。4.5.3 用上鎖原語和開鎖原語實現(xiàn)互斥4.6.1 信號燈的概念 前面介紹的方法雖能保證互斥,可正確解決臨界區(qū)調(diào)度問題,但有明顯缺點: 對不能進入臨界區(qū)的進程,采用忙式等待(busy waiting)測試法,浪費CPU時間。 將測試能否進入臨界區(qū)的責(zé)任推給各個競爭的進程會削弱系統(tǒng)的可靠性,加重了用戶編程負(fù)擔(dān)。4.6.1 信號燈的概念 1965年荷蘭的計算機科學(xué)家Dijkstra提出了新的同步工具信號量和P、V操作。 他將交通管制中多種顏色的信號燈管理交通的方法引入操作系統(tǒng),讓兩個或多個進程通過信號量(Semaphore) 展開交互。 進程在某一特殊點上停止執(zhí)行直到得到一個對應(yīng)的信號量,通過信號量這一設(shè)施,任何復(fù)雜的進程交互要求可得到滿足,這種特殊的變量就是信號量。4.6.1 信號燈的概念 信號量僅能由同步原語對其進行操作,原語是操作系統(tǒng)中執(zhí)行時不可中斷的過程、即原子操作(Atomic Action)。 Dijkstra發(fā)明了兩個同步原語:P操作和V操作(荷蘭語中“測試(Proberen)” 和“增量(Verhogen)” 的頭字母,此外還用的符號有:wait和signal;up和down;sleep和wakeup等。 本書中采用Dijkstra最早論文中使用的符號P和V。利用信號量和P、V操作既可以解決并發(fā)進程的競爭問題,又可以解決并發(fā)進程的協(xié)作問題。信號燈的分類 信號量按其用途可分為兩種: 公用信號量:聯(lián)系一組并發(fā)進程,相關(guān)的進程均可在此信號量上執(zhí)行P和V操作。初值常常為1,用于實現(xiàn)進程互斥。 私有信號量:聯(lián)系一組并發(fā)進程,僅允許此信號量擁有的進程執(zhí)行P操作,而其他相關(guān)進程可在其上施行V操作。初值常常為0或正整數(shù),多用于并發(fā)進程同步。信號燈的分類 信號量按其取值可分為兩種: 二元信號量:僅允許取值為0和1,主要用于解決進程互斥問題(非我即你,通常用一個布爾量來表示)。 一般信號量:允許取值為非負(fù)整數(shù),主要用于解決進程間的同步問題。4.6.1 信號燈的概念 信號燈的定義: 信號燈是一個確定的二元組(s,q),s 是一個具有非負(fù)初值的整型變量,q 是一個初始狀態(tài)為空的排隊站。 S代表資源的實體。在實際應(yīng)用中應(yīng)準(zhǔn)確地說明s的意義和初值,每個信號燈都有一個隊列,其初始狀態(tài)為空。4.6.2 P、V操作 信號燈的值僅能由P、V操作來改變, 對信號燈的P操作記為:P(S),P操作是一個原子操作。 對信號燈的V操作記為:V(S), V操作是一個原子操作。 在實際操作系統(tǒng)中,一般情況下是由機器硬件提供P、V操作的指令,當(dāng)然是原子操作,若機器不提供P、V操作的指令,則操作系統(tǒng)提供P、V操作原語。信號量值的物理意義 信號燈是整型變量。 變量值 0 時,表示綠燈,進程執(zhí)行。 變量值 0:其數(shù)值代表可用的資源數(shù)量 S=0:代表無資源可用,但也沒有等待的進程,即也沒有申請資源的進程 S0:其數(shù)值代表可用的資源數(shù)量 S=0:代表無資源可用,但也沒有等待的進程,即也沒有申請資源的進程 S=0,不能為負(fù)值多緩沖的生產(chǎn)者消費者問題 問題描述:若干進程通過有限的共享緩沖區(qū)交換數(shù)據(jù)。其中,“生產(chǎn)者”進程不斷寫入,而“消費者”進程不斷讀出;共享緩沖區(qū)共有N個;任何時刻只能有一個進程可對共享緩沖區(qū)進行操作。 即滿足如下條件:(1)消費者想接收數(shù)據(jù)時,有界緩沖區(qū)中至少有一個單元是滿的。(2)生產(chǎn)者想發(fā)送數(shù)據(jù)時,有界緩沖區(qū)中至少有一個單元是空的。 生產(chǎn)者消費者的例子 例1: 計算進程和打印進程 計算進程 cp不斷產(chǎn)生數(shù)據(jù),是生產(chǎn)者;打印進程 iop不斷打印數(shù)據(jù),是消費者。 例2: 通信問題 發(fā)消息進程 send不斷產(chǎn)生消息,是生產(chǎn)者; 收消息進程 receive不斷接收消息,是消費者多生產(chǎn)者-消費者問題圖示生產(chǎn)者與消費者 生產(chǎn)者:當(dāng)有界緩沖區(qū)中無空位置時,要等待; 向有界緩沖區(qū)放入物品后,要發(fā)消息(V操作)。 消費者:當(dāng)有界緩沖區(qū)中無物品時,要等待; 從有界緩沖區(qū)取出物品后,要發(fā)消息(P操作) 。多緩沖區(qū)的P-C問題之間的關(guān)系 一、同步關(guān)系: 對于生產(chǎn)者進程:產(chǎn)生一個數(shù)據(jù),當(dāng)要送入緩沖區(qū)時,要檢查緩沖區(qū)是否已滿,若未滿,則可將數(shù)據(jù)送入緩沖區(qū),并通知消費者進程;否則,等待; 對于消費者進程:當(dāng)它去取數(shù)據(jù)時,要看緩沖區(qū)中是否有數(shù)據(jù)可取,若有則取走一個數(shù)據(jù),并通知生產(chǎn)者進程,否則,等待。 這種相互等待,并互通信息就是典型的進程同步。多緩沖區(qū)的P-C問題之間的關(guān)系 二、互斥關(guān)系 緩沖區(qū)又是個臨界資源,在多個進程在生產(chǎn)產(chǎn)品時,它不允許在緩沖區(qū)的某一個單元同時存放產(chǎn)品 也不允許多個進程同時消費緩沖區(qū)的某一個單元產(chǎn)品,因此,還有個互斥的問題。多生產(chǎn)者-消費者問題的一般解答 信號燈設(shè)置 兩個同步信號燈empty:表示空緩沖區(qū)的數(shù)目,初值為有界緩沖區(qū)的大小n; full :表示滿緩沖區(qū)的數(shù)目,其初值為0; 一個互斥信號燈- mutex:互斥信號燈,初值為1。同步描述程序描述程序描述多生產(chǎn)者-消費者問題的flash動畫思考與說明 如果我們把生產(chǎn)者進程中的兩個P操作交換次序,即那么會有什么問題嗎?參見下圖的程序參考:主程序并行程序思考與說明 在這個問題中P操作的次序是很重要的,如果我們把生產(chǎn)者進程中的兩個P操作交換次序,即那么就會產(chǎn)生與時間有關(guān)的錯誤。 分析如下:分析說明 在某個時刻,消費者消費的比較快,把所有的產(chǎn)品消費完,有:empty=n,mutex=1,full=0 接著消費者進程運行到1處,使得mutex=0,運行到2處full=-10,消費者進程等待 在接著生產(chǎn)者進程運行到3處,由于生產(chǎn)了一個產(chǎn)品,故空位置-1,empty=n-1, 運行到4初,由于p(mutex)操作,mutex=mutex-1=-10表示有S個資源可用 S=0表示無資源可用 S0則| S |表示S等待隊列中的進程個數(shù) P(S):表示申請一個資源 V(S):表示釋放一個資源。信號量的初值應(yīng)該大于等于0信號量及P、V操作討論(續(xù)1) 2) P.V操作必須成對出現(xiàn),有一個P操作就一定有一個V操作 當(dāng)為互斥操作時,它們同處于同一進程 當(dāng)為同步操作時,則不在同一進程中出現(xiàn) 如果P(S1)和P(S2)兩個操作在一起,那么P操作的順序至關(guān)重要,一個同步P操作與一個互斥P操作在一起時同步P操作在互斥P操作前 而兩個V操作無關(guān)緊要信號量及P、V操作討論(續(xù)2) 3)P.V操作的優(yōu)缺點 優(yōu)點: 簡單,而且表達(dá)能力強(用P.V操作可解決任何同步互斥問題) 缺點: 不夠安全;P.V操作使用不當(dāng)會出現(xiàn)死鎖;遇到復(fù)雜同步互斥問題時實現(xiàn)復(fù)雜回顧:哲學(xué)家就餐問題問題描述: 有五個哲學(xué)家圍坐在一圓桌旁,桌中央有一盤通心粉,每人面前有一只空盤子,每兩人之間放一只筷子 每個哲學(xué)家的行為是思考,感到饑餓,然后吃通心粉 為了吃通心粉,每個哲學(xué)家必須拿到兩只筷子,并且每個人只能直接從自己的左邊或右邊去取筷子哲學(xué)家就餐問題解法(1)#define N 5 void philosopher (int i) while (true) 思考; 取forki; 取fork(i+1) % 5; 進食; 放forki; 放fork(i+1) % 5; 回顧:哲學(xué)家就餐問題為防止死鎖發(fā)生可采取的措施: 最多允許4個哲學(xué)家同時坐在桌子周圍 僅當(dāng)一個哲學(xué)家左右兩邊的筷子都可用時,才允許他拿筷子() 給所有哲學(xué)家編號,奇數(shù)號的哲學(xué)家必須首先拿左邊的筷子,偶數(shù)號的哲學(xué)家則反之 為了避免死鎖,把哲學(xué)家分為三種狀態(tài),思考,饑餓,進食,并且一次拿到兩只筷子,否則不拿哲學(xué)家就餐問題解法(2)#define N 5#define THINKING 0#define HUNGRY 1#define EATING 2#typedef int semaphore;int stateN;semaphore mutex=1;/叉子操作要互斥的信號量semaphore sN;/每一個哲學(xué)家是否能吃為一個信號量statei= THINKING ;/初始化i=0-4si=0;/ 初始化i=0-4void test(int i) if (statei = HUNGRY) & (state (i-1) % 5!=EATING) & (state (i+1) % 5!=EATING) statei=EATING; V(si); void philosopher (int i) while (true) 思考; P(mutex); statei = HUNGRY; test(i); V(mutex); P(si); 拿左筷子; 拿右筷子; 進食; 放左筷子; 放右筷子; P(mutex) state i = THINKING; test(i-1 % 5); test(i+1 % 5); V(mutex); state i = THINKINGs i = 0經(jīng)典問題(1)讀者寫者問題 問題描述:有兩組并發(fā)進程: 讀者和寫者,共享一組數(shù)據(jù)區(qū) 要求: 允許多個讀者同時執(zhí)行讀操作 不允許讀者、寫者同時操作 不允許多個寫者同時操作第一類:讀者優(yōu)先如果讀者到: 1)無讀者、寫者,新讀者可以讀 2)有寫者等,但有其它讀者正在讀,則新讀者也可以讀 3)有寫者寫,新讀者等如果寫者到: 1)無讀者,新寫者可以寫 2)有讀者,新寫者等待 3)有其它寫者,新寫者等待第一類讀者寫者問題的解法讀者不固定情況:第一類讀者寫者問題的解法/初始化mutex1=1;W=1;count=0;讀者:Readeriwhile (true) P(mutex1); readcount +; if (readcount=1) P (w);/禁止寫 V(mutex1); 讀 P(mutex1); readcount -; if (readcount=0) V(w);/可以允許寫 V(mutex1);寫者:Writej while (true) P(w); 寫 V(w); 實例訓(xùn)練 有N個讀者和兩個編輯同時處理一篇文章。 對于讀操作是可以同時進行的,若有讀者正在讀這篇文章,編輯就不能工作; 若編輯正在處理這篇文章,讀者就不能作讀操作。 編輯與編輯的工作也是互斥的,試用信號燈及P、V操作寫出讀者與編輯之間協(xié)同工作的程序描述。說明 讀者寫者問題,它為數(shù)據(jù)庫訪問建立了一個模型。例如,設(shè)想一個飛機定票系統(tǒng),其中有許多競爭的進程試圖讀寫其中的數(shù)據(jù)。說明 在讀者優(yōu)先的進程中:現(xiàn)在假設(shè)一個寫者到來,由于寫操作是排他的,所以它不能訪問數(shù)據(jù)庫,而是被掛起。 隨后其他的讀者到來,這樣只要有一個讀者活躍,隨后而來的讀者都被允許訪問數(shù)據(jù)庫。這樣的結(jié)果是只要有讀者陸續(xù)到來,它們一來就被允許進入,而寫者將一直被掛起直到?jīng)]有一個讀者為止。 假如每2秒鐘來一個讀者,而其操作時間為5秒鐘,則寫者將永遠(yuǎn)不能訪問數(shù)據(jù)庫,或者我們說寫者發(fā)生了饑餓現(xiàn)象。 思考 思考題:請大家試著寫出寫者優(yōu)先的解法,并且考慮一下,能不能設(shè)計出一種算法使得無論對讀者還是寫者都是公平的,不會存在任何一方可能的饑餓現(xiàn)象。 寫者優(yōu)先(第二類讀寫/者問題) 寫者優(yōu)先: 條件: 1)多個讀者可以同時進行讀 2)寫者必須互斥(只允許一個寫者寫,也不能讀者寫者同時進行) 3)寫者優(yōu)先于讀者(一旦有寫者,則后續(xù)讀者必須等待沒有進入計數(shù)的進程,喚醒時優(yōu)先考慮寫者)解1 讀者數(shù)量固定 如果讀者數(shù)是固定的,我們可采用下面的算法: rwmutex:用于寫者與其他讀者/寫者互斥的訪問共享數(shù)據(jù) rmutex: 設(shè)該信號量初始值設(shè)為10,表示最多允許10個讀者進程同時進行讀操作寫者優(yōu)先寫者優(yōu)先解2 讀者數(shù)不固定 如果讀者數(shù)不固定,采用下面的算法: 設(shè)置三個互斥信號量: rwmutex 用于寫者與其他讀者/寫者互斥的訪問共享數(shù)據(jù) rmutex 用于讀者互斥的訪問讀者計數(shù)器readcount nrmutex 用于寫者等待已進入讀者退出,所有讀者退出前互斥寫操作4.8 進程通信 并發(fā)進程之間的交往本質(zhì)上是互相交換信息。有些情況下進程之間交換的信息量很少,例如僅僅交換某個狀態(tài)信息。 有些情況下進程之間交換大批數(shù)據(jù),例如傳送一批信息或整個文件。進程之間互相交換信息的工作稱之為進程通信IPC(InterProcess Communication)。4.8.1 概述P.V操作實現(xiàn)的是進程之間的低級通訊,所以P.V為低級通訊原語。它只能傳遞簡單的信號,不能傳遞交換大量信息如果要在進程間傳遞大量信息則要用Send / Receive原語(高級通訊原語)進程通信的方式1-共享內(nèi)存共享內(nèi)存: 相互通信的進程間設(shè)有公共內(nèi)存,一組進程向該公共內(nèi)存中寫,另一組進程從公共內(nèi)存中讀,通過這種方式實現(xiàn)兩組進程間的信息交換。如圖所示:共享內(nèi)存 內(nèi)存中開辟一個共享存儲區(qū),諸進程通過該區(qū)實現(xiàn)通信,這是進程通信中最快的方法。進程通信的方式2-消息傳遞 有時進程間可能需要交換更多的信息,例如,一個輸入輸出操作請求,要求把數(shù)據(jù)從一個進程傳送給另一個進程,這種大量的信息傳遞可使用一種高級通信方式消息傳遞(message passing)來實現(xiàn)。 由于操作系統(tǒng)隱蔽了許多實現(xiàn)細(xì)節(jié),通過消息傳遞機制通信,能簡化程序編制的復(fù)雜性,方便易用,得到了廣泛應(yīng)用。進程通信的方式2-消息傳遞 消息傳遞機制至少需要提供兩條原語send和receive,前者向一個給定的目標(biāo)發(fā)送一個消息,后者則從一個給定的源接受一條消息。 如果沒有消息可用,則接收者可能阻塞直到一條消息到達(dá),或者也可以立即返回,并帶回一個錯誤碼。消息傳遞方式消息傳遞: 系統(tǒng)為進程提供了兩個高級通訊原語send和receive send:當(dāng)要進行消息傳遞時執(zhí)行 receive:當(dāng)接收者要接收消息時執(zhí)行消息傳遞的方式 消息傳遞系統(tǒng)的變體很多,常用的有直接通信(消息緩沖區(qū))方式和間接通信(信箱)方式 Unix的pipeline和socket機制屬于一種信箱方式的變體。下圖是消息傳遞機制通信模型。消息傳遞模式:消息傳遞模式分兩大類:(a)消息緩沖(直接通信 ) (b)信箱通信(間接通信)(a)消息緩沖(直接通信 ) 在消息緩沖方式下,在內(nèi)存中開設(shè)緩沖區(qū),發(fā)送進程將消息送入緩沖區(qū),接收進程接收傳遞來的緩沖區(qū)。 企圖發(fā)送或接收消息的每個進程必須指出信件發(fā)給誰或從誰那里接收消息,可用send原語和receive原語為實現(xiàn)進程之間的通信,這兩個原語定義如下: send(P,消息):把一個消息發(fā)送給進程P receive(Q,消息):從進程Q接收一個消息(a)消息緩沖(直接通信 ) 這樣,進程P和Q通過執(zhí)行這兩個操作而自動建立了一種聯(lián)結(jié),并且這一種聯(lián)結(jié)僅僅發(fā)生在這一對進程之間。 消息可以有固定長度或可變長度兩種: 固定長度便于物理實現(xiàn),但使程序設(shè)計增加困難; 而消息長度可變使程序設(shè)計變得簡單,但使物理實現(xiàn)復(fù)雜化。(b)信箱通信(間接通信) 采用信箱通信(間接通信)方式時,進程間發(fā)送或接收消息通過一個信箱來進行,消息可以被理解成信件,每個信箱有一個唯一的標(biāo)識符。 當(dāng)兩個以上的進程有一個共享的信箱時,它們就能進行通信。(b)信箱通信(間接通信) 一個進程也可以分別與多個進程共享多個不同的信箱,這樣,一個進程可以同時和多個進程進行通信。在間接通信方式“發(fā)送”和“接收”原語的形式如下: send(A,信件):把一封信件(消息)傳送到信箱A。 receive(A,信件):從信箱A接收一封信件(消息)。(b)信箱通信 信箱是存放信件的存儲區(qū)域,每個信箱可以分成信箱特征和信箱體兩部分: 信箱特征指出信箱容量、信件格式、指針等; 信箱體用來存放信件,信箱體分成若干個區(qū),每個區(qū)可容納一封信。 信箱使用規(guī)則 若發(fā)送信件時信箱已滿,則發(fā)送進程被置為“等信箱”狀態(tài),直到信箱有空時才被釋放 若取信件時信箱中無信,則接收進程被置為“等信件”狀態(tài),直到有信件時才被釋放4.9 線程 1. 什么是線程(thread)-有時稱輕量級進程(lightweight process LWP),是一個CPU調(diào)度單位,是進程中的一個執(zhí)行路徑。 它由線程ID,程序計數(shù)器、寄存器集合和堆棧組成。 它與同屬于一個進程的其它線程共享其代碼段、數(shù)據(jù)段和其它操作系統(tǒng)的資源(如打開文件和信號)Single and Multithreaded ProcessesSingle Threaded and Multithreaded ModelsCombinations of Threads and Processes4.9 線程 線程可以這樣來描述: 進程中的一條執(zhí)行路徑; 它有自己私用的堆棧和處理機執(zhí)行環(huán)境 它與父進程共享分配給父進程的主存; 它是單個進程所創(chuàng)建的許多個同時存在的線程中的一個。4.9 線程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋面鋪裝激光整平機技術(shù)解析與應(yīng)用
- 腫瘤抗體研究與應(yīng)用進展
- 2024年福建廈門市蘇頌醫(yī)院補充工作人員招聘105人筆試考點考試題庫與答案
- 春節(jié)節(jié)前安全檢查與假日安全提示
- 2024年高考押題-歷史
- 收費站月工作總結(jié)
- 直腸惡性腫瘤疾病查房
- 腫瘤放療護理查房
- 2025社區(qū)獲得性肺炎防治進展
- 支原體肺炎院感防控要點
- 大學(xué)生醫(yī)學(xué)健康科普演講
- 2025國開電大《管理英語1》綜合測試形考任務(wù)答案
- 冶金天車作業(yè)安全培訓(xùn)
- 廣東省深圳市2021-2022學(xué)年高一下學(xué)期英語期末調(diào)研考試(含答案)
- 《馬克思主義基本原理概論》課后思考題及答案
- 2025屆成都市新都一中高三一診考試英語試卷含答案
- 煤炭行業(yè)的企業(yè)戰(zhàn)略布局與資源整合考核試卷
- 電動二輪車租賃合同協(xié)議
- 電梯維保合同分包協(xié)議
- 靜脈血液標(biāo)本采集指南
- fca外貿(mào)合同協(xié)議
評論
0/150
提交評論