版權(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ǔ)器。在進(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ō),通信過程對(duì)用戶是透明的。這樣就大大減少了通信程序編制上的復(fù)雜性。
(2)高效地傳送大量數(shù)據(jù)。用戶可直接利用高級(jí)通信命令(原語(yǔ))高效地傳送大量的數(shù)據(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)程之間能夠通過這些空間進(jìn)行通信。據(jù)此,又可把它們分成以下兩種類型:
(1)基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式。
(2)基于共享存儲(chǔ)區(qū)的通信方式。
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)中。為了協(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)行通信。
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)間接通信方式
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ù)用問題。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展以及UNIX操作系統(tǒng)的廣泛使用,套接字已逐漸成為最流行的網(wǎng)絡(luò)通信程序接口之一。
2)遠(yuǎn)程過程調(diào)用和遠(yuǎn)程方法調(diào)用
遠(yuǎn)程過程(函數(shù))調(diào)用RPC(RemoteProcedureCall),是一個(gè)通信協(xié)議,用于通過網(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ī)的過程調(diào)用,無(wú)需額外地為此編程。如果涉及的軟件采用面向?qū)ο缶幊?,那么遠(yuǎn)程過程調(diào)用亦可稱做遠(yuǎn)程方法調(diào)用。實(shí)際上,遠(yuǎn)程過程調(diào)用的主要步驟是:
(1)本地過程調(diào)用者以一般方式調(diào)用遠(yuǎn)程過程在本地關(guān)聯(lián)的客戶存根,傳遞相應(yīng)的參數(shù),然后將控制權(quán)轉(zhuǎn)移給客戶存根;
(2)客戶存根執(zhí)行,完成包括過程名和調(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)程過程名找到對(duì)應(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ù)器端的遠(yuǎn)程過程運(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ān)聯(lián)的客戶存根,再將控制權(quán)轉(zhuǎn)移給客戶存根;
(10)客戶存根從消息中取出結(jié)果,返回給本地調(diào)用者進(jìn)程,并完成控制權(quán)的轉(zhuǎn)移。2.6.2消息傳遞通信的實(shí)現(xiàn)方式
1.直接消息傳遞系統(tǒng)
在直接消息傳遞系統(tǒng)中采用直接通信方式,即發(fā)送進(jìn)程利用OS所提供的發(fā)送命令(原語(yǔ)),直接把消息發(fā)送給目標(biāo)進(jìn)程。
1)直接通信原語(yǔ)
(1)對(duì)稱尋址方式。
(2)非對(duì)稱尋址方式。
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)在于方便了用戶。
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ā)送(或接收)或者阻塞。
4)通信鏈路
為使在發(fā)送進(jìn)程和接收進(jìn)程之間能進(jìn)行通信,必須在兩者之間建立一條通信鏈路。有兩種方式建立通信鏈路。第一種方式是:由發(fā)送進(jìn)程在通信之前用顯式的“建立連接”命令(原語(yǔ))請(qǐng)求系統(tǒng)為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。
2.信箱通信
1)信箱的結(jié)構(gòu)
信箱定義為一種數(shù)據(jù)結(jié)構(gòu)。在邏輯上,可以將其分為兩個(gè)部分:
(1)信箱頭
(2)信箱體圖2-16雙向信箱示意圖
2)信箱通信原語(yǔ)
系統(tǒng)為郵箱通信提供了若干條原語(yǔ),分別用于:
(1)郵箱的創(chuàng)建和撤消。
(2)消息的發(fā)送和接收。
3)信箱的類型
郵箱可由操作系統(tǒng)創(chuàng)建,也可由用戶進(jìn)程創(chuàng)建,創(chuàng)建者是郵箱的擁有者。據(jù)此,可把郵箱分為以下三類:
(1)私用郵箱。
(2)公用郵箱。
(3)共享郵箱。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ǔ)接收消息。
1.消息緩沖隊(duì)列通信機(jī)制中的數(shù)據(jù)結(jié)構(gòu)
(1)消息緩沖區(qū)。
(2)PCB中有關(guān)通信的數(shù)據(jù)項(xiàng)。
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)程
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025技術(shù)開發(fā)轉(zhuǎn)讓合同認(rèn)定范圍及規(guī)則
- 2025建筑建材購(gòu)銷合同
- 2025年公司停車場(chǎng)車輛停放服務(wù)及免責(zé)條款協(xié)議3篇
- 2025年度變壓器出口業(yè)務(wù)代理與市場(chǎng)開拓合同3篇
- 二零二五年度現(xiàn)代農(nóng)業(yè)土地承包權(quán)流轉(zhuǎn)及項(xiàng)目實(shí)施合同3篇
- 二零二五年度農(nóng)機(jī)租賃與農(nóng)業(yè)生態(tài)旅游合作框架協(xié)議2篇
- 二零二五年度全新店面轉(zhuǎn)讓定金及市場(chǎng)推廣協(xié)議3篇
- 二零二五年度停車場(chǎng)設(shè)施設(shè)備檢測(cè)與維修合同3篇
- 二零二五年度環(huán)保產(chǎn)業(yè)合作協(xié)議樣本3篇
- 二零二五年度農(nóng)業(yè)耕地租賃與農(nóng)業(yè)資源保護(hù)合同3篇
- 浙江省杭州市錢塘區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期數(shù)學(xué)期末試卷
- 2024年考研(英語(yǔ)一)真題及參考答案
- 山東省濟(jì)南市(2024年-2025年小學(xué)四年級(jí)語(yǔ)文)人教版期末考試((上下)學(xué)期)試卷及答案
- 《簡(jiǎn)·愛》-2022年中考一輪復(fù)習(xí)之必讀名著對(duì)比閱讀訓(xùn)練
- 交通燈課程設(shè)計(jì)交通燈控制器
- 腫瘤科常見急重癥
- 03SG715-1蒸壓輕質(zhì)加氣混凝土板(NACL)構(gòu)造詳圖
- 盡職調(diào)查工作底稿1_公司業(yè)務(wù)調(diào)查
- 集裝箱碼頭堆場(chǎng)項(xiàng)目可行性研究報(bào)告寫作范文
- 醫(yī)保藥店一體化信息管理系統(tǒng)操作手冊(cè)
- 小學(xué)六年級(jí)數(shù)學(xué)上期家長(zhǎng)會(huì)精品課件
評(píng)論
0/150
提交評(píng)論