第2講 處理機(jī)管理-3進(jìn)程通信_(tái)第1頁(yè)
第2講 處理機(jī)管理-3進(jìn)程通信_(tái)第2頁(yè)
第2講 處理機(jī)管理-3進(jìn)程通信_(tái)第3頁(yè)
第2講 處理機(jī)管理-3進(jìn)程通信_(tái)第4頁(yè)
第2講 處理機(jī)管理-3進(jìn)程通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

1、2015年操作系統(tǒng)操作系統(tǒng)Operating System操作系統(tǒng)22.1 進(jìn)程及其描述2.2 進(jìn)程控制2.3 進(jìn)程同步2.4 進(jìn)程通信2.5 線程及其實(shí)現(xiàn)2.6 處理機(jī)調(diào)度2.7 死鎖習(xí)題第第2 2講講 處理機(jī)管理處理機(jī)管理操作系統(tǒng)32.4 進(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)程之間的通信提供了共享

2、存儲(chǔ)器。 操作系統(tǒng)4進(jìn)程通信的要求(1) 使用方便 隱藏了實(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í)通信工具,該工具最主要的特點(diǎn)是:操作系統(tǒng)52.6.1進(jìn)程通信的類型1. 共享存儲(chǔ)器系統(tǒng)(Shared-Memory System)2. 管道(pipe)通信系統(tǒng)3. 消息傳遞系統(tǒng)(Message passing syste

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

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

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

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

7、在同一臺(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ò)通信程序接口之一。操作系統(tǒng)16文件型 通信進(jìn)程都運(yùn)行在同一臺(tái)機(jī)器的環(huán)境中,基于本地文件系統(tǒng)支持,一個(gè)套接字關(guān)聯(lián)到一個(gè)特殊的文件,通信雙方通過(guò)對(duì)這個(gè)特殊文件的讀寫實(shí)現(xiàn)通信 類似于管道操作系統(tǒng)17網(wǎng)絡(luò)型 非對(duì)稱方式,發(fā)送者需要提供接收者命名 通信雙方進(jìn)程可運(yùn)行不同主機(jī)的網(wǎng)絡(luò)環(huán)境中,分配一對(duì)套接字(接收進(jìn)程+發(fā)送進(jìn)程)操作系統(tǒng)182) 遠(yuǎn)程過(guò)程調(diào)用和遠(yuǎn)程方法調(diào)用 遠(yuǎn)程過(guò)程(函數(shù))調(diào)用RPC(Rem

8、ote Procedure Call),是一個(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)用。操作系統(tǒng)19RPC過(guò)程(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ù)器

9、進(jìn)程接收消息后轉(zhuǎn)入執(zhí)行,并根據(jù)其中的遠(yuǎn)程過(guò)程名找到對(duì)應(yīng)的服務(wù)器存根,將消息轉(zhuǎn)給該存根; (5) 該服務(wù)器存根接到消息后,由阻塞狀態(tài)轉(zhuǎn)入執(zhí)行狀態(tài),拆開(kā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)移。操作

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

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

12、于方便了用戶。操作系統(tǒng)243) 進(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ā)送(或接收)或者阻塞。 操作系統(tǒng)254) 通信鏈路 為使在發(fā)送進(jìn)程和接收進(jìn)程之間能進(jìn)行通信,必須在兩者之間建立一條通信鏈路。 有兩種方式建立通信鏈路。 第一種方式:由發(fā)送進(jìn)程在通信之前用顯式的“建立連接”命令(原語(yǔ))請(qǐng)求系統(tǒng)為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。 第二種方式:發(fā)送進(jìn)程無(wú)須明確提出建立鏈路的請(qǐng)求,只須利用系統(tǒng)提供的發(fā)送命令(原語(yǔ),系統(tǒng)自動(dòng)為之建立一條鏈路。操作系統(tǒng)26

13、2. 信箱通信 屬于間接通信 需要中間實(shí)體(信箱) 信箱是一個(gè)共享的數(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)建信箱時(shí)確定操作系統(tǒng)28雙向信箱示意圖操作系統(tǒng)292) 信箱通信原語(yǔ) (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)實(shí)例 消息緩沖隊(duì)列通信機(jī)制首先由美國(guó)的Per Brinch Hansen提出,并在RC 4000系統(tǒng)上實(shí)現(xiàn),后來(lái)被廣泛應(yīng)用于本地進(jìn)程之間的通信中。在這種通信機(jī)制中,發(fā)送進(jìn)程利用Send原語(yǔ)將消息直接發(fā)送給接收進(jìn)程;接收進(jìn)程則利用Receive原語(yǔ)接收消息。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. 消息緩沖隊(duì)列通信機(jī)制中的數(shù)據(jù)結(jié)構(gòu) (1) 消息緩沖區(qū)。 (2) PCB中有關(guān)通信的數(shù)據(jù)項(xiàng)。操作系統(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ù)項(xiàng)typedef struct processcontrol_block.struct message_buffer *mq;semaphore mutex;semaphore sm;.PCB;操作系統(tǒng)35發(fā)送與接收操作系統(tǒng)362. 發(fā)送原語(yǔ)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. 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論