操作系統(tǒng)-進程通信_第1頁
操作系統(tǒng)-進程通信_第2頁
操作系統(tǒng)-進程通信_第3頁
操作系統(tǒng)-進程通信_第4頁
操作系統(tǒng)-進程通信_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

2.6進程通信

進程通信是指進程之間的信息交換。由于進程的互斥與同步,需要在進程間交換一定的信息,故不少學者將它們也歸為進程通信,但只能把它們稱為低級進程通信。我們以信號量機制為例來說明,它們之所以低級的原因在于:①效率低,生產(chǎn)者每次只能向緩沖池投放一個產(chǎn)品(消息),消費者每次只能從緩沖區(qū)中取得一個消息;②通信對用戶不透明,OS只為進程之間的通信提供了共享存儲器。在進程之間要傳送大量數(shù)據(jù)時,應(yīng)當利用OS提供的高級通信工具,該工具最主要的特點是:

(1)使用方便。OS隱藏了實現(xiàn)進程通信的具體細節(jié),向用戶提供了一組用于實現(xiàn)高級通信的命令(原語),用戶可方便地直接利用它實現(xiàn)進程之間的通信。或者說,通信過程對用戶是透明的。這樣就大大減少了通信程序編制上的復(fù)雜性。

(2)高效地傳送大量數(shù)據(jù)。用戶可直接利用高級通信命令(原語)高效地傳送大量的數(shù)據(jù)。2.6.1進程通信的類型

1.共享存儲器系統(tǒng)(Shared-MemorySystem)

在共享存儲器系統(tǒng)中,相互通信的進程共享某些數(shù)據(jù)結(jié)構(gòu)或共享存儲區(qū),進程之間能夠通過這些空間進行通信。據(jù)此,又可把它們分成以下兩種類型:

(1)基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式。

(2)基于共享存儲區(qū)的通信方式。

2.管道(pipe)通信系統(tǒng)

所謂“管道”,是指用于連接一個讀進程和一個寫進程以實現(xiàn)它們之間通信的一個共享文件,又名pipe文件。向管道(共享文件)提供輸入的發(fā)送進程(即寫進程)以字符流形式將大量的數(shù)據(jù)送入管道;而接受管道輸出的接收進程(即讀進程)則從管道中接收(讀)數(shù)據(jù)。由于發(fā)送進程和接收進程是利用管道進行通信的,故又稱為管道通信。這種方式首創(chuàng)于UNIX系統(tǒng),由于它能有效地傳送大量數(shù)據(jù),因而又被引入到許多其它操作系統(tǒng)中。為了協(xié)調(diào)雙方的通信,管道機制必須提供以下三方面的協(xié)調(diào)能力:①互斥,即當一個進程正在對pipe執(zhí)行讀/寫操作時,其它(另一)進程必須等待。②同步,指當寫(輸入)進程把一定數(shù)量(如4?KB)的數(shù)據(jù)寫入pipe,便去睡眠等待,直到讀(輸出)進程取走數(shù)據(jù)后再把它喚醒。當讀進程讀一空pipe時,也應(yīng)睡眠等待,直至寫進程將數(shù)據(jù)寫入管道后才將之喚醒。③確定對方是否存在,只有確定了對方已存在時才能進行通信。

3.消息傳遞系統(tǒng)(Messagepassingsystem)

在該機制中,進程不必借助任何共享存儲區(qū)或數(shù)據(jù)結(jié)構(gòu),而是以格式化的消息(message)為單位,將通信的數(shù)據(jù)封裝在消息中,并利用操作系統(tǒng)提供的一組通信命令(原語),在進程間進行消息傳遞,完成進程間的數(shù)據(jù)交換。

基于消息傳遞系統(tǒng)的通信方式屬于高級通信方式,因其實現(xiàn)方式的不同,可進一步分成兩類:

(1)直接通信方式

(2)間接通信方式

4.客戶機-服務(wù)器系統(tǒng)(Client-Serversystem)

1)套接字(Socket)

套接字起源于20世紀70年代加州大學伯克利分校版本的UNIX(即BSDUnix),是UNIX操作系統(tǒng)下的網(wǎng)絡(luò)通信接口。一開始,套接字被設(shè)計用在同一臺主機上多個應(yīng)用程序之間的通信(即進程間的通信),主要是為了解決多對進程同時通信時端口和物理線路的多路復(fù)用問題。隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展以及UNIX操作系統(tǒng)的廣泛使用,套接字已逐漸成為最流行的網(wǎng)絡(luò)通信程序接口之一。

2)遠程過程調(diào)用和遠程方法調(diào)用

遠程過程(函數(shù))調(diào)用RPC(RemoteProcedureCall),是一個通信協(xié)議,用于通過網(wǎng)絡(luò)連接的系統(tǒng)。該協(xié)議允許運行于一臺主機(本地)系統(tǒng)上的進程調(diào)用另一臺主機(遠程)系統(tǒng)上的進程,而對程序員表現(xiàn)為常規(guī)的過程調(diào)用,無需額外地為此編程。如果涉及的軟件采用面向?qū)ο缶幊蹋敲催h程過程調(diào)用亦可稱做遠程方法調(diào)用。實際上,遠程過程調(diào)用的主要步驟是:

(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ù)器進程接收消息后轉(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)移。2.6.2消息傳遞通信的實現(xiàn)方式

1.直接消息傳遞系統(tǒng)

在直接消息傳遞系統(tǒng)中采用直接通信方式,即發(fā)送進程利用OS所提供的發(fā)送命令(原語),直接把消息發(fā)送給目標進程。

1)直接通信原語

(1)對稱尋址方式。

(2)非對稱尋址方式。

2)消息的格式

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

3)進程的同步方式

在進程之間進行通信時,同樣需要有進程同步機制,以使諸進程間能協(xié)調(diào)通信。不論是發(fā)送進程還是接收進程,在完成消息的發(fā)送或接收后,都存在兩種可能性,即進程或者繼續(xù)發(fā)送(或接收)或者阻塞。

4)通信鏈路

為使在發(fā)送進程和接收進程之間能進行通信,必須在兩者之間建立一條通信鏈路。有兩種方式建立通信鏈路。第一種方式是:由發(fā)送進程在通信之前用顯式的“建立連接”命令(原語)請求系統(tǒng)為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。

2.信箱通信

1)信箱的結(jié)構(gòu)

信箱定義為一種數(shù)據(jù)結(jié)構(gòu)。在邏輯上,可以將其分為兩個部分:

(1)信箱頭

(2)信箱體圖2-16雙向信箱示意圖

2)信箱通信原語

系統(tǒng)為郵箱通信提供了若干條原語,分別用于:

(1)郵箱的創(chuàng)建和撤消。

(2)消息的發(fā)送和接收。

3)信箱的類型

郵箱可由操作系統(tǒng)創(chuàng)建,也可由用戶進程創(chuàng)建,創(chuàng)建者是郵箱的擁有者。據(jù)此,可把郵箱分為以下三類:

(1)私用郵箱。

(2)公用郵箱。

(3)共享郵箱。2.6.3直接消息傳遞系統(tǒng)實例

消息緩沖隊列通信機制首先由美國的Hansan提出,并在RC4000系統(tǒng)上實現(xiàn),后來被廣泛應(yīng)用于本地進程之間的通信中。在這種通信機制中,發(fā)送進程利用Send原語將消息直接發(fā)送給接收進程;接收進程則利用Receive原語接收消息。

1.消息緩沖隊列通信機制中的數(shù)據(jù)結(jié)構(gòu)

(1)消息緩沖區(qū)。

(2)PCB中有關(guān)通信的數(shù)據(jù)項。

2.發(fā)送原語

發(fā)送進程在利用發(fā)送原語發(fā)送消息之前,應(yīng)先在自己的內(nèi)存空間設(shè)置一發(fā)送區(qū)a,如圖2-17所示,把待發(fā)送的消息正文、發(fā)送進程標識符、消息長度等信息填入其中,然后調(diào)用發(fā)送原語,把消息發(fā)送給目標(接收)進程。發(fā)送原語首先根據(jù)發(fā)送區(qū)a中所設(shè)置的消息長度a.size來申請一緩沖區(qū)i,接著,把發(fā)送區(qū)a中的信息復(fù)制到緩沖區(qū)i中。為了能將i掛在接收進程的消息隊列mq上,應(yīng)先獲得接收進程

溫馨提示

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

最新文檔

評論

0/150

提交評論