第2講 處理機管理-3進程通信_第1頁
第2講 處理機管理-3進程通信_第2頁
第2講 處理機管理-3進程通信_第3頁
第2講 處理機管理-3進程通信_第4頁
第2講 處理機管理-3進程通信_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2015年操作系統(tǒng)操作系統(tǒng)Operating System操作系統(tǒng)22.1 進程及其描述2.2 進程控制2.3 進程同步2.4 進程通信2.5 線程及其實現(xiàn)2.6 處理機調(diào)度2.7 死鎖習(xí)題第第2 2講講 處理機管理處理機管理操作系統(tǒng)32.4 進程通信 進程通信是指進程之間的信息交換。 由于進程的互斥與同步,需要在進程間交換一定的信息,故不少學(xué)者將它們也歸為進程通信,但只能把它們稱為低級進程通信。 我們以信號量機制為例來說明,它們之所以低級的原因在于: 效率低,生產(chǎn)者每次只能向緩沖池投放一個產(chǎn)品(消息),消費者每次只能從緩沖區(qū)中取得一個消息; 通信對用戶不透明,OS只為進程之間的通信提供了共享

2、存儲器。 操作系統(tǒng)4進程通信的要求(1) 使用方便 隱藏了實現(xiàn)進程通信的具體細節(jié),向用戶提供了一組用于實現(xiàn)高級通信的命令(原語),用戶可方便地直接利用它實現(xiàn)進程之間的通信。或者說,通信過程對用戶是透明的。這樣就大大減少了通信程序編制上的復(fù)雜性。(2) 高效地傳送大量數(shù)據(jù) 用戶可直接利用高級通信命令(原語)高效地傳送大量的數(shù)據(jù)。在進程之間要傳送大量數(shù)據(jù)時,應(yīng)當(dāng)利用OS提供的高級通信工具,該工具最主要的特點是:操作系統(tǒng)52.6.1進程通信的類型1. 共享存儲器系統(tǒng)(Shared-Memory System)2. 管道(pipe)通信系統(tǒng)3. 消息傳遞系統(tǒng)(Message passing syste

3、m)4. 客戶機-服務(wù)器系統(tǒng)(Client-Server system)操作系統(tǒng)61. 共享存儲器系統(tǒng)(Shared-Memory System) 在共享存儲器系統(tǒng)中,相互通信的進程共享某些數(shù)據(jù)結(jié)構(gòu)或共享存儲區(qū),進程之間能夠通過這些空間進行通信。 據(jù)此,又可把它們分成以下兩種類型:(1) 基于共享數(shù)據(jù)結(jié)構(gòu)共享數(shù)據(jù)結(jié)構(gòu)的通信方式。(2) 基于共享存儲區(qū)共享存儲區(qū)的通信方式。操作系統(tǒng)72. 管道(pipe)通信系統(tǒng) 所謂“管道”,是指用于連接一個讀進程和一個寫進程以實現(xiàn)它們之間通信的一個共享文件,又名pipe文件。 向管道(共享文件)提供輸入的發(fā)送進程(即寫進程)以字符流形式將大量的數(shù)據(jù)送入管道;

4、 而接受管道輸出的接收進程(即讀進程)則從管道中接收(讀)數(shù)據(jù)。 由于發(fā)送進程和接收進程是利用管道進行通信的,故又稱為管道通信。這種方式首創(chuàng)于UNIX系統(tǒng),由于它能有效地傳送大量數(shù)據(jù),因而又被引入到許多其它操作系統(tǒng)中。操作系統(tǒng)8例如 我們可以使用管道符|來連接進程。 在Linux系統(tǒng)中,由管道連接起來的進程可以自動運行,就如同在他們有一個數(shù)據(jù)流一樣。 在下面的這個例子中,我們要使用sort命令來排序ps的輸出。操作系統(tǒng)9不使用管道VS 使用管道$ ps psout.txt$ sort psout.txt pssort.out$ ps | sort pssort.out操作系統(tǒng)10要在屏幕上看到

5、他們,要使用第三個進程$ ps | sort | more操作系統(tǒng)11管道機制必須提供三方面的協(xié)調(diào)即當(dāng)一個進程正在對pipe執(zhí)行讀/寫操作時,其它(另一)進程必須等待。 互斥指當(dāng)寫(輸入)進程把一定數(shù)量(如4KB)的數(shù)據(jù)寫入pipe,便去睡眠等待,直到讀(輸出)進程取走數(shù)據(jù)后再把它喚醒。當(dāng)讀進程讀一空pipe時,也應(yīng)睡眠等待,直至寫進程將數(shù)據(jù)寫入管道后才將之喚醒。 同步只有確定了對方已存在時才能進行通信。 確定對方是否存在操作系統(tǒng)12 在該機制中,進程不必借助任何共享存儲區(qū)或數(shù)據(jù)結(jié)構(gòu),而是以格式化的消息 (message)為單位,將通信的數(shù)據(jù)封裝在消息中,并利用操作系統(tǒng)提供的一組通信命通信命令

6、令(原語原語),在進程間進行消息傳遞,完成進程間的數(shù)據(jù)交換。操作系統(tǒng)13兩種消息傳遞通信方式(1) 直接通信方式發(fā)送進程利用OS提供的發(fā)送原語把消息直接發(fā)送給目標(biāo)進程(2) 間接通信方式 發(fā)送進程把消息發(fā)送至共享中間實體(郵箱),接收進程從其中接收。基于消息傳遞系統(tǒng)的通信方式屬于高級通信方式,因其實現(xiàn)方式的不同,可進一步分成兩類:操作系統(tǒng)144. 客戶機-服務(wù)器系統(tǒng)(Client-Server system)操作系統(tǒng)151) 套接字(Socket) 套接字起源于20世紀(jì)70年代加州大學(xué)伯克利分校版本的UNIX(即BSD Unix),是UNIX 操作系統(tǒng)下的網(wǎng)絡(luò)通信接口。 一開始,套接字被設(shè)計用

7、在同一臺主機上多個應(yīng)用程序之間的通信(即進程間的通信),主要是為了解決多對進程同時通信時端口和物理線路的多路復(fù)用問題。 隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展以及UNIX 操作系統(tǒng)的廣泛使用,套接字已逐漸成為最流行的網(wǎng)絡(luò)通信程序接口之一。操作系統(tǒng)16文件型 通信進程都運行在同一臺機器的環(huán)境中,基于本地文件系統(tǒng)支持,一個套接字關(guān)聯(lián)到一個特殊的文件,通信雙方通過對這個特殊文件的讀寫實現(xiàn)通信 類似于管道操作系統(tǒng)17網(wǎng)絡(luò)型 非對稱方式,發(fā)送者需要提供接收者命名 通信雙方進程可運行不同主機的網(wǎng)絡(luò)環(huán)境中,分配一對套接字(接收進程+發(fā)送進程)操作系統(tǒng)182) 遠程過程調(diào)用和遠程方法調(diào)用 遠程過程(函數(shù))調(diào)用RPC(Rem

8、ote Procedure Call),是一個通信協(xié)議,用于通過網(wǎng)絡(luò)連接的系統(tǒng)。 該協(xié)議允許運行于一臺主機(本地)系統(tǒng)上的進程調(diào)用另一臺主機(遠程)系統(tǒng)上的進程,而對程序員表現(xiàn)為常規(guī)的過程調(diào)用,無需額外地為此編程。 如果涉及的軟件采用面向?qū)ο缶幊?,那么遠程過程調(diào)用亦可稱做遠程方法調(diào)用。操作系統(tǒng)19RPC過程(1) 本地過程調(diào)用者以一般方式調(diào)用遠程過程在本地關(guān)聯(lián)的客戶存根,傳遞相應(yīng)的參數(shù),然后將控制權(quán)轉(zhuǎn)移給客戶存根;(2) 客戶存根執(zhí)行,完成包括過程名和調(diào)用參數(shù)等信息的消息建立,將控制權(quán)轉(zhuǎn)移給本地客戶進程;(3) 本地客戶進程完成與服務(wù)器的消息傳遞,將消息發(fā)送到遠程服務(wù)器進程;(4) 遠程服務(wù)器

9、進程接收消息后轉(zhuǎn)入執(zhí)行,并根據(jù)其中的遠程過程名找到對應(yīng)的服務(wù)器存根,將消息轉(zhuǎn)給該存根; (5) 該服務(wù)器存根接到消息后,由阻塞狀態(tài)轉(zhuǎn)入執(zhí)行狀態(tài),拆開消息從中取出過程調(diào)用的參數(shù),然后以一般方式調(diào)用服務(wù)器上關(guān)聯(lián)的過程;(6) 在服務(wù)器端的遠程過程運行完畢后,將結(jié)果返回給與之關(guān)聯(lián)的服務(wù)器存根;(7) 該服務(wù)器存根獲得控制權(quán)運行,將結(jié)果打包為消息,并將控制權(quán)轉(zhuǎn)移給遠程服務(wù)器進程;(8) 遠程服務(wù)器進程將消息發(fā)送回客戶端;(9) 本地客戶進程接收到消息后,根據(jù)其中的過程名將消息存入關(guān)聯(lián)的客戶存根,再將控制權(quán)轉(zhuǎn)移給客戶存根;(10) 客戶存根從消息中取出結(jié)果,返回給本地調(diào)用者進程,并完成控制權(quán)的轉(zhuǎn)移。操作

10、系統(tǒng)202.6.2 消息傳遞通信的實現(xiàn)方式 1. 直接消息傳遞系統(tǒng) 2. 信箱通信操作系統(tǒng)211. 直接消息傳遞系統(tǒng) 在直接消息傳遞系統(tǒng)中采用直接通信方式,即發(fā)送進程利用OS所提供的發(fā)送命令(原語),直接把消息發(fā)送給目標(biāo)進程。操作系統(tǒng)221) 直接通信原語(1) 對稱尋址方式 收發(fā)雙發(fā)顯式提供對方ID Send(receiver,message):發(fā)送message給receiver Receive(sender,message):從sender接收message 不足:依賴名稱(2) 非對稱尋址方式 接收進程可以與多個發(fā)送進程通信,無法制定發(fā)送進程 Send(Receiver,message

11、):發(fā)送message給Receiver Receive(ID,message):從ID接收message,ID可變操作系統(tǒng)232) 消息的格式在消息傳遞系統(tǒng)中所傳遞的消息,必須具有一定的消息格式。在單機系統(tǒng)環(huán)境中,由于發(fā)送進程和接收進程處于同一臺機器中,有著相同的環(huán)境,所以消息的格式比較簡單,可采用比較短的定長消息格式,以減少對消息的處理和存儲開銷。該方式可用于辦公自動化系統(tǒng)中,為用戶提供快速的便箋式通信。但這種方式對于需要發(fā)送較長消息的用戶是不方便的。為此,可采用變長的消息格式,即進程所發(fā)送消息的長度是可變的。對于變長消息,系統(tǒng)無論在處理方面還是存儲方面,都可能會付出更多的開銷,但其優(yōu)點在

12、于方便了用戶。操作系統(tǒng)243) 進程的同步方式 在進程之間進行通信時,同樣需要有進程同步機制,以使諸進程間能協(xié)調(diào)通信。 不論是發(fā)送進程還是接收進程,在完成消息的發(fā)送或接收后,都存在兩種可能性,即進程或者繼續(xù)發(fā)送(或接收)或者阻塞。 操作系統(tǒng)254) 通信鏈路 為使在發(fā)送進程和接收進程之間能進行通信,必須在兩者之間建立一條通信鏈路。 有兩種方式建立通信鏈路。 第一種方式:由發(fā)送進程在通信之前用顯式的“建立連接”命令(原語)請求系統(tǒng)為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。 第二種方式:發(fā)送進程無須明確提出建立鏈路的請求,只須利用系統(tǒng)提供的發(fā)送命令(原語,系統(tǒng)自動為之建立一條鏈路。操作系統(tǒng)26

13、2. 信箱通信 屬于間接通信 需要中間實體(信箱) 信箱是一個共享的數(shù)據(jù)結(jié)構(gòu),建立在RAM的公用緩沖區(qū)上,暫存發(fā)送方發(fā)送目標(biāo)方的消息,接收方可以從中取出發(fā)送方發(fā)給自己的消息操作系統(tǒng)271) 信箱的結(jié)構(gòu)(1) 信箱頭(2) 信箱體存放有關(guān)信箱的描述信息信箱ID,信箱擁有者,信箱口令,信箱空格數(shù)由若干可以存放消息的信箱格組成,數(shù)目和大小在創(chuàng)建信箱時確定操作系統(tǒng)28雙向信箱示意圖操作系統(tǒng)292) 信箱通信原語 (1) 郵箱的創(chuàng)建和撤消 創(chuàng)建 撤銷 (2) 消息的發(fā)送和接收 Send(mailbox,message) Receive(mailbox,message)操作系統(tǒng)303) 信箱的類型 (1)

14、 私用郵箱 (2) 公用郵箱 (3) 共享郵箱操作系統(tǒng)312.6.3直接消息傳遞系統(tǒng)實例 消息緩沖隊列通信機制首先由美國的Per Brinch Hansen提出,并在RC 4000系統(tǒng)上實現(xiàn),后來被廣泛應(yīng)用于本地進程之間的通信中。在這種通信機制中,發(fā)送進程利用Send原語將消息直接發(fā)送給接收進程;接收進程則利用Receive原語接收消息。Per Brinch Hansen (November 13, 1938 July 31, 2007) was a Danish-American computer scientist known for concurrent programming theo

15、ry操作系統(tǒng)321. 消息緩沖隊列通信機制中的數(shù)據(jù)結(jié)構(gòu) (1) 消息緩沖區(qū)。 (2) PCB中有關(guān)通信的數(shù)據(jù)項。操作系統(tǒng)33(1) 消息緩沖區(qū)typedef struct message_bufferint sender;int size;char *text;struct message_buffer *next;操作系統(tǒng)34(2) PCB中有關(guān)通信的數(shù)據(jù)項typedef struct processcontrol_block.struct message_buffer *mq;semaphore mutex;semaphore sm;.PCB;操作系統(tǒng)35發(fā)送與接收操作系統(tǒng)362. 發(fā)送原語void send(receiver,a)getbuf(a.size,i);i.sender=a.sender;i.size=a.size;copy(i.text,a.text);i.next=0;getid(PCBset

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論