UNIX系統(tǒng)的進程系統(tǒng)分析.ppt_第1頁
UNIX系統(tǒng)的進程系統(tǒng)分析.ppt_第2頁
UNIX系統(tǒng)的進程系統(tǒng)分析.ppt_第3頁
UNIX系統(tǒng)的進程系統(tǒng)分析.ppt_第4頁
UNIX系統(tǒng)的進程系統(tǒng)分析.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2020/7/29,1,UNIX系統(tǒng)的進程系統(tǒng)分析,2020/7/29,2,7.4 進程管理,7.4.1 進程和進程控制塊PCB 7.4.2 進程控制,2020/7/29,3,7.4.1 進程和進程控制塊PCB,1、UNIX系統(tǒng)中進程的概念 在UNIX系統(tǒng)中,進程具有如下特定的含義和特點: (1)一個進程是對一個程序的執(zhí)行。 (2)一個進程的存在意味著系統(tǒng)中存在著一個相應的常駐內存的proc結構,其中包含著該進程的控制信息。 (3)對每一個進程,有一個被稱為user結構的數(shù)據(jù)結構,這個結構中存放該進程的私用控制信息。該結構只有該進程運行時,才會調入內存。 (4)一個進程可以創(chuàng)建或撤消其子進程。

2、 (5)進程是系統(tǒng)進行資源分配的基本單位。,2020/7/29,4,2、進程的結構 UNIX系統(tǒng)中,進程包含三部分內容:進程控制塊、程序段以及數(shù)據(jù)段。下面我們分別對這三部分來進行討論。 (1)進程控制塊PCB 在UNIX系統(tǒng)中,整個系統(tǒng)的活動是以進程為基本單位來組織進行的。為了管理進程的活動,系統(tǒng)為每個進程設立了一個進程控制塊(PCB)來記錄各個進程的狀態(tài)以及與進程相關的數(shù)據(jù)。在UNIX系統(tǒng)中,進程控制塊也是進程是否存在的標志。 因為進程控制塊中包含的信息量很大,所以占用的空間也很大。為了節(jié)省進程控制塊所占的內存空間,UNIX系統(tǒng)把每個進程的進程控制塊分為兩部分:,2020/7/29,5,(a

3、)常駐內存部分,稱proc結構,該結構中包含著進程調度時必須使用的一些主要信息; (b)非常駐內存部分,稱user結構,該結構登記了 進程運行時才要用到的更多的信息,它可以隨用戶的程序和數(shù)據(jù)在內存中換進換出。 UNIX系統(tǒng)將所有進程的proc結構組織到一起,形成一個進程表,也稱為proc數(shù)組,表中的每一個proc結構是該數(shù)組的一個元素,成為該進程表的一個表目。進程表中的proc結構數(shù)量是有限制的,在UNIX系統(tǒng)中最多允許有50個。,2020/7/29,6, UNIX系統(tǒng)的proc結構主要包括以下各項: (a)進程標識符(PID)。它是標識一個進程的標識數(shù); (b)用戶標識符(UID)。標識擁有

4、該進程的用戶; (c)進程狀態(tài)。記錄該進程的當前狀態(tài); (d)事件描述符。記錄使進程進入睡眠狀態(tài)的事件; (e)存儲區(qū)位置和長度。指出進程在內存或在外存中的位置及大小。這些信息在進程換進換出以及狀態(tài)轉換時用到; (f)軟中斷信號。記錄其他進程發(fā)來的軟中斷信號; (g)計時域。給出進程的執(zhí)行時間和對資源的利用情況; (h)進程的大小。進程的大小是內核為進程分配存儲空間的依據(jù); (i)調度參數(shù),包括優(yōu)先數(shù)等。核心用它們決定進程轉換到核心態(tài)和用戶態(tài)的次序以及占有處理機的次序。,2020/7/29,7, user結構主要包括以下各項: (a)指向proc結構的指針。標識出對應于該user結構的proc

5、結構; (b)真正用戶標識符(real user ID)。它是超級用戶分配給用戶的標識符,以后每次用戶登錄進入系統(tǒng)時,均需送入此標識符; (c)有效用戶標識符(effective user ID)。一般情況下,它與真正用戶標識符相同,但在其它用戶允許的情況下,可用系統(tǒng)調用setuid將它改變?yōu)槠渌脩魳俗R符,以獲得對該用戶的文件進行操作的權力; (d)用戶文件描述符表。記錄了該進程已打開的所有文件;,2020/7/29,8,(e)當前目錄和當前根。給出進程的文件系統(tǒng)環(huán)境; (f)計時器。記錄進程及其子進程在用戶態(tài)和核心態(tài)運行的時間; (g)內部I/O參數(shù)。給出要傳輸?shù)臄?shù)據(jù)量、源數(shù)據(jù)或目標數(shù)據(jù)的

6、地址、文件的輸入、輸出偏移量; (h)限制值。對進程的大小及其能“寫”的文件大小的限制; (i)系統(tǒng)調用信息。記錄當前系統(tǒng)調用的參數(shù)、結果、返回值以及錯誤碼等。,2020/7/29,9,(2)數(shù)據(jù)段 分為三部分:進程數(shù)據(jù)區(qū)(PPDA)、用戶的程序和數(shù)據(jù)區(qū)、用戶棧區(qū)。其中,底部為進程數(shù)據(jù)區(qū),共1024個字節(jié)。 進程數(shù)據(jù)區(qū)又分為兩部分:最底部的289個字節(jié)是進程控制塊的一部分USER結構,它含有進程的更多的信息;另一部分是該進程的系統(tǒng)棧,自頂向下擴展。進程數(shù)據(jù)區(qū)是屬于進程的核心空間的一部分,因此進程的用戶程序部分不能訪問這一部分,只有該進程的系統(tǒng)程序部分才能訪問進程數(shù)據(jù)部分。 數(shù)據(jù)段的頂部是用戶棧

7、區(qū),物理上是從頂向下擴展。 數(shù)據(jù)段的中間部分是可讀寫的用戶的程序和數(shù)據(jù)區(qū)。,2020/7/29,10,圖 7-3 進程數(shù)據(jù)段結構,2020/7/29,11,(3)正文段 正文段包括該進程所執(zhí)行的所有可共享的、可再入的純代碼和常數(shù)。一個進程的正文段也可以不存在。 UNIX系統(tǒng)為了方便管理,將系統(tǒng)中所有這些只讀的可共享的正文段組織在一個正文表中,在內存中的所有正文段均在這個正文表中有一個對應表目。該表目中包含有該正文段在內存和磁盤上的地址,該段大小和使用此段的進程數(shù)目等信息。該正文表又叫TEXT數(shù)組。 UNIX系統(tǒng)中最多允許在內存中同時存放40個正文段,也就是說TEXT數(shù)組的元素最多為40個。 整

8、個系統(tǒng)中的進程控制如圖7-4所示。,2020/7/29,12,圖 7-4 進程的組成,2020/7/29,13,在UNIX系統(tǒng)中,每個進程都包括兩部分:系統(tǒng)程序部分和用戶程序部分。 當進程在用戶模式下運行時,執(zhí)行的是用戶程序。此時若發(fā)生中斷或陷阱,則轉入核心模式,執(zhí)行系統(tǒng)核心程序。 值得注意的是,UNIX系統(tǒng)核心的所有程序都是作為進程的一部分來運行,它們被包括在每個進程的虛地址空間中。有時,我們把進程的用戶程序部分叫做用戶進程,而把核心程序部分叫做系統(tǒng)進程。在UNIX系統(tǒng)的一個進程中,無論是用戶進程還是系統(tǒng)進程,都是進程的一部分,它們擁有同一個進程控制塊,只不過這兩個進程所執(zhí)行的程序不同,映射

9、的物理地址空間不同,使用的堆棧不同而已。,2020/7/29,14,7.4.2 進程控制, UNIX系統(tǒng)中進程控制子系統(tǒng)主要負責進程同步、進程間通信、存儲管理及進程調度。 1進程控制 UNIX系統(tǒng)中,用戶可以通過一些系統(tǒng)調用對進程進行控制。對應進程的創(chuàng)建、執(zhí)行和自我終止,UNIX系統(tǒng)提供了相應的系統(tǒng)調用fork()、exec()和exit(),以便在用戶級上實現(xiàn)上述功能。,2020/7/29,15,7.4.2 進程控制,(1)進程的創(chuàng)建 在UNIX系統(tǒng)中,除了0#進程是在系統(tǒng)引導時被創(chuàng)建外,其他進程都是由父進程通過調用系統(tǒng)原語fork來創(chuàng)建的。 該原語為新建立進程分配一個proc表目并賦予一個

10、唯一的進程標識符pid,此外,內核還將 proc表目初始化。 在UNIX中子進程共享父進程的所有打開文件和當前目錄,但并不共享父進程的內存。所以初始化的主要工作是復制父進程的proc表目中的某些項目以共享其打開的文件,復制正文段和當前目錄表的表目(i節(jié)點),為子進程申請內存并把父進程所有可寫的數(shù)據(jù)段部分復制到內存中去。,2020/7/29,16,(2)進程的執(zhí)行 子進程被建立后繼承了父進程的正文段和數(shù)據(jù)段,這就限制了子進程可以執(zhí)行的程序規(guī)模。為了擴充子進程的執(zhí)行能力,使它可以執(zhí)行不屬于父進程的正文段和數(shù)據(jù)段,UNIX系統(tǒng)提供了一個系統(tǒng)調用原語exec來執(zhí)行一個新的文件。這使得該進程以在此文件中

11、指出的新的正文段和數(shù)據(jù)段來調換當前的正文段和數(shù)據(jù)段。這個操作僅改變進程執(zhí)行的程序,而并不改變進程的標識符,它在進程樹中的位置也未變。,2020/7/29,17,(3)進程的終止 在UNIX系統(tǒng)中,一般的用戶進程在完成其任務后應盡快予以撤消,以便及時收回其占用的資源。為了及時回收資源并減少父進程的干預,UNIX系統(tǒng)通過系統(tǒng)調用原語exit來實現(xiàn)自己的終結。 進程被終止時,關閉所有文件,將當前目錄項的訪問計數(shù)減1,釋放正文段。將進程數(shù)據(jù)ppda寫入盤對換區(qū),釋放數(shù)據(jù)段空間,喚醒父進程和1進程,最后,自我終止進程放棄處理機,內核再調度另一進程執(zhí)行。,2020/7/29,18,2進程的同步和通信 UN

12、IX中對可寫的公用變量通常只允許系統(tǒng)進程訪問。那么這些系統(tǒng)進程間如何實現(xiàn)臨界段互斥執(zhí)行呢。其主要的方法是: (1)UNIX的調度策略規(guī)定在系統(tǒng)進程執(zhí)行期間發(fā)生中斷或陷阱時,不進行進程的轉換調度。只有在用戶程序執(zhí)行過程中被中斷或陷阱、并且在處理中斷后返回時,才可以進行進程的調度以重新分配處理機。所以在系統(tǒng)進程執(zhí)行期間不會有別的進程操作插入。 (2)提高臨界段等代碼段的處理機中斷優(yōu)先級以屏蔽某些類別的中斷,用來防止在系統(tǒng)進程中插入中斷和陷阱處理程序時,可能改變進程的狀態(tài)或修改公共數(shù)據(jù)等情況。,2020/7/29,19,系統(tǒng)進程還可利用系統(tǒng)調用sleep和wakeup原語實現(xiàn)進程間同步。 sleep

13、原語使調用者進程以指定的原因和優(yōu)先數(shù)睡眠(阻塞) wakeup原語則喚醒在指定原因上睡眠的所有進程。 這兩個原語,用戶進程是不能使用的,但用戶進程之間可以利用核心程序提供的軟中斷信號機制來實現(xiàn)少量信息的傳輸和同步。它是某一個進程向另一個與之相關的進程發(fā)送一個019之間的數(shù)(放在接收進程的proc結構p-sig中)。UNIX系統(tǒng)的進程通信功能是很弱的,為了滿足協(xié)同進程間的通信需要而設置了這一最簡單的通信功能。,2020/7/29,20,4進程調度與存儲管理 在UNIX系統(tǒng)中進程調度的功能是由一個專門的進程0#進程來負責的,由于UNIX系統(tǒng)的進程調度的主要功能是響應分時用戶,所以0#進程包括兩部分

14、任務: (1)把進程的映象從內存換出到磁盤; (2)分配處理機。,2020/7/29,21, UNIX系統(tǒng)的進程調度是按照其優(yōu)先級的高低進行調度的,每次調度擁有最高優(yōu)先級的進程去占有處理機。 每一個進程從它被創(chuàng)建時起,就擁有了一個隨時間動態(tài)變化的優(yōu)先級。 系統(tǒng)進程的優(yōu)先級高于用戶進程的優(yōu)先級,其最初的優(yōu)先級取決于進程所等待的事件,事件優(yōu)先級的排列次序為:磁盤事件,終端事件,時鐘事件和用戶進程事件。 用戶進程的優(yōu)先級是基于其所使用了的處理機時間的多少而動態(tài)地變化,使用處理機時間越長,優(yōu)先級越低。 優(yōu)先級高的進程優(yōu)先得到處理機。UNIX每秒為每個用戶進程計算一次優(yōu)先級,優(yōu)先數(shù)愈小,優(yōu)先級愈高。,2020/7/29,22, 在分時系統(tǒng)中,各交互進程需要經(jīng)常在內存和磁盤之間進行交換。實際上,任何一個待執(zhí)行的進程,如果它不能在內存中占據(jù)必需的容量,它是不能被執(zhí)行的。然而,內存是一種有限卻很昂貴的資源,它不可能容納系統(tǒng)中所有活動的進程。 為使內存的緊張狀況得到緩解,UNIX系統(tǒng)采用一種交換策略。一個在內存中非運行狀態(tài)的進程,其進程的映象將被從內存中換出而存入磁盤的對換區(qū)中。而一個被選中運行的磁盤上的就緒進程,其映象可以被換入內存。在這兩種情況下,均有內存或磁盤空間的分配和釋放問題。 在UNIX中內存的磁盤空間的分配和釋放模塊是相同的,所使用的分配算法是最先適應法。,2020/

溫馨提示

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

評論

0/150

提交評論