操作系統第5講_第1頁
操作系統第5講_第2頁
操作系統第5講_第3頁
操作系統第5講_第4頁
操作系統第5講_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

操作系統概念

第五講進程通信OperatingSystemConceptionDavidfu上章回顧什么是臨界區?什么是信號量,如何定義初始值?OperatingSystemConceptionDavidfu本課總體綱要進程通信(InterprocessCommunication)消息、郵箱機制共享內存機制管道機制進程通信實例解析死鎖(DeadLock)死鎖的概念產生死鎖的必要條件死鎖的排除方法死鎖實例解析OperatingSystemConceptionDavidfu進程通信-分類(1)在單機系統中,進程間通信方式可分為4種:主從式(master/servantsystem)主進程可以自由使用從進程資源從進程的動作受到主進程的限制主進程和從進程關系固定應用于終端控制進程和終端進程OperatingSystemConceptionDavidfu進程通信-分類(2)會話式(Dialoguesystem)使用進程在使用服務進程提供的服務前,必須得到許可服務進程根據使用進程的要求提供服務,單控制權屬于服務進程本身使用進程和服務進程關系固定應用于用戶進程和磁盤管理OperatingSystemConceptionDavidfu進程通信-分類(3)消息或郵箱機制只要存在空緩存區或郵箱,發送進程就可以發送消息發送進程和接受進程無直接聯系發送進程和接受進程之間存在緩沖區或郵箱用來存放被傳輸的消息OperatingSystemConceptionDavidfu進程通信-分類(4)共享內存機制共享內存方式不要求數據移動,兩個需要互相交互的信息的進程通過對同一共享數據區(sharedmemory)的操作來達到互相通信的目的。OperatingSystemConceptionDavidfu進程通信-消息緩沖機制(5)由于消息緩沖機制中使用的緩沖區是公用緩沖區,使用消息緩沖機制傳送數據時,通信進程應滿足的條件:進程對緩沖區的操作必須互斥當緩沖區種無消息存在時,接收進程不能接受到任何消息設置公用信號量mutex,接收進程私用信號量SM,消息m。OperatingSystemConceptionDavidfu進程通信-消息緩沖機制(6)Send(m):Begin向系統申請一個消息緩沖區P(mutex)將消息m發送到新申請的消息緩沖區V(mutex)V(SM)Receive(m):BeginP(SM)P(mutex)將消息m從緩沖區復制到接收區并釋放緩沖區V(mutex)OperatingSystemConceptionDavidfu進程通信-郵箱(7)對于只有一個發送進程和一個接收進程使用的郵箱,進程間通信應滿足以下條件:發送進程發送消息時,郵箱中至少有一個存儲消息的單元接收進程接收消息時,郵箱中至少有一個消息存在發送進程郵箱頭郵箱體接收進程OperatingSystemConceptionDavidfu進程通信-管道(pipe)Unix系統從SystemV開始,提供有名管道和無名管道兩種數據通信方式。無名管道為建立管道的進程及其子進程提供一條以比特流方式傳送消息的通信管道。該管道在邏輯上是管道文件,物理上則由文件系統的高速緩沖區構成。寫fd[1]Pipe(fd)fd[0]讀OperatingSystemConceptionDavidfu進程通信-管道(pipe)

main(){intx,fd[2];charbuf[30],s[30];Pipe(fd);while((x=fork())==-1);//創建子進程失敗,原地循環if(x==0){sprintf(buf,”子進程寫信息到父進程”);write(fd[1],buf,30);exit(0);}else{ wait(0);read(fd[0],s,30);printf(“%s”,s);}}OperatingSystemConceptionDavidfu進程通信實例解析采用進程通信的管理方法解決生產者-消費者問題。要求生產者能告訴消費者產品的說明、規格、價格等,而消費者能反饋對物品的評價和處理情況設置公用信箱MOperatingSystemConceptionDavidfu進程通信實例解析生產者:L1:生產一個產品L2:receive(consumer,M);If物品未取走thengotoL2Else組織回信,說明產品信息Send(consumer,M);GotoL1消費者:L1:receive(producer,M);If沒有產品thengotoL1Else組織回信,反饋產品信息Send(producer,M);GotoL1OperatingSystemConceptionDavidfu本課總體綱要進程通信(InterprocessCommunication)消息、郵箱機制共享內存機制管道機制進程通信實例解析死鎖(DeadLock)死鎖的概念產生死鎖的必要條件死鎖的排除方法死鎖實例解析OperatingSystemConceptionDavidfu死鎖死鎖的定義:當多個進程因競爭資源而造成的一種僵局,在無外力作用下,這些進程將永遠不能繼續向前推進,這種現象稱為死鎖。死鎖的起因:并發進程的資源競爭進程推進順序不當OperatingSystemConceptionDavidfu死鎖產生死鎖的必要條件:互斥條件:資源的排他性不剝奪條件:進程對獲得的資源在未使用完畢前,不可被其他進程剝奪使用權利部分分配條件:進程每次申請新資源時,同時還要占用已分配的資源環路條件:存在進程循環鏈,鏈中每個進程已獲得的資源同時被下一個進程申請OperatingSystemConceptionDavidfu死鎖死鎖的排除方法:死鎖預防死鎖避免死鎖的檢測和恢復OperatingSystemConceptionDavidfu死鎖死鎖預防一次性分配法資源順序分配法先釋放,后申請OperatingSystemConceptionDavidfu死鎖死鎖避免:動態預防,系統根據某種算法在動態分配資源時,預測出死鎖發生的可能性,并加以預防死鎖的檢測與解除一個給定的進程-資源圖最終是可以化簡的。剝奪資源撤銷進程OperatingSystemConceptionDavidfu死鎖例題(1)有4個進程陷入了死鎖請問這4個進程可能占用了幾種資源?使用資源請求分配圖畫出可能的死鎖情況。OperatingSystemConceptionDavidfu死鎖例題(2)一臺計算機有8臺磁帶機,分別由n個進程競爭使用,每個進程需要3臺磁帶機,請問n為多少時,系統沒有死鎖的危險?設資源數M=8;競爭進程n,每個進程需要的資源為X=3系統不會發生死鎖的公式:X=1(M<n)X=1+(M-1)/nOperatingSystemConceptionDavidfu總結死鎖(DeadLock)死鎖的概念產生死鎖的必要條件

溫馨提示

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

評論

0/150

提交評論