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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論