計算機操作系統(2)第2章進程管理_第1頁
計算機操作系統(2)第2章進程管理_第2頁
計算機操作系統(2)第2章進程管理_第3頁
計算機操作系統(2)第2章進程管理_第4頁
計算機操作系統(2)第2章進程管理_第5頁
已閱讀5頁,還剩243頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第二章進第二章進 程程 管管 理理n重點重點n理解理解進程進程的含義的含義n理解和掌握同步的概念及經典理解和掌握同步的概念及經典進程同步進程同步問題問題 ,是本課程的重點之一是本課程的重點之一n難點難點n會寫會寫進程同步進程同步問題的算法問題的算法n知識點知識點n進程、線程、進程的特征、進程、線程、進程的特征、PCB、進程控制、進程控制、進程狀態轉換、進程狀態轉換、 進程同步、進程通信進程同步、進程通信第二章進 程 管 理 2.1進程的基本概念進程的基本概念 2.2進程控制進程控制 2.3進程同步進程同步 2.4經典進程的同步問題經典進程的同步問題 2.5 進程通信進程通信 2.6線程線程 2

2、.1進程的基本概念進程的基本概念n程序的順序執行及其特征程序的順序執行及其特征n程序的順序執行程序的順序執行n通常可以把一個應用程序分成若干個程序段,在各程序段之間,必須按照某種先后次序順序執行,僅當前一操作(程序段)執行完后,才能執行后繼操作。n例如,在進行計算時,總須先輸入用戶的程序和數據,然后進行計算,最后才能打印計算結果。順序執行實例順序執行實例S1: a:=x+y;S2: b:=a-5;S3: c:=b+1;n其中,語句S2必須在語句S1之后(即a被賦值)才能執行;同樣,語句S3也只能在b被賦值后才能執行。程序的順序執行及其特征程序的順序執行及其特征nIiCiPi和和S1S2S3程序

3、的順序執行程序的順序執行 (a) 程序的順序執行程序的順序執行I1C1P1I2C2P2(b) 三條語句的順序執行三條語句的順序執行S1S2S3程序的順序執行及其特征程序的順序執行及其特征n順序性順序性:按照程序結構所指定的次序(可:按照程序結構所指定的次序(可能有分支或循環)能有分支或循環)n封閉性封閉性:獨占全部資源,計算機的狀態只:獨占全部資源,計算機的狀態只由于該程序的控制邏輯所決定由于該程序的控制邏輯所決定n可再現性可再現性:初始條件相同則結果相同。如:初始條件相同則結果相同。如:可通過空指令控制時間關系可通過空指令控制時間關系前趨圖前趨圖n前趨圖前趨圖(Precedence Grap

4、h)是一個是一個有向無循環有向無循環圖,記為圖,記為DAG(Directed Acyclic Graph),用于描述進程之間執行的,用于描述進程之間執行的前后關系。圖中的每個結點可用于描述一個程序段或進程,前后關系。圖中的每個結點可用于描述一個程序段或進程,乃至一條語句;結點間的有向邊則用于表示兩個結點之間乃至一條語句;結點間的有向邊則用于表示兩個結點之間存在的偏序存在的偏序(Partial Order)或前趨關系或前趨關系(Precedence Relation)“”n =(Pi, Pj)|Pj 開始前開始前 Pi 必須完成必須完成, 如果如果(Pi, Pj),可可寫成寫成PiPj,稱,稱P

5、i是是Pj的的直接前趨直接前趨,而稱,而稱Pj是是Pi的的直接后直接后繼繼。在前趨圖中,把沒有前趨的結點稱為。在前趨圖中,把沒有前趨的結點稱為初始結點初始結點(Initial Node),把沒有后繼的結點稱為,把沒有后繼的結點稱為終止結點終止結點(Final Node)前趨圖實例前趨圖實例n每個結點還具有一個重量每個結點還具有一個重量(Weight, 權值權值),用于表用于表示該結點所含有的程序量或結點的執行時間。示該結點所含有的程序量或結點的執行時間。P1P3P8P9P4P2P5P6P7(a) 具有九個結點的前趨圖具有九個結點的前趨圖(b) 具有循環的前趨圖具有循環的前趨圖S1S2S3前趨圖

6、實例前趨圖實例nP1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6P8,P7P9,P8P9n或表示為:nP=P1,P2,P3,P4,P5,P6,P7,P8,P9n=(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),(P7,P9),(P8,P9) 注意注意:前趨圖中必須不存在循環前趨圖中必須不存在循環,但右圖中卻有著下述的前趨關系: S2S3,S3S2S1S2S3程序的并發執行及其特征程序的并發執行及其特征n程序的并發執行程序的并發執行前趨:前趨: IiCi,CiPi,

7、 IiIi+1, CiCi+1,PiPi+1而而Ii+1和和Ci及及Pi-1是重迭的,亦即在是重迭的,亦即在Pi-1和和Ci以及以及Ii+1之間,可以之間,可以并發執行。并發執行。程序的并發執行及其特征程序的并發執行及其特征n對于具有下述四條語句的程序段對于具有下述四條語句的程序段nS1: a =x+2nS2: b =y+4nS3: c =a+bnS4: d =c+b 程序并發執行時的特征程序并發執行時的特征n間斷間斷(異步異步)性性n走走停停走走停停,一個程序可能走到中途停下來,失去原,一個程序可能走到中途停下來,失去原有的時序關系;有的時序關系;n失去封閉性失去封閉性n共享資源,受其他程序

8、的控制邏輯的影響。如:一個共享資源,受其他程序的控制邏輯的影響。如:一個程序寫到存儲器中的數據可能被另一個程序修改,失程序寫到存儲器中的數據可能被另一個程序修改,失去原有的不變特征。去原有的不變特征。n失去可再現性失去可再現性n失去封閉性失去封閉性 失去可再現性;外界環境在程序的兩失去可再現性;外界環境在程序的兩次執行期間發生變化,失去原有的可重復特征次執行期間發生變化,失去原有的可重復特征并發執行實例并發執行實例程序AN:=N+1 程序BPrint(N)N:=0Nn例,程序例,程序A和和B,共享變量,共享變量N,它們的,它們的功能如下:功能如下:N =N+1;Print(N); N =0 ;

9、Print(N); N =0 ;N =N+1;Print(N); N =N+1;N =0;注意:注意:A、B程序得到的共享變程序得到的共享變量結果不同,失去封閉性、不可量結果不同,失去封閉性、不可再現性;要得到良好的控制,系再現性;要得到良好的控制,系統必須要進行管理統必須要進行管理進程控制進程控制管理管理并發執行實例并發執行實例程序并發執行時的特征程序并發執行時的特征n并發執行并發執行失去封閉性的原因失去封閉性的原因是共享資源的影響,是共享資源的影響,去掉這種影響就行了。去掉這種影響就行了。1966年,由年,由Bernstein給出給出并發執行的條件并發執行的條件。(這里沒有考慮執行速度的影

10、。(這里沒有考慮執行速度的影響。)響。)n程序程序 P(i) 針對針對共享變量共享變量的讀集和寫集的讀集和寫集 R(i)和和W(i)n條件:任意兩個程序條件:任意兩個程序P(i)和和P(j),有:,有:nR(i) W(j)= ;nW(i) R(j)= ;nW(i) W(j)= ;n前兩條保證一個程序的兩次讀之間數據不變化;前兩條保證一個程序的兩次讀之間數據不變化;最后一條保證寫的結果不丟掉。最后一條保證寫的結果不丟掉。程序并發執行的條件n若兩個程序P1和P2滿足下述條件,便能并發執行且有可再現性:nR(P1)W(P2)R(P2)W(P1)W(P1)W(P2) = 為程序 Pi 在執行期間所需參

11、考參考的所有變量的集合。為程序 Pi 在執行期間所需改變改變的所有變量的集合。n例如:S1: a := x + yn S2: b := z + 1n S3: c := a - bn S4: d := c + 1S1: a := x + y R(S1)=W(S1)=S2: b := z + 1 R(S2)=W(S2)=S3: c := a - bR(S3)=W(S3)=S4: d := c + 1 R(S4)=W(S4)=語句S1、S2_并發,因為_。語句S1、S3_并發,因為_。語句S2、S3_并發,因為_。語句S3、S4_并發,因為_。語句S2、S4_并發,因為_。x, yazba, bcc

12、d可以R(P1)W(P2)R(P2)W(P1)W(P1)W(P2) = 不能R(S3)W(S1)=a 不能不能可以R(S3)W(S2)=b R(S4)W(S3)=c 程序并發執行的條件程序并發執行的條件2.1.4進程的特征與狀態進程的特征與狀態n何謂進程(何謂進程(Process)n描述性定義:計算機中的所有程序(軟件),描述性定義:計算機中的所有程序(軟件),按照某種順序運行,這種運行的過程稱之為進按照某種順序運行,這種運行的過程稱之為進程。程。n如何理解進程概念?如何理解進程概念?n進程與程序有何差別?進程與程序有何差別?2.1.4進程的特征與狀態進程的特征與狀態閱讀菜譜閱讀菜譜準備原料準

13、備原料烹制菜肴烹制菜肴飯菜飯菜閱讀洗衣機手冊閱讀洗衣機手冊準備衣服、洗衣粉準備衣服、洗衣粉設定參數,洗衣服設定參數,洗衣服干凈衣服干凈衣服程序程序輸入輸入運行運行輸出輸出程序程序輸入輸入運行運行輸出輸出分時切換分時切換2.1.4進程的特征與狀態進程的特征與狀態n進程的核心思想進程的核心思想n進程是某種類型的一個活動,它有程序、輸入、進程是某種類型的一個活動,它有程序、輸入、輸出和狀態。輸出和狀態。n在分時操作系統中,單個在分時操作系統中,單個CPU被若干進程共享,被若干進程共享,它使用某種調度算法決定何時停止一個進程的它使用某種調度算法決定何時停止一個進程的運行,轉而為其他進程提供服務。運行,

14、轉而為其他進程提供服務。2.1.4進程的特征與狀態進程的特征與狀態n進程的特征和定義進程的特征和定義n結構特征結構特征n采用機制:進程控制塊,采用機制:進程控制塊,PCB(Process Control Block)。n進程實體:程序段、相關的數據段和進程實體:程序段、相關的數據段和PCB。n注:注:n在早期的在早期的UNIX中,把這三部分總稱為中,把這三部分總稱為“進程映進程映像像”。n在許多情況下所說的進程,實際上是指進程實在許多情況下所說的進程,實際上是指進程實體。體。2.1.4進程的特征與狀態進程的特征與狀態n進程的特征和定義進程的特征和定義n動態性動態性n進程的實質:進程實體的一次執

15、行過程,因此,動進程的實質:進程實體的一次執行過程,因此,動態性是進程的最基本的特征。態性是進程的最基本的特征。n它由創建而產生,由調度而執行,由撤消而消亡。它由創建而產生,由調度而執行,由撤消而消亡。n進程實體有一定的生命期,而程序則只是一組有序進程實體有一定的生命期,而程序則只是一組有序指令的集合,并存放于某種介質上,其本身并不具指令的集合,并存放于某種介質上,其本身并不具有運動的含義,因而是靜態的。有運動的含義,因而是靜態的。2.1.4進程的特征與狀態進程的特征與狀態n進程的特征和定義進程的特征和定義n并發性并發性n指多個進程實體同存于內存中,且能在一段時間內指多個進程實體同存于內存中,

16、且能在一段時間內同時運行。并發性是進程的重要特征,同時也成為同時運行。并發性是進程的重要特征,同時也成為OS的重要特征。引入進程的目的也正是為了使其進的重要特征。引入進程的目的也正是為了使其進程實體能和其它進程實體并發執行;而程序程實體能和其它進程實體并發執行;而程序(沒有建沒有建立立PCB)是不能并發執行的。是不能并發執行的。n獨立性獨立性n在傳統的在傳統的OS中,獨立性是指進程實體是一個能獨立中,獨立性是指進程實體是一個能獨立運行、獨立分配資源和獨立接受調度的基本單位。運行、獨立分配資源和獨立接受調度的基本單位。凡未建立凡未建立PCB的程序都不能作為一個獨立的單位參的程序都不能作為一個獨立

17、的單位參與運行。與運行。 2.1.4進程的特征與狀態進程的特征與狀態n進程的特征和定義進程的特征和定義n異步性異步性n指進程按各自獨立的、指進程按各自獨立的、 不可預知的速度向前推進,不可預知的速度向前推進,或說進程實體按異步方式運行。或說進程實體按異步方式運行。進程概念進程概念n較典型的進程定義有:較典型的進程定義有:n進程是程序的一次執行進程是程序的一次執行n進程是一個程序及其數據在處理機上順序執行時所發進程是一個程序及其數據在處理機上順序執行時所發生的活動生的活動n進程是程序在一個數據集合上運行的過程,它是系統進程是程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位

18、進行資源分配和調度的一個獨立單位n在引入了進程實體的概念后,我們可以把傳統在引入了進程實體的概念后,我們可以把傳統OS中的進程定義為:中的進程定義為:“進程是進程實體的運行過程,進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位是系統進行資源分配和調度的一個獨立單位”進程與程序的區別進程與程序的區別n進程是動態的,程序是靜態的進程是動態的,程序是靜態的:程序是有序代:程序是有序代碼的集合;進程是程序的執行。通常進程不可碼的集合;進程是程序的執行。通常進程不可在計算機之間遷移;而程序通常對應著文件、在計算機之間遷移;而程序通常對應著文件、靜態和可以復制靜態和可以復制n進程是暫時的,

19、程序是永久的進程是暫時的,程序是永久的:進程是一個狀:進程是一個狀態變化的過程,程序可長久保存態變化的過程,程序可長久保存n進程與程序的組成不同進程與程序的組成不同:進程的組成包括程序、:進程的組成包括程序、數據和進程控制塊(即進程狀態信息)數據和進程控制塊(即進程狀態信息)n進程與程序的對應關系進程與程序的對應關系:通過多次執行,一個:通過多次執行,一個程序可對應多個進程;通過調用關系,一個進程序可對應多個進程;通過調用關系,一個進程可包括多個程序程可包括多個程序進程的三種基本狀態進程的三種基本狀態n就緒就緒(Ready)狀態狀態 n可運行,已獲得除CPU外的所需資源,等待分配CPUn一個系

20、統中多個處于就緒狀態的進程排成就緒隊列n執行執行(Running)狀態狀態 n占用CPU運行;處于此狀態的進程的數目=CPU的數目n沒有其它進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的idle進程(相當于空操作)n阻塞阻塞(Blocked)狀態狀態 n等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行。該事件發生前即使把處理機分配給該進程,也無法運行n通常阻塞進程也排成一個阻塞隊列進程的三種基本狀態及轉換進程的三種基本狀態及轉換掛起狀態掛起狀態n掛起掛起/激活激活n掛起掛起(進程進程):暫時被淘汰出內存的進程。在資暫時被淘汰出內存的進程。在資源不足的情況下,源

21、不足的情況下,OS對在內存中的程序進行合對在內存中的程序進行合理的安排,其中有的進程被暫時調離出內存。理的安排,其中有的進程被暫時調離出內存。n激活:激活:當條件允許的時候,會被操作系統再次當條件允許的時候,會被操作系統再次調回內存。調回內存。掛起狀態掛起狀態n目的目的n提高處理機效率提高處理機效率:就緒進程表為空時,要提交:就緒進程表為空時,要提交新進程,以提高處理機效率;新進程,以提高處理機效率;n為運行進程提供足夠內存為運行進程提供足夠內存:資源緊張時,暫停:資源緊張時,暫停某些進程,如:某些進程,如:CPU繁忙(或實時任務執行),繁忙(或實時任務執行),內存緊張內存緊張n用于調試用于調

22、試:在調試時,掛起被調試進程(從而:在調試時,掛起被調試進程(從而對其地址空間進行讀寫)對其地址空間進行讀寫)掛起狀態掛起狀態n引入掛起狀態的原因引入掛起狀態的原因n終端用戶的請求終端用戶的請求 n當終端用戶在自己的程序運行期間發現有可疑問題當終端用戶在自己的程序運行期間發現有可疑問題時,希望暫時將自己的程序靜止下來時,希望暫時將自己的程序靜止下來n父進程請求父進程請求 n父進程需要考查和修改子進程父進程需要考查和修改子進程n負荷調節的需要負荷調節的需要 n在實時系統中為了調整工作負荷可將不重要的進程在實時系統中為了調整工作負荷可將不重要的進程掛起掛起n操作系統的需要操作系統的需要n如檢查運行

23、中的資源使用情況如檢查運行中的資源使用情況掛起狀態掛起狀態掛起狀態掛起狀態n轉換轉換n事件出現事件出現(Event Occurs) :進程等待的事件出:進程等待的事件出現,如:操作完成、申請成功等;現,如:操作完成、申請成功等;n可能的情況有:可能的情況有:n阻塞到就緒:針對內存進程的事件出現;阻塞到就緒:針對內存進程的事件出現;n阻塞掛起到就緒掛起:針對外存進程的事件出現;阻塞掛起到就緒掛起:針對外存進程的事件出現;n收容收容(Admit):收容一個新進程,進入就緒狀:收容一個新進程,進入就緒狀態或就緒掛起狀態。進入就緒掛起的原因是系態或就緒掛起狀態。進入就緒掛起的原因是系統希望保持一個大的

24、就緒進程表(掛起和非掛統希望保持一個大的就緒進程表(掛起和非掛起);起);具有掛起狀態的進程狀態具有掛起狀態的進程狀態創建狀態和終止狀態創建狀態和終止狀態n創建狀態創建狀態n為一個新進程創建PCB,并填寫必要的管理信息;n把該進程轉入就緒狀態并插入就緒隊列之中。n終止狀態終止狀態n等待操作系統進行善后處理;n將其PCB清零,并將PCB空間返還系統。進程的五種基本狀態及轉換進程的五種基本狀態及轉換 具有創建、終止和掛起狀態的進程狀態具有創建、終止和掛起狀態的進程狀態 需要增加考慮的種情況需要增加考慮的種情況n(1) NULL創建創建:一個新進程產生時,該進程處:一個新進程產生時,該進程處于創建狀

25、態。于創建狀態。n(2) 創建創建活動就緒活動就緒:在當前系統的性能和內存的:在當前系統的性能和內存的容量均允許的情況下,完成對進程創建的必要操容量均允許的情況下,完成對進程創建的必要操作后,相應的系統進程將進程的狀態轉換為活動作后,相應的系統進程將進程的狀態轉換為活動就緒狀態。就緒狀態。 需要增加考慮的種情況需要增加考慮的種情況n(3) 創建創建靜止就緒靜止就緒:考慮到系統當前資源狀況和:考慮到系統當前資源狀況和性能要求,并不分配給新建進程所需資源,主要性能要求,并不分配給新建進程所需資源,主要是主存資源,相應的系統進程將進程狀態轉為靜是主存資源,相應的系統進程將進程狀態轉為靜止就緒狀態,對

26、換到外存,不再參與調度,此時止就緒狀態,對換到外存,不再參與調度,此時進程創建工作尚未完成。進程創建工作尚未完成。n(4) 執行執行終止終止:當一個進程到達了自然結束點,:當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結,進程終結,或是被其他有終止權的進程所終結,進程即進終止狀態。即進終止狀態。 2.1.5進程控制塊進程控制塊n進程控制塊的作用進程控制塊的作用n使一個在多道程序環境下不能獨立運行的程序使一個在多道程序環境下不能獨立運行的程序(含數據含數據),成為一個能獨立運行的基本單位,成為一個

27、能獨立運行的基本單位,一個能與其它進程并發執行的進程。一個能與其它進程并發執行的進程。n或者說,或者說,OS是根據是根據PCB來對并發執行的進程進來對并發執行的進程進行控制和管理的。行控制和管理的。進程控制塊進程控制塊n進程控制塊中的信息進程控制塊中的信息n進程標識符:用于惟一地標識一個進程。一個進程標識符:用于惟一地標識一個進程。一個進程通常有兩種標識符:進程通常有兩種標識符:n內部標識符內部標識符 在所有的操作系統中,都為每一個進程在所有的操作系統中,都為每一個進程賦予一個惟一的數字標識符,它通常是一個進程的賦予一個惟一的數字標識符,它通常是一個進程的序號。設置內部標識符主要是為了方便系統

28、使用序號。設置內部標識符主要是為了方便系統使用n外部標識符外部標識符 它由創建者提供,通常是由字母、數字它由創建者提供,通常是由字母、數字組成,往往是由用戶組成,往往是由用戶(進程進程)在訪問該進程時使用。在訪問該進程時使用。為了描述進程的家族關系,為了描述進程的家族關系, 還應設置父進程標識及還應設置父進程標識及子進程標識。此外,還可設置用戶標識,以指示擁子進程標識。此外,還可設置用戶標識,以指示擁有該進程的用戶。有該進程的用戶。進程控制塊進程控制塊n進程控制塊中的信息進程控制塊中的信息n2) 處理機狀態,主要是由處理機的各種寄存器中的內處理機狀態,主要是由處理機的各種寄存器中的內容組成的。

29、這些寄存器包括:容組成的。這些寄存器包括:n通用寄存器通用寄存器,又稱為用戶可視寄存器,它們是用戶程序,又稱為用戶可視寄存器,它們是用戶程序可以訪問的,用于暫存信息,在大多數處理機中,有可以訪問的,用于暫存信息,在大多數處理機中,有 832個通用寄存器,在個通用寄存器,在RISC結構的計算機中可超過結構的計算機中可超過100個;個;n指令計數器指令計數器,存放了要訪問的下一條指令的地址;,存放了要訪問的下一條指令的地址;n程序狀態字程序狀態字PSW,其中含有狀態信息,如條件碼、執行,其中含有狀態信息,如條件碼、執行方式、中斷屏蔽標志等;方式、中斷屏蔽標志等;n用戶棧指針用戶棧指針,指每個用戶進

30、程都有一個或若干個與之相,指每個用戶進程都有一個或若干個與之相關的系統棧,用于存放過程和系統調用參數及調用地址。關的系統棧,用于存放過程和系統調用參數及調用地址。 進程控制塊進程控制塊n進程控制塊中的信息進程控制塊中的信息n3) 進程調度信息,與進程調度和進程對換有關的信息,進程調度信息,與進程調度和進程對換有關的信息,包括:包括:n進程狀態進程狀態,指明進程的當前狀態,作為進程調度和對換時的,指明進程的當前狀態,作為進程調度和對換時的依據;依據;n進程優先級進程優先級,用于描述進程使用處理機的優先級別的一個整,用于描述進程使用處理機的優先級別的一個整數,優先級高的進程應優先獲得處理機;數,優

31、先級高的進程應優先獲得處理機;n進程調度所需的其它信息進程調度所需的其它信息,它們與所采用的進程調度算法有,它們與所采用的進程調度算法有關,比如,進程已等待關,比如,進程已等待CPU的時間總和、進程已執行的時間的時間總和、進程已執行的時間總和等;總和等;n事件事件,指進程由執行狀態轉變為阻塞狀態所等待發生的事件,指進程由執行狀態轉變為阻塞狀態所等待發生的事件,即阻塞原因。即阻塞原因。進程控制塊進程控制塊n進程控制塊中的信息進程控制塊中的信息n4) 進程控制信息進程控制信息n程序和數據的地址程序和數據的地址,指進程的程序和數據所在的內存或外存,指進程的程序和數據所在的內存或外存地地(首首)址,以

32、便再調度到該進程執行時,能從址,以便再調度到該進程執行時,能從PCB中找到其程中找到其程序和數據;序和數據;n進程同步和通信機制進程同步和通信機制,指實現進程同步和進程通信時必需的,指實現進程同步和進程通信時必需的機制,如消息隊列指針、信號量等,它們可能全部或部分地機制,如消息隊列指針、信號量等,它們可能全部或部分地放在放在PCB中;中;n資源清單資源清單,即一張列出了除,即一張列出了除CPU以外的、進程所需的全部資以外的、進程所需的全部資源及已經分配到該進程的資源的清單;源及已經分配到該進程的資源的清單;n鏈接指針鏈接指針,它給出了本進程,它給出了本進程(PCB)所在隊列中的下一個進程的所在

33、隊列中的下一個進程的PCB的首地址。的首地址。 typedef struct tagPROCESSENTRY32 . DWORD dwSize; 結構本身的大小 DWORD cntUsage; 進程引用計數 DWORD th32ProcessID; 進程ID ULONG_PTR th32DefaultHeapID; 默認堆ID DWORD th32ModuleID; 可執行文件的ID DWORD cntThreads; 本進程開啟線程計數 DWORD th32ParentProcessID; 父進程ID LONG pcPriClassBase; 進程的優先權 DWORD dwFlags; 標志

34、 TCHAR szExeFileMAX_PATH;進程可執行文件全名 PROCESSENTRY32, *PPROCESSENTRY32;實例:實例:Windows系統:系統:PCB快照快照Struct proc char p_stat ; 進程的狀態進程的狀態 char p_flag; 進程標志進程標志 char p_pri; 進程優先數進程優先數 char p_time; 調度駐留時間調度駐留時間 char p_cpu; 用于調度的用于調度的cpu情況情況 char p_nice; 計算進程優先級的偏移量計算進程優先級的偏移量 ushort r p_uid; 實際用戶標識號實際用戶標識號 u

35、short p_suid; 設置用戶標識號設置用戶標識號 short p_pgrp; 進程組的首進程名進程組的首進程名 short p_pid; 進程唯一標識號進程唯一標識號 short p_ppid; 父進程標識號父進程標識號實例:實例:UNIX:proc short p_addr; User結構的起始結構的起始 int *p_nspt; 轉換進程頁表使用的系統頁表項數轉換進程頁表使用的系統頁表項數 short p_size; 可交換映像的長度可交換映像的長度 short p_swaddr; 交換時的磁盤地主交換時的磁盤地主 short p_swsize; 已被換出的塊數已被換出的塊數 sh

36、ort p_tsize; 正文段長度正文段長度 short p_sszie; 棧段長度棧段長度 long p_sig; 發現該進程的信號發現該進程的信號 union caddr_t p_cad; 睡眠原因睡眠原因 int p_int; 傳遞給換出進程的參數傳遞給換出進程的參數 實例:實例:UNIX:proc #define p_wchan p_unw p_cad #define p_arg p_unw p_int struct text *p_textp; 共享正文段控制塊指針共享正文段控制塊指針 struct proc *plink; 進程鏈接指針進程鏈接指針 int p_clktim; 發

37、報警時鐘信號的時間發報警時鐘信號的時間 int p_smbeg; 共享內存段的開始頁表共享內存段的開始頁表 int p_smend; 共享內存段的結束頁表共享內存段的結束頁表; 實例:實例:UNIX:proc struct pcb int pcb_ksp; 核心棧指針核心棧指針 pcb_esp; 執行棧指針執行棧指針 pcb_ssp; 管理棧指針管理棧指針 pcb_usp; 用戶棧指針用戶棧指針 pcb_r0; 寄存器寄存器r0 pcb_r1; 寄存器寄存器r1 pcb_r2; pcb_r3; pcb_r4; pcb_r5; pcb_r6; 實例:實例:UNIX:PCB pcb_r7; 寄存器

38、寄存器r7 pcb_r8; 寄存器寄存器r8 pcb_r9; pcb_r10; pcb_r11; pcb_r12; 寄存器寄存器r12或或AP pcb_r13; 寄存器寄存器r13或或FP pcb_pc; 程序計數器程序計數器 pcb_psl; 處理機狀態長字處理機狀態長字 pcb_p0br; p0基地址寄存器基地址寄存器 pcb_p0lr; p0長度寄存器和異步系統自陷級長度寄存器和異步系統自陷級 pcb_p1br; p1基地址寄存器基地址寄存器 pcb_p1lr; p1長度寄存器和性能監督器賦能長度寄存器和性能監督器賦能;實例:實例:UNIX:PCB進程控制塊的組織方式進程控制塊的組織方式

39、n鏈接方式鏈接方式n把具有同一狀態的把具有同一狀態的PCB,用其中的鏈接字鏈接,用其中的鏈接字鏈接成一個隊列。這樣,可以形成就緒隊列、若干成一個隊列。這樣,可以形成就緒隊列、若干個阻塞隊列和空白隊列等。個阻塞隊列和空白隊列等。n對其中的就緒隊列常按進程優先級的高低排列,對其中的就緒隊列常按進程優先級的高低排列,把優先級高的進程的把優先級高的進程的PCB排在隊列前面。排在隊列前面。n此外,也可根據阻塞原因的不同而把處于阻塞此外,也可根據阻塞原因的不同而把處于阻塞狀態的進程的狀態的進程的PCB排成等待排成等待I/O操作完成的隊操作完成的隊列和等待分配內存的隊列等。列和等待分配內存的隊列等。PCB鏈

40、接隊列鏈接隊列進程控制塊的組織方式進程控制塊的組織方式n索引方式索引方式n系統根據所有進程的狀態建立幾張索引表。例系統根據所有進程的狀態建立幾張索引表。例如,就緒索引表、阻塞索引表等,并把各索引如,就緒索引表、阻塞索引表等,并把各索引表在內存的首地址記錄在內存的一些專用單元表在內存的首地址記錄在內存的一些專用單元中。在每個索引表的表目中,記錄具有相應狀中。在每個索引表的表目中,記錄具有相應狀態的某個態的某個PCB在在PCB表中的地址。表中的地址。索引方式組織索引方式組織PCB 2.1.6進程的上下文(進程的上下文(context)n進程上下文的本質進程上下文的本質n進程執行活動全過程的靜態描述

41、。進程執行活動全過程的靜態描述。n上文:已執行過的進程指令和數據在相關寄存上文:已執行過的進程指令和數據在相關寄存器與堆棧中的內容。器與堆棧中的內容。n正文:正在執行的指令和數據在寄存器和堆棧正文:正在執行的指令和數據在寄存器和堆棧中的內容。中的內容。n下文:待執行的指令和數據在寄存器與堆棧中下文:待執行的指令和數據在寄存器與堆棧中的內容。的內容。進程的上下文進程的上下文n進程上下文的具體內容進程上下文的具體內容n包括計算機系統中與執行該進程有關的各種寄包括計算機系統中與執行該進程有關的各種寄存器(例如通用寄存器,程序計數器存器(例如通用寄存器,程序計數器PC,程序,程序狀態字寄存器狀態字寄存

42、器PS等)的值;等)的值;n程序段經過編譯過后形成的機器指令代碼集;程序段經過編譯過后形成的機器指令代碼集;n數據集;數據集;n各種堆棧值各種堆棧值nPCB結構。結構。進程的上下文進程的上下文n進程上下文的組織方式進程上下文的組織方式n可以按照層次規則組合起來的。可以按照層次規則組合起來的。n例如例如unix v,進程上下文由用戶級上下文,寄存器上下,進程上下文由用戶級上下文,寄存器上下文以及系統級上下文組成。文以及系統級上下文組成。n用戶級上下文由進程的用戶程序段部分編譯而成的用用戶級上下文由進程的用戶程序段部分編譯而成的用戶正文段,用戶數據,用戶棧組成。戶正文段,用戶數據,用戶棧組成。n寄

43、存器上下文則有程序寄存器寄存器上下文則有程序寄存器PC,處理機狀態寄存器,處理機狀態寄存器PS,棧指針和通用寄存器的值組成,其中,棧指針和通用寄存器的值組成,其中PC給出了給出了CPU將要執行的下一條指令的虛地址;將要執行的下一條指令的虛地址;PS給出了機器給出了機器與該進程相關聯的硬件狀態;棧指針與該進程相關聯的硬件狀態;棧指針SP指向下一項的指向下一項的當前地址,而通用寄存器則用于不同執行模式間的參當前地址,而通用寄存器則用于不同執行模式間的參數傳遞。數傳遞。進程的上下文進程的上下文n進程上下文的組織方式進程上下文的組織方式n進程的系統級上下文分為靜態和動態部分。進程的系統級上下文分為靜態

44、和動態部分。n動態指進程在進入和退出不同的上下文層次時,動態指進程在進入和退出不同的上下文層次時,系統為各層上下文中相關聯的寄存器所保存和系統為各層上下文中相關聯的寄存器所保存和恢復的記錄。恢復的記錄。n靜態部分為靜態部分為PCB結構,將進程虛地址空間映射結構,將進程虛地址空間映射到物理空間以得到核心棧。主要是用來裝載進到物理空間以得到核心棧。主要是用來裝載進程中所使用系統調用的調用序列。程中所使用系統調用的調用序列。 n系統級上下文的動態部分是與寄存器上下文相系統級上下文的動態部分是與寄存器上下文相關聯的。關聯的。進程的上下文進程的上下文n進程上下文的進程上下文的切換情況切換情況n當進程使自

45、己進入阻塞狀態;當進程使自己進入阻塞狀態;n從系統調用返回用戶態而不是最有資格運行;從系統調用返回用戶態而不是最有資格運行;n核心完成中斷處理返回用戶態但不是最有資格核心完成中斷處理返回用戶態但不是最有資格運行;運行;n已已exit退出時。退出時。2.2進程控制進程控制 n職責是對系統中全部進程實施有效管理,包括職責是對系統中全部進程實施有效管理,包括n創建新進程創建新進程n終止已結束進程終止已結束進程n終止由于某事件而無法運行下去的進程終止由于某事件而無法運行下去的進程n負責進程的狀態轉換負責進程的狀態轉換n這些功能一般由操作系統的內核實現,操作系統這些功能一般由操作系統的內核實現,操作系統

46、的內核是基于硬件的第一次擴充。把與硬件緊密的內核是基于硬件的第一次擴充。把與硬件緊密相關的模塊、運行頻率較高的模塊及一些公用的相關的模塊、運行頻率較高的模塊及一些公用的基本操作安排在靠近硬件的軟件層次中,并常駐基本操作安排在靠近硬件的軟件層次中,并常駐內存,以提高系統運行效率。內存,以提高系統運行效率。 操作系統內核操作系統內核nOS內核是計算機硬件的第一層軟件擴充,常駐內內核是計算機硬件的第一層軟件擴充,常駐內存。存。n例:中斷處理程序、設備驅動程序以及時鐘管理、例:中斷處理程序、設備驅動程序以及時鐘管理、進程調度等。進程調度等。n支撐功能支撐功能n中斷處理:最基本的功能,是中斷處理:最基本

47、的功能,是OS的基礎。的基礎。n時鐘管理:為基本功能,如分時系統的時間片,實時時鐘管理:為基本功能,如分時系統的時間片,實時系統的時間控制。系統的時間控制。n原語操作:是原子操作(是不可分割的操作),用來原語操作:是原子操作(是不可分割的操作),用來執行基本操作。創建、撤銷、阻塞、喚醒、掛起、激執行基本操作。創建、撤銷、阻塞、喚醒、掛起、激活。活。操作系統內核操作系統內核n資源管理功能資源管理功能n進程管理:放在內核。例:調度、分派、創建、進程管理:放在內核。例:調度、分派、創建、撤銷、同步、通信。運行頻率高。撤銷、同步、通信。運行頻率高。n存儲器管理:內存分配、回收、保護、對換等存儲器管理:

48、內存分配、回收、保護、對換等放在內核,保證運行速度高。放在內核,保證運行速度高。n設備管理:驅動程序、緩沖管理、設備分配等。設備管理:驅動程序、緩沖管理、設備分配等。進程控制進程控制n原語原語(primitive)n由若干條指令構成的由若干條指令構成的“原子操作原子操作(atomic operation)”過過程,作為一個整體而不可分割要么全都做,要么全程,作為一個整體而不可分割要么全都做,要么全不做不做n系統調用并不都是原語系統調用并不都是原語 進程進程A調用調用read(),因無數據而,因無數據而阻塞,在阻塞,在read()里未返回。然后進程里未返回。然后進程B調用調用read(),此時,

49、此時read()被重入。系統調用不一定一次執行完并返回該進被重入。系統調用不一定一次執行完并返回該進程,有可能在特定的點暫停,而轉入到其他進程程,有可能在特定的點暫停,而轉入到其他進程n處理機的執行狀態處理機的執行狀態保護系統程序保護系統程序n核心態(管態、系統態)系統管理程序執行時的狀態。核心態(管態、系統態)系統管理程序執行時的狀態。具有較高的特權,能執行一切指令,訪問所有的寄存器具有較高的特權,能執行一切指令,訪問所有的寄存器和存儲區和存儲區n用戶態(目態)以后程序執行時的狀態。具有較低的特用戶態(目態)以后程序執行時的狀態。具有較低的特權,只能執行規定指令,訪問指定的寄存器和存儲區權,

50、只能執行規定指令,訪問指定的寄存器和存儲區2.2.1 進程的創建進程的創建n進程圖進程圖(Process Graph)n描述一個進程的家族關系的有向樹。圖中的結點描述一個進程的家族關系的有向樹。圖中的結點(圓圈圓圈)代表進程。在進程代表進程。在進程D創建了進程創建了進程I之后,稱之后,稱D是是I的父進的父進程程(Parent Process),I是是D的子進程的子進程(Progeny Process)實例:實例:Windows xp進程關系進程關系2.2.1 進程的創建進程的創建n引起創建進程的事件引起創建進程的事件n用戶登錄用戶登錄。在分時系統中,用戶在終端鍵入登。在分時系統中,用戶在終端鍵

51、入登錄命令后,如果是合法用戶,系統將為該終端錄命令后,如果是合法用戶,系統將為該終端建立一個進程,并把它插入就緒隊列中。建立一個進程,并把它插入就緒隊列中。n作業調度作業調度。在批處理系統中,當作業調度程序。在批處理系統中,當作業調度程序按一定的算法調度到某作業時,便將該作業裝按一定的算法調度到某作業時,便將該作業裝入內存,為它分配必要的資源,并立即為它創入內存,為它分配必要的資源,并立即為它創建進程,再插入就緒隊列中。建進程,再插入就緒隊列中。 2.2.1 進程的創建進程的創建n引起創建進程的事件引起創建進程的事件n提供服務提供服務。當運行中的用戶進程提出某種請求。當運行中的用戶進程提出某種

52、請求后,系統將專門創建一個進程來提供服務,如后,系統將專門創建一個進程來提供服務,如打印。打印。n應用請求應用請求。由應用程序為自己創建進程,以便。由應用程序為自己創建進程,以便能并發執行,如輸入、計算、輸出程序。能并發執行,如輸入、計算、輸出程序。2.2.1 進程的創建進程的創建n進程的創建進程的創建(Creation of Process)n調用進程創建原語調用進程創建原語Creat( ) 創建一個新進程。創建一個新進程。n申請空白申請空白PCB。為新進程申請獲得惟一的數字標識。為新進程申請獲得惟一的數字標識符,并從符,并從PCB集合中索取一個空白集合中索取一個空白PCB。n為新進程分配資

53、源為新進程分配資源。為新進程的程序和數據以及用。為新進程的程序和數據以及用戶棧分配必要的內存空間。顯然,此時操作系統必戶棧分配必要的內存空間。顯然,此時操作系統必須知道新進程所需內存的大小。須知道新進程所需內存的大小。 2.2.1 進程的創建進程的創建n進程的創建進程的創建(Creation of Process)n初始化進程控制塊初始化進程控制塊。PCB的初始化包括:的初始化包括: 初始化標初始化標識信息,將系統分配的標識符和父進程標識符填入新識信息,將系統分配的標識符和父進程標識符填入新PCB中;中; 初始化處理機狀態信息,使程序計數器指初始化處理機狀態信息,使程序計數器指向程序的入口地址

54、,使棧指針指向棧頂;向程序的入口地址,使棧指針指向棧頂; 初始化處初始化處理機控制信息,將進程的狀態設置為就緒狀態或靜止理機控制信息,將進程的狀態設置為就緒狀態或靜止就緒狀態,對于優先級,通常是將它設置為最低優先就緒狀態,對于優先級,通常是將它設置為最低優先級,除非用戶以顯式方式提出高優先級要求。級,除非用戶以顯式方式提出高優先級要求。n將新進程插入就緒隊列將新進程插入就緒隊列。如果進程就緒隊列能夠接納。如果進程就緒隊列能夠接納新進程,便將新進程插入就緒隊列。新進程,便將新進程插入就緒隊列。 /Father process#include void main(int argc, char *a

55、rgv) int pid; pid = fork(); if (pid 0) fprintf(stderr, “Fork Failed”); exit(-1); else if (pid = 0) execlp(“/bin/ls”, “ls”, NULL); else wait(NULL); printf(“Child Complete”); exit(0); 實例:實例:UNIX創建進程創建進程 /Child process#include void main(int argc, char *argv) int pid; pid = fork(); if (pid p_ppid; u.u_r

56、val2=1; u.u_start=time; /進程創建時的系統時間 u.u_ticks=lbolt; /進程創建時的lbotl時間 u.u_mem=u.u_procp-p_size; /統計進程內存使用情況 u.u_ior=u.u_iow=u.u_ioch=0; /IO塊讀寫次數、傳送字節數 u.u_cstime=0; /進程用戶時間 u.u_stime=0; /進程系統時間實例:實例:UNIX創建進程:創建進程:fork()() u.u_cutime=0; /子進程用戶時間總和 u.u_utime=0; /子進程系統時間總和 u.u_acflag=AFORK; /統計標志 return;

57、 case 0: break; default: u.u_error=EAGAIN; break; out: u.u_rval2=0;實例:實例:UNIX創建進程:創建進程:fork()()newproc(i) register struct proc *rpp,*rip; register n; register a; struct proc *pend; static mpid; rpp=NULL; retry: mpid+; if (mpid=MAXPID) mpid=0;實例:實例:UNIX創建進程:創建進程:fork()() goto retry; rip=&proc0; n

58、=(struct proc *)v.ve_proc-rip; /v.ve_proc最后項地址+1 a=0; do if (rip-p_stat= =NULL) /p_stat進程狀態 if (rpp= = NULL) rpp=rip; continue; 實例:實例:UNIX創建進程:創建進程:fork()() if (rip-p_pid= =mpid) /mpid已被占用 goto retry; if (rip-p_uid= =u.u_ruid) /與當前進程屬于同一個用戶 a+; pend=rip; /最后一個有效進程的地址 while (rip+,-n) if (rpp= =NULL)

59、/proc中間沒有空余表項 if (struct proc *)v.ve_proc=&procv.v_proc) if (i) /v_proc是proc表的最大長度 covf+; /i不等于0是創建1#進程 u.u_error=EAGAIN; return(-1);實例:實例:UNIX創建進程:創建進程:fork()() else panic(“no procs”); rpp=(struct proc *)v.ve_proc; /從后分配一個表項 if (rpppend) pend=rpp; /重新計算pend pend+; v.ve_proc=(char *)pe

60、nd; /重新設置ve_proc if (u.u_uid&u.u_ruid) /如果是普通用戶 if (rpp= =&procv.v_proc-1|av.v_maxup) u.u_error=EAGAIN; /如果是最后項或最大允許數實例:實例:UNIX創建進程:創建進程:fork()() return (-1); rip=u.u_procp; /裝配新進程的proc項 rpp-p_stat=SRUN; /運行或可運行 rpp-p_clktim=0; /發報警時鐘信號的時間 rpp-p_flag=SLOAD; /在內存 rpp-p_uid=rip-p_uid; rpp-p_suid=rip-p_suid; rpp-p_pgrp=rip-p_pgrp

溫馨提示

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

評論

0/150

提交評論