第2章處理器管理(912)_第1頁
第2章處理器管理(912)_第2頁
第2章處理器管理(912)_第3頁
第2章處理器管理(912)_第4頁
第2章處理器管理(912)_第5頁
已閱讀5頁,還剩110頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第2章 處理器管理 主講:周文強 課程:操作系統本章內容:2.1 處理器管理概述2.2 進程的描述2.3 進程控制2.1 處理器管理概述在計算機系統中,處理器是最重要的硬件資源,也是最緊俏的資源。因此,對處理器管理的好壞,將直接影響到計算機的整體性能。處理器管理的主要任務是對處理器進行分配,并對其運行進行有效的控制和管理。2.1.1 處理器管理的功能 在現代操作系統中,處理器的分配和運行都是以進程為基本單位的,因而對處理器的管理也可以視為對進程的管理。1、進程控制 在并發運行環境中,要使程序運行,必須先為它創建一個或幾個進程,并給它分配必要的資源。程序運行結束時,要撤銷這些進程,并回收這些進程

2、所占用的各類資源。 進程控制的主要任務就是為程序創建進程,撤銷已結束的進程,以及控制進程在運行過程中的狀態轉換。2、進程同步 在并發環境中,進程是以異步方式工作的,并且以不可預知的速度向前推進。為了使多個進程能有條不紊地運行,系統中必須設置進程同步機制。進程同步的主要任務是對眾多的進程運行進行協調。協調方式有兩種: 1)進程互斥方式 2)進程同步方式 1)進程互斥方式 進程在對臨界資源訪問時,應采用互斥方式,也就是當一個進程訪問臨界資源時,另一個要訪問該臨界資源的進程必須等待;當獲取臨界資源的進程釋放臨界資源后,其他進程才能獲取臨界資源。這種進程之間的相互制約關系稱為互斥。臨界資源是指一次只能

3、被一個進程使用的資源。互斥可以簡單的理解為:有你就沒有我,有我就沒有你2)進程同步方式 相互合作的進程,由同步機構對它們的執行次序加以協調。當前一個進程結束,后一個進程才能開始;前一個進程沒有結束,后一個進程就不能開始。這種進程之間的相互合作關系稱為同步,同步可以簡單理解為:有你才有我,沒你就沒有我門診醫生: 開化驗單; 等化驗結果; 繼續診病;化驗員: 等化驗單; 化驗; 填寫化驗結果; 繼續化驗 等待等待喚醒后喚醒后3、進程通信 在系統中,經常會用多個進程需要相互配合去完成一個共同的任務,而在這些進程之間,往往需要相互交換信息。進程通信的任務就是用來實現相互合作進程之間的信息交換。4、處理

4、器調度 等待在后備隊列上的作業,通過要經過處理器調度才能執行。處理器調度包括作業調度、進程調度和中級調度。進程調度被認為是低級調度,它決定哪個進程可以獲得處理器。 進程調度的基本任務是從后備隊列中按照一定的算法,選擇出若干個作業,為它們分配必要的資源,將它們調入主存,然后為它們建立進程,使之成為可能獲取處理器的就緒進程,并按照一定算法將其插入到就緒隊列。2.1.2 程序執行 程序執行是指程序在計算機中的運行過程。程序的執行可以用前趨圖表示,程序的執行方式有順序執行和并發執行。1、前趨圖(precedence graphprecedence graph) 前趨圖是一個前趨圖是一個有向無循環圖有向

5、無循環圖,記為,記為dagdag(directed directed acyclic graphacyclic graph),用于描述進程之間執行的前后關用于描述進程之間執行的前后關系。系。 1 1、每個結點可用于表示一條語句、一個程序等;、每個結點可用于表示一條語句、一個程序等; 2 2、結點間的有向邊用于表示兩個結點之間存在前趨、結點間的有向邊用于表示兩個結點之間存在前趨關系;關系; 3 3、前趨關系用、前趨關系用表示;表示; 4 4、在前趨圖中,沒有前驅的結點稱為、在前趨圖中,沒有前驅的結點稱為初始結點初始結點,沒,沒有后續結點稱為終止終點;有后續結點稱為終止終點; 5 5、前驅圖中不能

6、存在循環。、前驅圖中不能存在循環。前趨圖p1c1p1i2c2前趨關系有:前趨關系有:p1-p2, p1-p3,p2-p4,p3-p4,p4-p5p1叫初始結點,叫初始結點,p4叫終止結點叫終止結點 程序是一個在時間上按嚴格次序前后相繼的操作序列,是程序是一個在時間上按嚴格次序前后相繼的操作序列,是一個靜態的概念。一個較大的一個靜態的概念。一個較大的程序程序通常由通常由若干個操作若干個操作組成。程序組成。程序在執行時,必須按照在執行時,必須按照某種先后次序某種先后次序逐個執行,只有逐個執行,只有當前一個操作當前一個操作執行完后,才能執行執行完后,才能執行后一個操作后一個操作。例如:在進行計算時,

7、總是先。例如:在進行計算時,總是先輸入需要的數據,然后才能進行計算,計算完成后再將結果輸出。輸入需要的數據,然后才能進行計算,計算完成后再將結果輸出。用用i i代表輸入,代表輸入,c c代表計算,代表計算,p p代表打印。代表打印。i1c1p1i2p2c22、程序的順序執行程序順序執行時的特征程序順序執行時的特征 順序性順序性:程序順序執行時,其執行過程可看做一系列程序順序執行時,其執行過程可看做一系列嚴格按嚴格按程序規定程序規定的的狀態轉移過程狀態轉移過程,也就是每執行一條指,也就是每執行一條指令,系統就從令,系統就從上一個執行狀態上一個執行狀態轉移到轉移到下一個執行狀態下一個執行狀態,且上

8、一條指令的執行且上一條指令的執行結束結束是下一條指令執行是下一條指令執行開始開始的充分的充分必要條件;必要條件; 例如:例如: 輸入輸入計算計算打印打印 的順序性的順序性程序順序執行時的特征程序順序執行時的特征 封閉性:封閉性:程序是在封閉的環境下執行。即程序是在封閉的環境下執行。即程序在運行時程序在運行時獨占全部資源獨占全部資源,資源的狀況,資源的狀況只有本程序才能改變它。程序一旦開始執只有本程序才能改變它。程序一旦開始執行,其執行結果不受外界因素影響。行,其執行結果不受外界因素影響。程序順序執行時的特征程序順序執行時的特征 確定性:確定性:順序執行的最終結果可再現是說順序執行的最終結果可再

9、現是說程序執行的結果程序執行的結果與執行速度無關,程序無與執行速度無關,程序無論是從頭到尾不停的執行,還是論是從頭到尾不停的執行,還是“停停走停停走走走”的執行,都不會影響到最終結果。的執行,都不會影響到最終結果。 可再現性:可再現性:只要程序只要程序執行的環境執行的環境和和輸入的輸入的初始條件初始條件相同,則程序無論重復執行多少相同,則程序無論重復執行多少次,按照何種方式執行,都將獲得會相同次,按照何種方式執行,都將獲得會相同的結果。的結果。3、程序的并發執行 一個較大的程序包括若干個按照一定次序執行的組成部分。但是,在處理一批程序時,它們之間有時并不存在嚴格的執行次序,可以并發執行。如程序

10、順序執行中的示例,雖然在進行計算時,總是先輸入需要的數據,然后才能進行計算,計算完成后,再將結果輸出。但是,完成第一次輸入后,在對第一次輸入進行計算的同時,可以進行第二次輸入,實現第一次計算與第二次輸入的并發執行。程序的并發執行及其特征程序的并發執行及其特征1 1、程序的并發執行、程序的并發執行i1c1p1i2c2p2i3c3p3i4c4p4輸入進程是計算進程的前提,計算進程是打印進程的前提。 i1c1 p1:順序執行生產者消費者輸入進程計算進程計算進程打印進程 程序的并發執行是指在程序的并發執行是指在一個時間段一個時間段內執行內執行多個程序多個程序。程。程序在并發執行時,雖然提高了系統的吞吐

11、量,但是,也序在并發執行時,雖然提高了系統的吞吐量,但是,也會產生一些與順序執行時不同的特征。會產生一些與順序執行時不同的特征。1 1)間斷性)間斷性:程序在并發執行時,由于它們:程序在并發執行時,由于它們共享系統資源共享系統資源,以及為完成同,以及為完成同一任務而一任務而相互合作相互合作,致使在這些并發執行的程序之間形成了相互制,致使在這些并發執行的程序之間形成了相互制約的關系。從而使得有些程序在執行中出現走走停停的情況,表現約的關系。從而使得有些程序在執行中出現走走停停的情況,表現為為“執行執行暫停執行暫停執行執行執行”的間斷性活動規律。的間斷性活動規律。程序并發執行時的特征程序并發執行時

12、的特征程序并發執行時的特征程序并發執行時的特征2 2)失去封閉性)失去封閉性:程序并發執行時,由多個程序(進程):程序并發執行時,由多個程序(進程)共享資源共享資源,因,因而對而對資源的狀態資源的狀態由由多個程序多個程序來改變,致使程序的運行失去了封閉來改變,致使程序的運行失去了封閉性。這樣,程序在執行時,必然會受到性。這樣,程序在執行時,必然會受到其他程序其他程序的影響。的影響。3 3)不可再現性)不可再現性:由于程序執行時:由于程序執行時失去了封閉性失去了封閉性,也將導致失去可再現,也將導致失去可再現性。即使并發程序執行的環境和初始條件相同,程序多次執行或性。即使并發程序執行的環境和初始條

13、件相同,程序多次執行或以不同的方式執行,可能獲得不相同的結果。以不同的方式執行,可能獲得不相同的結果。并發執行案例 初始條件:程序a和程序b為并發執行,它們共享變量k,假設k初始值為5,程序a執行k=k-1;程序b執行print k;k=k+3。 執行條件:程序a和程序b,如果按以下順序執行,k的執行結果是多少?并發執行案例順序1 按k=k-1;print k; k=k+3條件執行,k的執行結果是多少? 解: k初始值為5 k執行的結果分別是4,5,7并發執行案例順序2 按print k; k=k-1; k=k+3條件執行,k的執行結果是多少? 解: k初始值為5 k執行的結果分別是5,4,7

14、并發執行案例順序2 按print k;k=k+3;k=k-1條件執行,k的執行結果是多少?解: k初始值為5 k執行的結果分別是5,8,7程序并發執行時的特征程序并發執行時的特征 4)資源共享性。系統中的硬件資源(cpu、內存和i/o設備等)和軟件資源(系統程序和數據集等)不再被單個用戶或程序獨占,而為多個用戶或作業共同使用。 程序并發執行時的特征程序并發執行時的特征5)程序和計算不再一一對應。程序是指令的有序集合,是靜態的概念;計算是指令序列在處理器上執行過程,和處理器按照程序的規定執行操作的過程,是動態的概念。程序并發執行時的特征程序并發執行時的特征 程序在順序執行時,程序與計算間有著一一

15、對應的關系。 程序在并發執行時,一個共享程序可為多個用戶作業調用,而使該程序處于多個執行中,從而形成了多個計算。這就是說,一個共享程序可對應多個計算。因此,程序與計算已不再一一對應。2.2 進程的描述 在計算機系統中,特別是在多道程序環境下,眾多的計算機用戶程序并行運行,它們搶占處理器的處理時間,這就存在一個問題,如何正確有效地分配系統的各類資源,才能充分發揮處理器的強大功能? 程序的概念已描述不清系統的這種并行情況,反映不了它們的活動規律和狀態變化。 進程是動態研究操作系統,以進程作為資源分配和獨立運行的基本單位。2.2.1 進程的概念 從不同的角度,對進程所作的解釋: (1)進程是程序的一

16、次執行。 (2)進程是可以和別的計算并發執行的計算。 (3)進程是程序在一個數據集合上運行的過程,是系統進行資源分配和調度的獨立單位。 (4)進程是一個具有一定功能的程序關于某個數據集合的一次運行活動。 (5)進程是進程實體的一次活動。 進程與程序進程與程序 進程與程序是兩個截然不同但又有聯系的概念,可從以下四個點來分析: (1) 進程是程序的一次執行過程,而程序是一組指令的有序集合。 (2) 進程具有動態性、并發性、獨立性和異步性等,而程序不具有這些特性。 (3) 進程包含程序、數據和進程控制塊pcb。 (4) 程序多次運行,便可以產生多個進程。 進程與程序進程與程序(掌握)掌握) 從以上四

17、點可以看出進程與程序的差異: 1、程序是靜態的概念,而進程是動態的概念。 2、程序可以長期保存,而進程是短暫存在的,它動態地產生、變化和消亡。 3、程序和相應進程之間,有點像樂譜和相應演奏之間的關系,樂譜可以長期保存,而演奏是個動態的過程。進程特征進程特征 進程具有以下進程具有以下5 5個基本特征:個基本特征: 1 1 )結構特征:程序段)結構特征:程序段+ +相關數據段相關數據段+pcb+pcb 2 2 )動態性)動態性 :進程是運行的程序。:進程是運行的程序。 3 3 )并發性)并發性 4 4 )獨立性)獨立性 5 5 )異步性)異步性最基最基本的本的兩個兩個特征特征1 1)結構特征)結構

18、特征 進程實體:進程實體:程序段程序段+ +相關數據段相關數據段+pcb+pcb 2 2)動態性)動態性 (基本特征)(基本特征) 進程是運行的程序。它由創建而產生、由調度而進程是運行的程序。它由創建而產生、由調度而執行,由撤消而消亡。執行,由撤消而消亡。 相當于身份證進程特征進程特征進程特征進程特征3 3)并發性)并發性(重要特征)(重要特征) 多個進程多個進程在在一段時間一段時間內同時運行,內同時運行,交替交替使使用用處理器處理器的情況。如分時系統中按時間片的情況。如分時系統中按時間片運行。運行。4 4)獨立性)獨立性 進程實體是一個能進程實體是一個能獨立運行獨立運行、獨立分配資源獨立分配

19、資源和和獨獨立接受調度立接受調度的基本單位。的基本單位。 凡未建立凡未建立pcbpcb的程序,都不能作為一個獨立的單的程序,都不能作為一個獨立的單位參與運行。位參與運行。進程特征進程特征進程特征進程特征5 5)異步性)異步性 系統中的各進程按照系統中的各進程按照各自獨立各自獨立的、的、不可不可預知的速度預知的速度向前推進,或者說,進程按向前推進,或者說,進程按異異步方式步方式運行。異步性導致執行的不可再現運行。異步性導致執行的不可再現性。故在系統中必須采取相應的措施保證性。故在系統中必須采取相應的措施保證進程之間能夠協調運行。(進程之間能夠協調運行。(進程同步機制進程同步機制保證進程之間的正確

20、運行)保證進程之間的正確運行)2.2.2 進程的狀態及其轉換 系統中的諸多系統中的諸多進程進程并發運行,并因競爭系并發運行,并因競爭系統而統而相互依賴相互依賴和和相互制約相互制約,因而進程執行,因而進程執行時呈現了時呈現了“運行運行暫停暫停運行運行”的間斷性。的間斷性。 進程執行時的進程執行時的間斷性,間斷性,可用進程的狀態及可用進程的狀態及其轉態的轉換來描述。其轉態的轉換來描述。 進程的進程的并發執行,并發執行,會引起進程之間競爭資會引起進程之間競爭資源和協作,造成進程間斷執行,同時引起源和協作,造成進程間斷執行,同時引起了進程的狀態變化。了進程的狀態變化。1.1.進程的進程的3 3種基本狀

21、態種基本狀態 進程可能由于等待進程可能由于等待i/o操作、競爭資源、以及相互操作、競爭資源、以及相互協作等原因產生了協作等原因產生了“走走停停走走停停”的動態性。的動態性。進程執進程執行時的間斷性,決定了進程可能具有多種狀態。行時的間斷性,決定了進程可能具有多種狀態。 進程在生存期內至少具有五種基本狀態進程在生存期內至少具有五種基本狀態:初始:初始、就、就緒、運行、等待、緒、運行、等待、終止終止進程是運行的程序,所以不存在提交狀態;進程是運行的程序,所以不存在提交狀態;作業運行的環境是批處理系統所以無阻塞狀態。作業運行的環境是批處理系統所以無阻塞狀態。事件發生事件發生如如i/o完成完成運行運行

22、就緒就緒等待事件發生等待事件發生如等待如等待i/o分時系統分時系統時間片到時間片到調度調度等待等待系統態系統態用戶態用戶態初始初始終止終止再加上再加上初始初始和和終止終止,總共有總共有5 5種基本狀態種基本狀態初始態初始態 進程進程剛被創建時,沒有得到任何資源,同剛被創建時,沒有得到任何資源,同時時其它進程其它進程正占有正占有處理機處理機而得不到執行,而得不到執行,只能處于初始狀態。只能處于初始狀態。 操作系統要做如下事情:操作系統要做如下事情: 建立建立pcb 建立資源表建立資源表 分配資源分配資源 建立地址空間表建立地址空間表就緒就緒(ready)(ready)狀態狀態 當進程已分配到當進

23、程已分配到除處理器除處理器以外的所有必要資源后,以外的所有必要資源后,只要再獲得處理器就可以運行的狀態稱為只要再獲得處理器就可以運行的狀態稱為就緒狀就緒狀態態。 已經分配到除已經分配到除cpucpu之外的所有資源,可謂之外的所有資源,可謂“萬事萬事俱備,只欠俱備,只欠cpucpu”。 就緒隊列:在一個系統中處于就緒隊列:在一個系統中處于就緒狀態就緒狀態的的進程可能有多個,通常將它們排成一個隊進程可能有多個,通常將它們排成一個隊列,稱為列,稱為就緒隊列就緒隊列。執行狀態執行狀態 處于就緒狀態的進程獲得了包括處于就緒狀態的進程獲得了包括cpucpu在內的所在內的所需的全部資源需的全部資源,進程狀態

24、處于運行狀態。程,進程狀態處于運行狀態。程序正在執行。序正在執行。單處理機系統中,只有單處理機系統中,只有一個進程一個進程處于執行狀態;處于執行狀態;多處理機系統中,多處理機系統中,多個進程多個進程處于執行狀態處于執行狀態等待狀態等待狀態 正在執行的進程由于發生某事件(正在執行的進程由于發生某事件(等待事件等待事件)而暫時無法繼續執行時,便而暫時無法繼續執行時,便放棄處理機放棄處理機而處而處于暫停狀態,即進程的執行受到阻塞,把這于暫停狀態,即進程的執行受到阻塞,把這種暫停狀態成為種暫停狀態成為等待狀態等待狀態。 通常把處于等待狀態的進程通常把處于等待狀態的進程排成一個隊列,稱為排成一個隊列,稱

25、為等待隊列等待隊列。終止狀態終止狀態 進程在執行結束后,將退出執行而被終止進程在執行結束后,將退出執行而被終止的狀態。的狀態。472.進程狀態的轉換進程狀態的轉換484950515253進程狀態轉換進程狀態轉換v運行狀態運行狀態等待狀態等待狀態等待使用資源或某事件發生等待使用資源或某事件發生 ;v初始狀態初始狀態就緒狀態就緒狀態進程創建后,得到了除進程創建后,得到了除cpucpu之外的全部資源;之外的全部資源;v等待狀態等待狀態就緒狀態就緒狀態資源得到滿足或事件發生資源得到滿足或事件發生進程狀態轉換進程狀態轉換v運行狀態運行狀態就緒狀態就緒狀態運行時間片到;出現有更高優先權進程。運行時間片到;

26、出現有更高優先權進程。v就緒狀態就緒狀態運行狀態運行狀態cpucpu空閑時選擇一個就緒進程。空閑時選擇一個就緒進程。v執行狀態執行狀態終止狀態終止狀態執行結束。執行結束。就緒task_runningfork()執行擁有cpu不可打斷睡眠task_uninterruptible可打斷睡眠task_interruptibledo_exit()時間片到schedule()等待資源schedule()sleep_on()喚醒wake_up()僵尸task_zombie暫停task_stoppedptrace()schedule()收到信號sig_cont喚醒wake_up()或收到信號等待資源sche

27、dule()interruptible_sleep_on()linuxlinux下進程狀態的轉換下進程狀態的轉換2.2.3 進程的掛起狀態1 1、引入掛起狀態的原因、引入掛起狀態的原因 (1 1)終端用戶的請求:修改程序)終端用戶的請求:修改程序 (2 2)父進程請求:對子進程的修改等)父進程請求:對子進程的修改等 (3 3)負荷調節的需要)負荷調節的需要 :資源不夠用:資源不夠用 (4 4)操作系統的需要)操作系統的需要 :檢查資源利用情況:檢查資源利用情況2 2、引入掛起狀態后的進程狀態轉換、引入掛起狀態后的進程狀態轉換 在引入掛起狀態后,又增加了掛起狀態(靜止狀態)到非在引入掛起狀態后,

28、又增加了掛起狀態(靜止狀態)到非掛起狀態(活動狀態)的轉換;以及反轉換。掛起狀態(活動狀態)的轉換;以及反轉換。(1 1)活動就緒)活動就緒靜止就緒靜止就緒(2 2)活動阻塞)活動阻塞 靜止阻塞靜止阻塞(3 3)靜止就緒)靜止就緒活動就緒活動就緒(4 4)靜止阻塞)靜止阻塞活動阻塞活動阻塞運行狀態運行狀態靜止就緒靜止就緒 正在運行的進程正在運行的進程,如果用,如果用掛起原語掛起原語將將該進程掛起后,此時進程就暫停運行該進程掛起后,此時進程就暫停運行,轉變為,轉變為靜止就緒狀態靜止就緒狀態。靜止就緒靜止就緒活動就緒活動就緒 處于處于靜止就緒狀態靜止就緒狀態的進程,若用的進程,若用激活原語激活原語

29、將該進程激活后,進程狀態就由靜止就緒將該進程激活后,進程狀態就由靜止就緒狀態變為狀態變為活動就緒狀態活動就緒狀態,激活后的進程就,激活后的進程就可以可以被調度被調度運行了。運行了。活動就緒活動就緒靜止靜止就緒就緒 當進程處于未被掛起的就緒狀態時,稱之當進程處于未被掛起的就緒狀態時,稱之為為活動就緒狀態活動就緒狀態,在用,在用掛起原語掛起原語將該進程將該進程掛起后,此時進程就變為掛起后,此時進程就變為靜止就緒狀態靜止就緒狀態。處于靜止就緒狀態的進程,不能再被調度處于靜止就緒狀態的進程,不能再被調度運行。運行。活動等待活動等待靜止等待靜止等待 當進程處于未被掛起的等待狀態是,稱當進程處于未被掛起的

30、等待狀態是,稱之為之為活動等待狀態活動等待狀態。在用。在用掛起原語掛起原語將將該進程掛起后,此時進程就轉變為該進程掛起后,此時進程就轉變為靜靜止等待狀態止等待狀態。靜止等待靜止等待活動等待活動等待 處于處于靜止等待狀態靜止等待狀態的進程,若用的進程,若用激活激活原語原語將該進程激活,進程狀態就由靜將該進程激活,進程狀態就由靜止等待狀態變為止等待狀態變為活動等待狀態活動等待狀態。靜止等待靜止等待靜止就緒靜止就緒 處于處于靜止等待狀態靜止等待狀態的進程,在其所需的進程,在其所需要的資源滿足或完成等待的事件后,要的資源滿足或完成等待的事件后,就會變為就會變為靜止就緒狀態靜止就緒狀態。運行運行掛起原語

31、掛起原語活動活動等待等待靜止靜止等待等待活動活動就緒就緒靜止靜止就緒就緒激活原語激活原語掛起原語掛起原語掛起原語掛起原語資源滿足或完成等資源滿足或完成等待后,釋放待后,釋放激活原語激活原語釋放釋放請求請求i/o具有掛起狀態的進程狀態圖具有掛起狀態的進程狀態圖2.3 進程控制(掌握) 進程控制的主要任務是為作業程序創建進程,撤銷已結束的進程,以及控制進程在運行過程中的狀態轉換。 本節主要介紹進程控制塊的作用、組成、組織方式,進程的創建與撤銷,進程的等待與喚醒。2.3.1 進程控制塊pcb pcb:pcb:為了描述和控制進程的運行,系統為每為了描述和控制進程的運行,系統為每個進程定義了一個數據結構

32、,成為進程控制個進程定義了一個數據結構,成為進程控制塊。塊。 通過通過pcbpcb,使得原來,使得原來不能獨立運行不能獨立運行的的程序程序(數(數據),成為一個可以據),成為一個可以獨立運行獨立運行的基本單位,的基本單位,一個能夠一個能夠并發運行并發運行的的進程進程。1.進程控制塊的作用進程控制塊進程控制塊隨著進程的創建而創建隨著進程的創建而創建,即創建,即創建一個進程,就是創建一個一個進程,就是創建一個pcbpcb;進程控制塊進程控制塊隨著進程的撤消而撤消隨著進程的撤消而撤消,即撤消,即撤消一個進程,就是撤消進程一個進程,就是撤消進程pcbpcb。因此,因此,pcbpcb是進程的存在的惟一標

33、志是進程的存在的惟一標志。2.進程控制塊的內容進程控制塊主要包括四個方面的信息:進程控制塊主要包括四個方面的信息:1、進程標識信息、進程標識信息2、說明信息(進程調度信息)、說明信息(進程調度信息)3、現場信息(處理器狀態信息)、現場信息(處理器狀態信息)4、管理信息(進程控制信息)、管理信息(進程控制信息)1、進程標識信息、進程標識信息進程標識符進程標識符進程名進程名進程號進程號用戶標識用戶標識用戶名用戶名用戶號用戶號家族聯系家族聯系父進程父進程子進程子進程3、處理機狀態信息(現場信息)、處理機狀態信息(現場信息)通用寄存器通用寄存器指令計數器指令計數器程序狀態字程序狀態字用戶棧指針用戶棧指

34、針2、進程調度信息(說明信息)、進程調度信息(說明信息)進程狀態進程狀態進程優先數(級進程優先數(級/權)權)等待原因等待原因調度算法參數等調度算法參數等4、進程控制信息(管理信息)、進程控制信息(管理信息)程序和數據地址程序和數據地址進程同步和通信機制進程同步和通信機制資源清單資源清單鏈接指針鏈接指針訪問權限訪問權限打開的文件打開的文件3.進程控制塊的組織方式 在一個系統中,通常擁有數十個、數百個在一個系統中,通常擁有數十個、數百個乃至數千個乃至數千個pcb,為了能對它們進行有效,為了能對它們進行有效的管理,就必須通過適當的方式將它們組的管理,就必須通過適當的方式將它們組織起來。織起來。 目

35、前,常用的組織方式有目前,常用的組織方式有鏈接方式鏈接方式和和索引索引方式方式。1 1)鏈接方式)鏈接方式 linuxlinux采用鏈接方式采用鏈接方式 具有同一狀態的具有同一狀態的pcb pcb ,組成,組成pcbpcb隊列隊列 就緒隊列、阻塞隊列、空閑隊列就緒隊列、阻塞隊列、空閑隊列2 2)索引方式)索引方式 系統根據所有進程的狀態建立幾張索引表系統根據所有進程的狀態建立幾張索引表 保存各索引表在內存的首地址記錄保存各索引表在內存的首地址記錄 在每個索引表的表目中,記錄具有相應狀態的在每個索引表的表目中,記錄具有相應狀態的某個某個pcbpcb在在pcbpcb表中的地址。表中的地址。單一隊列

36、可能造成隊列太長,單一隊列可能造成隊列太長,以及進程可能處于多個狀態,以及進程可能處于多個狀態,從而造成效率太低。從而造成效率太低。73pcb1pcb2pcb3pcb4pcb5pcb6pcb7pcbn.空空 pcbpcb運行態運行態就緒態就緒態等待等待1 1等待等待2 26751015進程控制塊進程控制塊744.進程控制原語 原語:原語:是指具有是指具有特定功能特定功能的不可能的不可能被中斷被中斷的過程。原語是不可再分,要么全做,要的過程。原語是不可再分,要么全做,要么全不做。么全不做。 它主要用于實現操作系統的一些專門控制它主要用于實現操作系統的一些專門控制操作。用于進程控制的原語有操作。用

37、于進程控制的原語有創建原語創建原語、撤銷原語撤銷原語、等待原語等待原語、喚醒原語喚醒原語。進程控制為什么要使用原語?進程控制為什么要使用原語?系統在控制進程時,如進程的創建、撤銷,進程狀態系統在控制進程時,如進程的創建、撤銷,進程狀態的改變都要調用相應的的改變都要調用相應的程序段程序段來完成這些功能,若不來完成這些功能,若不采用原語,那么這些采用原語,那么這些程序段程序段可并發執行,這樣這些可并發執行,這樣這些程程序段序段任意執行很可能使其執行結果失去封閉性、可再任意執行很可能使其執行結果失去封閉性、可再現性,從而達不到進程控制的目的。因此,進程控制現性,從而達不到進程控制的目的。因此,進程控

38、制須用原語實現,如:須用原語實現,如:創建原語創建原語、撤銷原語撤銷原語、等待原語等待原語、喚醒原語喚醒原語等。等。2.3.2 進程創建1 1、進程圖(、進程圖(process graphprocess graph) 進程圖是進程圖是用于描述一個進程的家族關系的用于描述一個進程的家族關系的有向樹有向樹。 在進程在進程pipi創建了進程創建了進程pjpj之后,稱之后,稱pipi是是pjpj的的父進程父進程, pjpj是是pipi的的子進程子進程。 子進程可以繼承父進程所擁有的所有資源。子進程可以繼承父進程所擁有的所有資源。 為了標識進程之間的家族關系,在為了標識進程之間的家族關系,在pcbpcb

39、中設置了中設置了家族關系家族關系表項表項,以標明自己的父進程以及所有的子進程。,以標明自己的父進程以及所有的子進程。進程圖是反應進程家族關系的有向樹。進程圖1 1)用戶登錄:)用戶登錄:合法用戶進程合法用戶進程2 2)作業調度:)作業調度:運行作業時,分配資源,創建進程運行作業時,分配資源,創建進程3 3)提供服務:)提供服務:如打印進程如打印進程4 4)應用請求:)應用請求:如輸入、計算、打印三進程如輸入、計算、打印三進程引起創建進程的事件引起創建進程的事件/ /創建進程的原因創建進程的原因進程創建的處理過程進程創建的處理過程1 1)引起創建進程的事件發生)引起創建進程的事件發生2 2)調用

40、)調用進程創建原語進程創建原語3 3)創建步驟如下:)創建步驟如下:進程創建步驟:進程創建步驟:父進程父進程(parent process)(parent process)建建子進程子進程(child process)(child process)時,時,系統在進程表中增加一項,并從系統在進程表中增加一項,并從pcbpcb池中取一個空白池中取一個空白pcbpcb。為新進程的進程映像分配地址空間。傳遞環境變量,構造為新進程的進程映像分配地址空間。傳遞環境變量,構造共享地址空間。共享地址空間。為新進程分配資源,除內存空間外,還有其他各種資源。為新進程分配資源,除內存空間外,還有其他各種資源。查找輔

41、存,找到進程正文段并裝到正文區。查找輔存,找到進程正文段并裝到正文區。初始化進程控制塊,為新進程分配進程標識符,初始化初始化進程控制塊,為新進程分配進程標識符,初始化pswpsw。加入就緒進程隊列加入就緒進程隊列, , 將進程投入運行。將進程投入運行。通知操作系統的某些模塊,如記賬程序、性能監控程序。通知操作系統的某些模塊,如記賬程序、性能監控程序。功功 能能:創建一個具有指定:創建一個具有指定標識符進程標識符進程創建方式創建方式:由系統程序模塊:由系統程序模塊統一創建統一創建 由父進程創建由父進程創建入口信息入口信息:進程標識符、優:進程標識符、優先級、進程開始先級、進程開始地 址 、 初

42、始地 址 、 初 始cpucpu狀態、資狀態、資源清單等源清單等2.3.3 進程撤銷1 1)正常結束:)正常結束: 進程順利的完成使命后進程順利的完成使命后終止終止(大多數情況)。(大多數情況)。批處理系統的結束標志:批處理系統的結束標志:holtholt指令、撤消的系統調用指令、撤消的系統調用分式系統:分式系統:logs off logs off 指令指令1.1.引起進程引起進程撤銷撤銷的事件的事件2 2)進程異常錯誤:在進程運行期間,由于出現某種錯誤和)進程異常錯誤:在進程運行期間,由于出現某種錯誤和故障而迫使進程故障而迫使進程終止終止。 可能的異常事件:可能的異常事件: 1 1)越界錯誤

43、)越界錯誤 2 2)保護錯)保護錯 3 3)非法指令)非法指令 4 4)特權指令錯)特權指令錯 5 5)運行超時)運行超時 6 6)等待超時)等待超時 7 7)算術運算錯)算術運算錯 8 8)i/oi/o故障故障 1.1.引起進程引起進程撤銷撤銷的事件的事件1.1.引起進程引起進程撤銷撤銷的事件的事件3 3)進程應外界的請求而終止運行)進程應外界的請求而終止運行 指在進程運行的過程中,應外界的請求而指在進程運行的過程中,應外界的請求而終止終止運行。運行。比如調整資源。比如調整資源。 可能的干預:可能的干預: 1 1)操作員或操作系統干預)操作員或操作系統干預 2 2)父進程請求)父進程請求 3

44、 3)父進程)父進程終止終止2.進程撤銷的處理過程 一旦操作系統發現了要求一旦操作系統發現了要求終止進程的事件終止進程的事件后,便后,便調用進程終止原語調用進程終止原語,按照下列步驟終止指定的進,按照下列步驟終止指定的進程。程。 根據進程根據進程pidpid得到進程得到進程pcbpcb得到進程的狀態得到進程的狀態 若進程在執行,停止執行,置調度標志為真。若進程在執行,停止執行,置調度標志為真。 終止子進程終止子進程 歸還資源給父進程或系統歸還資源給父進程或系統 移出隊列移出隊列88功功 能能:撤銷一指定進程:撤銷一指定進程入口信息入口信息:被撤銷的進程名:被撤銷的進程名撤銷條件撤銷條件:v已完

45、成所要求的功能而終止已完成所要求的功能而終止v由某種錯誤導致非正常終止由某種錯誤導致非正常終止v祖先進程要求撤銷某子進程祖先進程要求撤銷某子進程2.3.4 進程等待1)請求系統服務 正在運行的進程請求系統提供服務時,例如:申請打印機打印,但是,申請服務資源被另外的進程占有,該進程只能處于等待狀態。1.引起進程等待的事件1.引起進程等待的事件2)正在運行的進程啟動某種操作后,其后續命令必須在該操作完成后才能運行,所以要先等待該進程。例如:某進程啟動鍵盤輸入數據,只有數據輸入完成后才能計算,此時,該進程要被等待。1.引起進程等待的事件3)新數據尚未到達 對于相互合作的進程,如果一個進程需要先獲得另

46、一個進程提供的數據后才能運行,則只有等待所需要的數據到達才能運行。所以,該進程也要被阻塞。1.引起進程等待的事件4)無新工作可做 系統往往設置一些具有特定功能的系統進程,每當這種進程完成任務后,便把自己阻塞起來等待新任務的到來。例如系統中的發送進程,其主要任務是發送數據,若已有數據發送完成又無新的發送請求,則該進程自我阻塞。2.進程等待的處理過程 一旦操作系統發現了要求等待進程的事件后,便調用進程等待原語,按照下列步驟阻塞指定的進程。 1)立即停止執行該進程 2)修改進程控制塊中的相關信息。把進程控制塊中的運行狀態由“運行”改為“等待”狀態,并填入等待原因,以及進程的各種狀態信息。 3)把進程

47、控制塊插入到等待隊列。根據等待隊列的組織方式,把等待進程的進程控制塊插入等待隊列中。 4)轉調度程序重新調度,運行就緒隊列中的其他進程。功功 能能:停止進:停止進程的執行,變程的執行,變為等待為等待入口信息入口信息:可省:可省2.3.5 進程喚醒1)請求系統服務得到滿足 因請求服務得不到滿足的等待隊列中的進程,得到相應的服務要求時,處于等待隊列中的進程就被喚醒。1.引起進程喚醒的事件1.引起進程喚醒的事件2)啟動某種操作完成 處于等待某種操作完成的等待隊列中的進程,其等待的操作已經完成,可以執行其后續命令,則必須把它喚醒。1.引起進程喚醒的事件3)新數據已經到達 對于相互合作的進程,如果一個進

48、程需要另一個進程提供的數據已經到達,則把因此而處于等待的進程喚醒。1.引起進程喚醒的事件4)有新工作可做 系統中的具有特定功能的系統進程,接收到新的任務時,就必須喚醒它。2.進程喚醒的過程 一旦操作系統發現了要求喚醒進程的事件后,便調用進程喚醒原語,按照下列步驟喚醒指定的進程。1)從等待隊列中找到該進程2)修改該進程控制塊中的相關內容,把等待狀態改為就緒狀態,刪除等待原因等。3)把進程控制塊插入到就緒隊列中。按照就緒隊列的組織方式,把被喚醒的進程的進程控制塊插入到就緒隊列中。100功功 能能:喚醒某一:喚醒某一處于等待隊列當處于等待隊列當中的進程中的進程入口信息入口信息:被喚醒:被喚醒進程的名

49、字進程的名字2.4 進程同步機制 操作系統中引入進程后,雖然改善了資源的利用率,提高了系統的吞吐量。 但是,由于進程的異步性,也會給系統造成混亂。因此,必須有效地協調各個并發進程間的關系,從而使它們能正確的執行。 本節主要介紹進程的同步與互斥的實現機制。2.4.1 進程的并發性 在并發運行的系統中,若干個作業可以同時運行,而每個作業又需要有多個進程協作完成。在這些同時存在的進程間具有并發性,稱之為“并發進程”。 進程間的關系可以分為:1、資源共享關系2、相互合作關系1、資源共享關系 系統中的某些進程需要訪問共同的資源,即當一個進程訪問共享資源時,訪問該共享資源的其他進程必須等待,當這個進程使用完后,其他進程才能使用。這時要求進程應互斥地訪問共享資源。2、相互合作關系 系統中的某些進程之間存在相互合作的關系,即一個進程執行完后,另一個進程才能開始。否則,另一個進程不能開始,這時就要保證相互合作的進程在執行次序上要同步。2.4.2 進程同步的概念 對于相關進程間的同步和互斥,必須進行有效的控制。 這種控制涉及幾個基本概念,即臨界資源、臨界區、進程同步和進程互斥的概念。1、臨界資源 通常一次僅允許一個進程使用的資源稱為臨界資源,同時,也將一個進程訪問的這種臨界資源的那段程序代碼稱為臨界區臨界區。這里的臨界資源的含義是廣義的,它既包括物理實體

溫馨提示

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

評論

0/150

提交評論