進程狀態與控制_第1頁
進程狀態與控制_第2頁
進程狀態與控制_第3頁
進程狀態與控制_第4頁
進程狀態與控制_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、進程狀態與管理制作人:顏遠海進程狀態實例o 計算機的進程狀態轉換圖如下圖所示,請說明:計算機的進程狀態轉換圖如下圖所示,請說明:(1)引起各種狀態轉換的典型事件哪些?)引起各種狀態轉換的典型事件哪些?(2)在觀察系統中的某些時,能夠看到某一進程產生的)在觀察系統中的某些時,能夠看到某一進程產生的一次狀態轉換相應地引起另一進程做一次狀態轉換。一次狀態轉換相應地引起另一進程做一次狀態轉換。在什么情況下,當一個進程發生轉換在什么情況下,當一個進程發生轉換C時能立即引起時能立即引起另一另一個進程發生轉換個進程發生轉換A?(3)試說明是否會發生下述因果轉換:)試說明是否會發生下述因果轉換:B-A:C-B

2、:D-A執行執行阻塞阻塞就緒就緒ABDCo解析:本題首先要透徹理解的狀態轉換和狀態轉換條件,其次是解析:本題首先要透徹理解的狀態轉換和狀態轉換條件,其次是理解因果轉換。所謂因果轉換,指的是有兩個轉換,一個轉換的理解因果轉換。所謂因果轉換,指的是有兩個轉換,一個轉換的發生會引起另一個轉換的發生,前一個轉換稱為因,后一個轉換發生會引起另一個轉換的發生,前一個轉換稱為因,后一個轉換稱為果,這兩個轉換稱為因果轉換。稱為果,這兩個轉換稱為因果轉換。根據以上分析,解答過程如下:根據以上分析,解答過程如下:(1)在本題所給的進程狀態轉換圖中,進程在三種狀態之間進行了)在本題所給的進程狀態轉換圖中,進程在三種

3、狀態之間進行了4種狀態轉換。種狀態轉換。當進程高度程序從就緒隊列中選取一個進程投入運行時引起轉換當進程高度程序從就緒隊列中選取一個進程投入運行時引起轉換A正在執行的進程如因時間片用完而被暫停執行就會引起轉換正在執行的進程如因時間片用完而被暫停執行就會引起轉換B:正在執行的進程因等待的事件尚未發生而無法執行(如進程請求完正在執行的進程因等待的事件尚未發生而無法執行(如進程請求完成成I/O)則會引起轉換)則會引起轉換C當進程等待的事件發生時(如當進程等待的事件發生時(如I/O完成)則會引起轉換完成)則會引起轉換D。o(2)如果就緒隊列非空,則一個進程的發生轉換)如果就緒隊列非空,則一個進程的發生轉

4、換C會立即引起另會立即引起另一個進程的發生轉換一個進程的發生轉換A。這是因為一個進程發生轉換。這是因為一個進程發生轉換C意味著正在意味著正在執行的進程由執行狀態變為阻塞狀態,這時處理機空閑,進程高執行的進程由執行狀態變為阻塞狀態,這時處理機空閑,進程高度程序必然會從就緒隊列中選取一個進程并將它投入運行,因此度程序必然會從就緒隊列中選取一個進程并將它投入運行,因此只要就緒隊列非空,一個進程的發生轉換只要就緒隊列非空,一個進程的發生轉換C能立即引起另一個進程能立即引起另一個進程的發生轉換的發生轉換A。o(3)因果關系并不是什么時候都能發生,而是在一定條件下才可)因果關系并不是什么時候都能發生,而是

5、在一定條件下才可能發生。能發生。B-A:當某進程發生轉換:當某進程發生轉換B時,就必然引起另一進程的轉換時,就必然引起另一進程的轉換A。因為。因為當發生轉換當發生轉換B時,正在執行的進程從執行狀態變為就緒狀態,進程時,正在執行的進程從執行狀態變為就緒狀態,進程調度程序必然會從就緒隊列中選取一個進程投入運行,即發生轉調度程序必然會從就緒隊列中選取一個進程投入運行,即發生轉換換A。:C-B:某個進程的轉換某個進程的轉換C決不可能引起另一進程發生轉換決不可能引起另一進程發生轉換B。這是因為當前執行進程從執行狀態變為阻塞狀態,不這是因為當前執行進程從執行狀態變為阻塞狀態,不可能又從執行狀態變為就緒狀態

6、。可能又從執行狀態變為就緒狀態。:D-A: 當處理機空閑且就緒隊列為空時,某一進程發生轉換當處理機空閑且就緒隊列為空時,某一進程發生轉換D就會引起該進程的轉換就會引起該進程的轉換A。因為此時處理機空閑,一。因為此時處理機空閑,一旦某個進程發生轉換旦某個進程發生轉換D,就意味著有一個進程從阻塞,就意味著有一個進程從阻塞狀態變為就緒狀態,因而調度程序就會將就緒隊列中狀態變為就緒狀態,因而調度程序就會將就緒隊列中年級進程投入運行。年級進程投入運行。 進程互斥舉例(進程互斥舉例(1 1) 例2,上述的“飛機訂票系統”。一個飛機訂票系統可以有多個訂票處的n個訂票終端。現假設n=2,公共數據區為Hi(i=

7、1,2,,m),分別存放各次班機的現存票數, Pi(i=1,2,n)表示售票終端的進程。進程互斥舉例(進程互斥舉例(2 2) semaphore S;oS = 1; / 公用信號量ocobegin oo process Pi (i=1,2,n)o o int temp;o 按照定票要求找到單元Hi;o P(S);o temp = Hi ; if temp 1 temp =temp -1; Hi = temp; V(S); 輸出一張票 else V(S); 輸出提示“票已售完”;coned經典進程同步問題經典進程同步問題o 1、生產者消費者問題o 問題描述:一群生產者向一個有界緩沖區放入產品,只

8、要緩沖問題描述:一群生產者向一個有界緩沖區放入產品,只要緩沖區未滿就可以存放,又有一群消費者從有界緩沖區取走產品,只區未滿就可以存放,又有一群消費者從有界緩沖區取走產品,只要緩沖區未空就可以取走。要緩沖區未空就可以取走。o 要求:存存、取取、存取都不能同時進行,緩沖區滿時停存,緩要求:存存、取取、存取都不能同時進行,緩沖區滿時停存,緩沖區空時停取,生產與消費等放。沖區空時停取,生產與消費等放。解決方法解決方法設三個信號量1、信號量S,初值為1,表示沒有產品進入臨界區,用于互斥;2、信號量Sn,表示可用緩沖區個數,初值為n3、信號量S0,表示產品個數,初值為0生產者:生產者:消費者:消費者:生產

9、一個產品生產一個產品P(Sn)P(Sn)P(S)P(S)產品放入緩沖區產品放入緩沖區V(S0)V(S0)V(S)V(S)消費一個產品消費一個產品P(S0)P(S0)P(S)P(S)產品取出緩沖區產品取出緩沖區V(Sn)V(Sn)V(S)V(S)2 2、讀者、讀者寫者問題寫者問題問題描述:問題描述:(1) 一個數據對象被多個讀者、寫者進程共享;(2) 允許多個讀者進程可以共享這個數據對象,因為讀操作不會使數據文件混亂;(3) 寫者與寫者、寫者與讀者必須互斥使用數據對象;解決方法:解決方法:(1) 設ReadCount是整型變量,初值為0,最大值是RN,表示讀者個數;(2) 設信號量r,初值為1,表示讀者互斥使用ReadCount;(3) 設信號量w,初值為1,寫者與寫者互斥,寫者與第一讀者互斥讀者:讀者:P(r)Re

溫馨提示

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

評論

0/150

提交評論