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

下載本文檔

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

文檔簡(jiǎn)介

2.6進(jìn)程通信

進(jìn)程通信是指進(jìn)程之間的信息交換。由于進(jìn)程的互斥與同步,需要在進(jìn)程間交換一定的信息,故不少學(xué)者將它們也歸為進(jìn)程通信,但只能把它們稱為低級(jí)進(jìn)程通信。我們以信號(hào)量機(jī)制為例來(lái)說(shuō)明,它們之所以低級(jí)的原因在于:①效率低,生產(chǎn)者每次只能向緩沖池投放一個(gè)產(chǎn)品(消息),消費(fèi)者每次只能從緩沖區(qū)中取得一個(gè)消息;②通信對(duì)用戶不透明,OS只為進(jìn)程之間的通信提供了共享存儲(chǔ)器。?2.6進(jìn)程通信

進(jìn)程通信是指進(jìn)程之在進(jìn)程之間要傳送大量數(shù)據(jù)時(shí),應(yīng)當(dāng)利用OS提供的高級(jí)通信工具,該工具最主要的特點(diǎn)是:

(1)使用方便。OS隱藏了實(shí)現(xiàn)進(jìn)程通信的具體細(xì)節(jié),向用戶提供了一組用于實(shí)現(xiàn)高級(jí)通信的命令(原語(yǔ)),用戶可方便地直接利用它實(shí)現(xiàn)進(jìn)程之間的通信?;蛘哒f(shuō),通信過(guò)程對(duì)用戶是透明的。這樣就大大減少了通信程序編制上的復(fù)雜性。

(2)高效地傳送大量數(shù)據(jù)。用戶可直接利用高級(jí)通信命令(原語(yǔ))高效地傳送大量的數(shù)據(jù)。在進(jìn)程之間要傳送大量數(shù)據(jù)時(shí),應(yīng)當(dāng)利用OS提供的高級(jí)通信工2.6.1進(jìn)程通信的類型

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

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

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

(2)基于共享存儲(chǔ)區(qū)的通信方式。2.6.1進(jìn)程通信的類型

1.共享存儲(chǔ)器系統(tǒng)(Sha

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

所謂“管道”,是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程以實(shí)現(xiàn)它們之間通信的一個(gè)共享文件,又名pipe文件。向管道(共享文件)提供輸入的發(fā)送進(jìn)程(即寫進(jìn)程)以字符流形式將大量的數(shù)據(jù)送入管道;而接受管道輸出的接收進(jìn)程(即讀進(jìn)程)則從管道中接收(讀)數(shù)據(jù)。由于發(fā)送進(jìn)程和接收進(jìn)程是利用管道進(jìn)行通信的,故又稱為管道通信。這種方式首創(chuàng)于UNIX系統(tǒng),由于它能有效地傳送大量數(shù)據(jù),因而又被引入到許多其它操作系統(tǒng)中。2.管道(pipe)通信系統(tǒng)

所謂“管道”,是指用為了協(xié)調(diào)雙方的通信,管道機(jī)制必須提供以下三方面的協(xié)調(diào)能力:①互斥,即當(dāng)一個(gè)進(jìn)程正在對(duì)pipe執(zhí)行讀/寫操作時(shí),其它(另一)進(jìn)程必須等待。②同步,指當(dāng)寫(輸入)進(jìn)程把一定數(shù)量(如4?KB)的數(shù)據(jù)寫入pipe,便去睡眠等待,直到讀(輸出)進(jìn)程取走數(shù)據(jù)后再把它喚醒。當(dāng)讀進(jìn)程讀一空pipe時(shí),也應(yīng)睡眠等待,直至寫進(jìn)程將數(shù)據(jù)寫入管道后才將之喚醒。③確定對(duì)方是否存在,只有確定了對(duì)方已存在時(shí)才能進(jìn)行通信。為了協(xié)調(diào)雙方的通信,管道機(jī)制必須提供以下三方面的協(xié)調(diào)能力

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

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

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

(1)直接通信方式

(2)間接通信方式3.消息傳遞系統(tǒng)(Messagepassingsy

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

1)套接字(Socket)

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

2)遠(yuǎn)程過(guò)程調(diào)用和遠(yuǎn)程方法調(diào)用

遠(yuǎn)程過(guò)程(函數(shù))調(diào)用RPC(RemoteProcedureCall),是一個(gè)通信協(xié)議,用于通過(guò)網(wǎng)絡(luò)連接的系統(tǒng)。該協(xié)議允許運(yùn)行于一臺(tái)主機(jī)(本地)系統(tǒng)上的進(jìn)程調(diào)用另一臺(tái)主機(jī)(遠(yuǎn)程)系統(tǒng)上的進(jìn)程,而對(duì)程序員表現(xiàn)為常規(guī)的過(guò)程調(diào)用,無(wú)需額外地為此編程。如果涉及的軟件采用面向?qū)ο缶幊?,那么遠(yuǎn)程過(guò)程調(diào)用亦可稱做遠(yuǎn)程方法調(diào)用。2)遠(yuǎn)程過(guò)程調(diào)用和遠(yuǎn)程方法調(diào)用

遠(yuǎn)程過(guò)程(函數(shù))調(diào)實(shí)際上,遠(yuǎn)程過(guò)程調(diào)用的主要步驟是:

(1)本地過(guò)程調(diào)用者以一般方式調(diào)用遠(yuǎn)程過(guò)程在本地關(guān)聯(lián)的客戶存根,傳遞相應(yīng)的參數(shù),然后將控制權(quán)轉(zhuǎn)移給客戶存根;

(2)客戶存根執(zhí)行,完成包括過(guò)程名和調(diào)用參數(shù)等信息的消息建立,將控制權(quán)轉(zhuǎn)移給本地客戶進(jìn)程;

(3)本地客戶進(jìn)程完成與服務(wù)器的消息傳遞,將消息發(fā)送到遠(yuǎn)程服務(wù)器進(jìn)程;

(4)遠(yuǎn)程服務(wù)器進(jìn)程接收消息后轉(zhuǎn)入執(zhí)行,并根據(jù)其中的遠(yuǎn)程過(guò)程名找到對(duì)應(yīng)的服務(wù)器存根,將消息轉(zhuǎn)給該存根;實(shí)際上,遠(yuǎn)程過(guò)程調(diào)用的主要步驟是:

(1)本地過(guò)程

(5)該服務(wù)器存根接到消息后,由阻塞狀態(tài)轉(zhuǎn)入執(zhí)行狀態(tài),拆開消息從中取出過(guò)程調(diào)用的參數(shù),然后以一般方式調(diào)用服務(wù)器上關(guān)聯(lián)的過(guò)程;

(6)在服務(wù)器端的遠(yuǎn)程過(guò)程運(yùn)行完畢后,將結(jié)果返回給與之關(guān)聯(lián)的服務(wù)器存根;

(7)該服務(wù)器存根獲得控制權(quán)運(yùn)行,將結(jié)果打包為消息,并將控制權(quán)轉(zhuǎn)移給遠(yuǎn)程服務(wù)器進(jìn)程;

(8)遠(yuǎn)程服務(wù)器進(jìn)程將消息發(fā)送回客戶端;

(9)本地客戶進(jìn)程接收到消息后,根據(jù)其中的過(guò)程名將消息存入關(guān)聯(lián)的客戶存根,再將控制權(quán)轉(zhuǎn)移給客戶存根;

(10)客戶存根從消息中取出結(jié)果,返回給本地調(diào)用者進(jìn)程,并完成控制權(quán)的轉(zhuǎn)移。(5)該服務(wù)器存根接到消息后,由阻塞狀態(tài)轉(zhuǎn)入執(zhí)行狀態(tài),2.6.2消息傳遞通信的實(shí)現(xiàn)方式

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

在直接消息傳遞系統(tǒng)中采用直接通信方式,即發(fā)送進(jìn)程利用OS所提供的發(fā)送命令(原語(yǔ)),直接把消息發(fā)送給目標(biāo)進(jìn)程。2.6.2消息傳遞通信的實(shí)現(xiàn)方式

1.直接消息傳遞系

1)直接通信原語(yǔ)

(1)對(duì)稱尋址方式。

(2)非對(duì)稱尋址方式。1)直接通信原語(yǔ)

(1)對(duì)稱尋址方式。

(2

2)消息的格式

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

在消息傳遞系統(tǒng)中所傳遞的消息,必須

3)進(jìn)程的同步方式

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

在進(jìn)程之間進(jìn)行通信時(shí),同樣需要

4)通信鏈路

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

為使在發(fā)送進(jìn)程和接收進(jìn)程之間能進(jìn)行通

2.信箱通信

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

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

(1)信箱頭

(2)信箱體2.信箱通信

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

信箱定義為一種圖2-16雙向信箱示意圖圖2-16雙向信箱示意圖

2)信箱通信原語(yǔ)

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

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

(2)消息的發(fā)送和接收。2)信箱通信原語(yǔ)

系統(tǒng)為郵箱通信提供了若干條原語(yǔ),

3)信箱的類型

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

(1)私用郵箱。

(2)公用郵箱。

(3)共享郵箱。3)信箱的類型

郵箱可由操作系統(tǒng)創(chuàng)建,也可由用戶進(jìn)2.6.3直接消息傳遞系統(tǒng)實(shí)例

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

消息緩沖隊(duì)列通信機(jī)制首

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

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

(2)PCB中有關(guān)通信的數(shù)據(jù)項(xiàng)。1.消息緩沖隊(duì)列通信機(jī)制中的數(shù)據(jù)結(jié)構(gòu)

(1)消息

2.發(fā)送原語(yǔ)

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

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論