進(jìn)程管理6進(jìn)程通信.ppt_第1頁(yè)
進(jìn)程管理6進(jìn)程通信.ppt_第2頁(yè)
進(jìn)程管理6進(jìn)程通信.ppt_第3頁(yè)
進(jìn)程管理6進(jìn)程通信.ppt_第4頁(yè)
進(jìn)程管理6進(jìn)程通信.ppt_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1,3.6 進(jìn)程通信(communication),進(jìn)程通信:指進(jìn)程間的信息交換。 按通信內(nèi)容可以劃分為2種 低級(jí)通信:進(jìn)程之間控制信息的交換稱(chēng)為低級(jí)通信。 一般只傳送一個(gè)和幾個(gè)字節(jié)的信息,達(dá)到控 制進(jìn)程執(zhí)行速度的作用。(進(jìn)程的同步和互斥) 信號(hào)量機(jī)制作為同步工具是卓有成效的,但作為通訊工具則不夠理想,(效率低。通訊對(duì)用戶(hù)不透明。) 高級(jí)通信:用戶(hù)可以直接利用操作系統(tǒng)所提供的一組通信命令,高效地傳送大量數(shù)據(jù)的一種通信方式。,2,進(jìn)程的同步與互斥是一種通訊方式,一進(jìn)程可通過(guò)修改變量或信號(hào)量告知另一進(jìn)程,它是否可以繼續(xù)執(zhí)行下去,利用生產(chǎn)者消費(fèi)者算法,生產(chǎn)者進(jìn)程可以傳送一批數(shù)據(jù)給消費(fèi)進(jìn)程,或者說(shuō)生產(chǎn)者通過(guò)緩沖區(qū)與消費(fèi)者進(jìn)行通訊,但P、V操作只能傳遞信號(hào),信號(hào)本身不包含任何數(shù)據(jù),而進(jìn)程不當(dāng)還容易導(dǎo)致進(jìn)程死鎖,因此,稱(chēng)這些同步機(jī)構(gòu)為低級(jí)通訊機(jī)構(gòu).,3,進(jìn)程通信的類(lèi)型 一、單機(jī)系統(tǒng)中進(jìn)程間通信的四種形式 P62 主從式、會(huì)話(huà)式、消息或郵箱機(jī)制、共享存儲(chǔ)區(qū)方式 二、高級(jí)通訊機(jī)制類(lèi)型 1 共享存儲(chǔ)器系統(tǒng)(Shared-Memory System) 2 消息傳遞系統(tǒng)(Message passing System) 3 管道(pipe)通信系統(tǒng),4,1 共享存儲(chǔ)器系統(tǒng),共享存儲(chǔ)器系統(tǒng):相互通訊的進(jìn)程通過(guò)共享數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)區(qū)進(jìn)行通訊,因而可進(jìn)一步分為: 基于共享數(shù)據(jù)結(jié)構(gòu)的通訊方式;(低效,只適于傳遞少量數(shù)據(jù)) 基于共享存儲(chǔ)區(qū)的通訊方式。為了傳送大量數(shù)據(jù),在存儲(chǔ)區(qū)中劃出一塊共享存儲(chǔ)區(qū),諸進(jìn)程可通過(guò)對(duì)共享存儲(chǔ)區(qū)進(jìn)行讀或?qū)憯?shù)據(jù)實(shí)現(xiàn)通訊。,向系統(tǒng)申請(qǐng)共享存儲(chǔ)區(qū)中的一個(gè)分區(qū) 指定該分區(qū)的關(guān)鍵字 如果已經(jīng)給其他進(jìn)程分配了這樣的存儲(chǔ)區(qū), 將使用分區(qū)的描述符返回給申請(qǐng)者 4 申請(qǐng)者將申請(qǐng)到的共享分區(qū)掛到本進(jìn)程上,返回,5,2 消息傳遞系統(tǒng),在消息傳遞系統(tǒng)中,進(jìn)程間的數(shù)據(jù)交換是以消息(message,在計(jì)算機(jī)網(wǎng)絡(luò)中又稱(chēng)報(bào)文)為單位。程序員直接利用系統(tǒng)提供的一組通訊命令(原語(yǔ))來(lái)實(shí)現(xiàn)通訊。 因其實(shí)現(xiàn)方法的不同,又可分為,直接通信方式(消息緩沖機(jī)制) 間接通信方式(信箱通信方式),6,直接通信方式: 發(fā)送進(jìn)程直接將消息發(fā)送給接收進(jìn)程,并將它掛在接收進(jìn)程的消息緩沖隊(duì)列上。接收進(jìn)程從消息緩沖隊(duì)列中取得消息。故稱(chēng)為消息緩沖機(jī)制。 間接通信方式: 發(fā)送進(jìn)程將消息發(fā)送到某個(gè)中間實(shí)體(一般稱(chēng)為信箱)中,接收進(jìn)程從中取得消息,所以稱(chēng)為信箱通訊方式,相應(yīng)地系統(tǒng)稱(chēng)為電子郵件系統(tǒng)。,7,消息緩沖機(jī)制(直接通信),發(fā)送進(jìn)程,在自己的內(nèi)存空間設(shè)置一個(gè),把要發(fā)送的消息填入發(fā)送區(qū),發(fā)送區(qū),接收區(qū),接收進(jìn)程,在自己的內(nèi)存 空間設(shè)置一個(gè),公用緩沖區(qū),兩通信進(jìn)程必須滿(mǎn)足下列條件 在發(fā)送進(jìn)程把消息寫(xiě)入緩沖區(qū)和把緩沖區(qū)掛入消息隊(duì)列時(shí), 應(yīng)禁止其他進(jìn)程對(duì)緩沖區(qū)消息隊(duì)列的訪(fǎng)問(wèn)。同理,接收進(jìn)程取消息時(shí)也禁止其他進(jìn)程訪(fǎng)問(wèn)緩沖區(qū)消息隊(duì)列 2 當(dāng)緩沖區(qū)中沒(méi)有信息存在時(shí),接收進(jìn)程不能接收到任何消息,8,消息的一般形式 消息緩沖通訊技術(shù)由Hansen 首先提出的,基本思想是:根據(jù)“生產(chǎn)者消費(fèi)者關(guān)系”原理,利用公用消息緩沖區(qū)實(shí)現(xiàn)進(jìn)程間的信息交換。 發(fā)送進(jìn)程先申請(qǐng)一個(gè)消息緩沖區(qū),寫(xiě)入消息后把該消息緩沖區(qū)送入接收進(jìn)程的消息隊(duì)列中,通知接收進(jìn)程。接收進(jìn)程從消息隊(duì)列中摘下一消息緩沖區(qū),取出所需要的信息。,9,消息的一般形式: 發(fā)送消息的進(jìn)程名 接收消息的進(jìn)程名 消息長(zhǎng)度 消息正文,10,消息緩沖通訊機(jī)構(gòu)包含下列內(nèi)容: 消息緩沖區(qū)是一個(gè)數(shù)據(jù)結(jié)構(gòu) 用Pascal 描述為: type msg=recorod sender: 消息發(fā)送者名 size: 消息長(zhǎng)度 Text: 消息正文 Next: 下一個(gè)消息的鏈指針,發(fā)送進(jìn)程和接收進(jìn)程 發(fā)送原語(yǔ)Send()和接收原語(yǔ)receive() 設(shè)公用信號(hào)量mutex,并置初值為1 設(shè)SM為接收進(jìn)程的私用信號(hào)量,置初值為0,Send(m) begin 向系統(tǒng)申請(qǐng)一個(gè)消息緩沖區(qū) P(mutex) 使用公用緩沖區(qū) 將發(fā)送區(qū)消息m送入新申請(qǐng)的消息緩沖區(qū) 把消息緩沖區(qū)掛入接收進(jìn)程的消息隊(duì)列 V(mutex) 釋放緩沖區(qū) V(SM) 向接收進(jìn)程發(fā)送消息 end,Receive(m ) begin P(SM) 等待接的消息的個(gè)數(shù) P(mutex) 使用公用緩沖區(qū) 摘下消息隊(duì)列中的消息m 將消息隊(duì)列m從緩沖區(qū)復(fù)制到接收區(qū) 釋放緩沖區(qū) V(mutex) 釋放公用緩沖區(qū) end,12,郵箱通信(間接通信),1 信(郵)箱 信箱是一種數(shù)據(jù)結(jié)構(gòu),邏輯上它分成兩部分:信箱頭和由若干格子組成的信箱體。 信箱中每個(gè)格子存放一封信,信箱中格子的數(shù)目和每格的大小在創(chuàng)建信箱時(shí)確定。 進(jìn)程間的通信要滿(mǎn)足如下條件: a.發(fā)送進(jìn)程發(fā)送消息時(shí),郵箱中至少要有一個(gè)空格存放該消息。 b.接收進(jìn)程接收消息時(shí),郵箱中至少要有一個(gè)消息存在。,13,信箱可由OS創(chuàng)建,也可由用戶(hù)進(jìn)程創(chuàng)建,創(chuàng)建者是信箱的擁有者,據(jù)此可把信箱分為:私用信箱,公用信箱,共享信箱。 在利用信箱通信時(shí),在發(fā)送進(jìn)程和接收進(jìn)程之間,存在著四種關(guān)系: 一對(duì)一關(guān)系:即可以為發(fā)送進(jìn)程和接收進(jìn)程建立一條專(zhuān)用的通信鏈路; 多對(duì)一關(guān)系:允許提供服務(wù)的進(jìn)程與多個(gè)用戶(hù)進(jìn)程進(jìn)行交互,也稱(chēng)客戶(hù)/服務(wù)器交互; 一對(duì)多關(guān)系:允許一個(gè)發(fā)送進(jìn)程與多個(gè)接收進(jìn)程交互,使發(fā)送進(jìn)程用廣播的形式,發(fā)送消息; 多對(duì)多關(guān)系:允許建立一個(gè)公用信箱,讓多個(gè)進(jìn)程都能向信箱投遞消息,也可取走屬于自己的消息。,14,發(fā)送進(jìn)程 A,接收進(jìn)程 B,Deposite(m),Remove(m),郵箱通信結(jié)構(gòu),郵箱頭:郵箱名稱(chēng)、郵箱大小、擁有該郵箱的進(jìn)程名,郵箱體:存放消息,使用郵箱的時(shí)候應(yīng)該滿(mǎn)足: 發(fā)送進(jìn)程發(fā)送消息時(shí),郵箱中至少要有一個(gè)空格能存放該消息 接收進(jìn)程接收消息時(shí),郵箱中至少有一個(gè)消息存在,15,該發(fā)送進(jìn)程調(diào)用過(guò)程deposit(m)將消息發(fā)送到郵箱,接收進(jìn)程調(diào)用過(guò)程remove(m),將消息m從郵箱中取出。 Fromnum發(fā)送進(jìn)程的私用信號(hào)量。記錄信箱空格,初值為n Mesnum接收進(jìn)程的私用信號(hào)量。記錄信箱有消息的個(gè)數(shù) 初值為0,16,Fromnum記錄信箱空格,初值為n Mesnum記錄信箱有消息的個(gè)數(shù) 初值為0 Deposit(m); Begin local x P(fromnum) 空格數(shù)減1 選擇空格x 將消息m放入空格x中 置格x的標(biāo)志為滿(mǎn) V(mesnum) 向接收進(jìn)程發(fā)送消息 end 消息個(gè)數(shù)1,Remove (m) being local x P(mesnum) 消息個(gè)數(shù)加1 選擇滿(mǎn)格x 把滿(mǎn)格x中的消息取出放m中 置格x標(biāo)志為空 V(mesnum) 空格個(gè)數(shù)加1 end,返回,17,3.6.5 進(jìn)程通信的例管道 管道(pipe)通訊由UNIX首創(chuàng)的一種借助文件和文件系統(tǒng)形成的一種通信方式,。由于其有效性,一些系統(tǒng)繼UNIX之后相繼引入了管道技術(shù),如pc-dos,管道通信將成為進(jìn)程通訊的一種重要方式。 消息緩沖通信機(jī)構(gòu)是以?xún)?nèi)存緩沖區(qū)為基礎(chǔ)。 管道是以文件系統(tǒng)為基礎(chǔ)。 有名管道 無(wú)名管道,18,管道 是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫(xiě)進(jìn)程,以實(shí)現(xiàn)它們之間通信的共享方式,又稱(chēng)pipe文件。 向管道(共享文件)提供輸入的發(fā)送進(jìn)程(即寫(xiě)進(jìn)程),以字符流形式將大量的數(shù)據(jù)送入管道;而接收管道輸出的接收進(jìn)程(即讀進(jìn)程),可從管道接收數(shù)據(jù),由于發(fā)送和接收都是利用管道進(jìn)行通信的,故稱(chēng)為管道通信。,19,為了協(xié)調(diào)雙方的通信,管道通信機(jī)制必須提供以下三方面的協(xié)調(diào)能力: 互斥。一個(gè)進(jìn)程正在對(duì)pipe進(jìn)行讀/寫(xiě)操作時(shí),另一進(jìn)程必須等待。 同步。當(dāng)寫(xiě)(輸入)進(jìn)程把一定數(shù)量的數(shù)據(jù)寫(xiě)入pipe后,便去睡眠等待,直到讀(輸出)進(jìn)程取走數(shù)據(jù)將其喚醒;當(dāng)讀進(jìn)程讀一空pipe,也應(yīng)睡眠等待,直至寫(xiě)進(jìn)程將數(shù)據(jù)寫(xiě)入管道,才將其喚醒。 對(duì)方是否存在。只有確定對(duì)方已存在時(shí),才能進(jìn)行管道通信,否則會(huì)造成因?qū)Ψ讲淮嬖诙鵁o(wú)限期等待。,20,管道通信的思想 (1)發(fā)送進(jìn)程可以源源不斷的從pipe一端寫(xiě)入數(shù)據(jù)流,在規(guī)定的pipe文件的最大長(zhǎng)度(如4096字節(jié))范圍內(nèi),每次寫(xiě)入的信息長(zhǎng)度是可變的 (2)接收進(jìn)程在需要時(shí)可以從pipe的另一端讀出數(shù)據(jù),讀出單位長(zhǎng)度也是可變的,21,1 Pipe的建立和使用方式 pipe 文件在使用之前,必須先由使用者建立并打開(kāi), 建立pipe的主要工作是在系統(tǒng)打開(kāi)文件表中建立該pipe的兩個(gè)表目, 一個(gè)表目用于控制該pipe的寫(xiě)操作(寫(xiě)入端) 另一表目用于控制該pipe的讀操作(讀出端)此時(shí),pipe本身還是個(gè)空白文件。,22,系統(tǒng)文件 write(Fd1,buf,size) 功能:把buf中的長(zhǎng)度為size字符的消息送入管道入口fd1 fd1pipe入口 buf:存放消息的空間 size :要寫(xiě)入的字符長(zhǎng)度 系統(tǒng)文件 read(fd0,buf,size) fd0Pipe的出口 功能:從pipe出口fd0讀出size字符的消息置入 buf中。,23,pipe只允許建立者及其子進(jìn)程使用。一進(jìn)程及其所有子孫構(gòu)成一個(gè)進(jìn)程族,同族中的多個(gè)進(jìn)程可共享一個(gè)pipe,為了避免混亂,通常一個(gè)pipe為兩個(gè)進(jìn)程專(zhuān)用,且一個(gè)進(jìn)程只用其寫(xiě)入端,另一進(jìn)程只用其讀出端。,pipe(fd),寫(xiě)入端,讀出端,fd1,write(fd1,buf,size),fd0,read(fd0,buf,size),管道按先進(jìn)現(xiàn)出方式FIFO傳送消息,且只能單向傳送消息,24,1 Pipe文件的讀寫(xiě)操作的同步與互斥 如同消息緩沖一樣,在對(duì)pipe文件進(jìn)行讀寫(xiě)操作過(guò)程中要對(duì)發(fā)送進(jìn)程和接送進(jìn)程實(shí)施正確的同步與互斥以確保通信的正確

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論