計算機三級進程管理_第1頁
計算機三級進程管理_第2頁
計算機三級進程管理_第3頁
計算機三級進程管理_第4頁
計算機三級進程管理_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第二章第二章 進程管理進程管理 進程是操作系統(tǒng)中最重要的概念之一進程是操作系統(tǒng)中最重要的概念之一在現(xiàn)代計算機系統(tǒng)中,進程不僅是最基本在現(xiàn)代計算機系統(tǒng)中,進程不僅是最基本的并發(fā)執(zhí)行單位,而且也是分配資源、交的并發(fā)執(zhí)行單位,而且也是分配資源、交換信息的基本單位。而進程管理則是操作換信息的基本單位。而進程管理則是操作系統(tǒng)中最重要且最復雜的管理。系統(tǒng)中最重要且最復雜的管理。 2 前趨圖前趨圖一一 程序的順序執(zhí)行與特征程序的順序執(zhí)行與特征1 程序的順序執(zhí)行程序的順序執(zhí)行 一個程序通常可分成若干個程序段,它們必須一個程序通常可分成若干個程序段,它們必須按照某種先后次序執(zhí)行,僅當前一操作執(zhí)行完后,按照某種

2、先后次序執(zhí)行,僅當前一操作執(zhí)行完后,才能執(zhí)行后繼操作。才能執(zhí)行后繼操作。C1P1I1C1P1I1C1P1I2C2P2 程序順序執(zhí)行時的特征程序順序執(zhí)行時的特征(1)順序性。)順序性。處理機的操作嚴格按照程序規(guī)定的順序執(zhí)處理機的操作嚴格按照程序規(guī)定的順序執(zhí)行,即只有前一操作結束后,才能啟動后一操作的執(zhí)行;行,即只有前一操作結束后,才能啟動后一操作的執(zhí)行;(2)封閉性。)封閉性。程序在封閉的環(huán)境下運行,并獨占全機,程序在封閉的環(huán)境下運行,并獨占全機,因此機內資源的狀態(tài)只有運行程序的操作才能改變它,其因此機內資源的狀態(tài)只有運行程序的操作才能改變它,其執(zhí)行結果不受外界因素的影響;執(zhí)行結果不受外界因素的

3、影響;(3)可再現(xiàn)性。)可再現(xiàn)性。只要程序執(zhí)行時環(huán)境和初始條件相同,只要程序執(zhí)行時環(huán)境和初始條件相同,程序經多次運行后所得的結果必然相同。程序經多次運行后所得的結果必然相同。514236789 二二 前趨圖的定義前趨圖的定義 前趨圖是一個有向無環(huán)圖,記為前趨圖是一個有向無環(huán)圖,記為DAG。如圖所示:。如圖所示:有向無環(huán)圖有向無環(huán)圖123456789 三三 程序的并發(fā)執(zhí)行與特征程序的并發(fā)執(zhí)行與特征 1 雖然對于一個程序的輸入、計算和打印必須順序執(zhí)行,雖然對于一個程序的輸入、計算和打印必須順序執(zhí)行,但在對一批程序進行處理時,則可使上述三種操作并發(fā)執(zhí)行,但在對一批程序進行處理時,則可使上述三種操作并

4、發(fā)執(zhí)行,以提高系統(tǒng)的吞吐量。例如,輸入程序在輸入第三個程序以提高系統(tǒng)的吞吐量。例如,輸入程序在輸入第三個程序(I3)的同時,計算程序可以正在對第二個程序進行計算)的同時,計算程序可以正在對第二個程序進行計算(C2),而打印程序正在打印第一個程序(),而打印程序正在打印第一個程序(1)的計算結果。)的計算結果。如下圖所示:如下圖所示:I I1 1I I2 2I I3 3I I4 4C C1 1C C2 2C C3 3C C4 4P P1 1P P2 2P P3 3P P4 4程序段并發(fā)執(zhí)行的有向圖程序段并發(fā)執(zhí)行的有向圖 程序的并發(fā)執(zhí)行程序的并發(fā)執(zhí)行(concurrence) 指兩個或多個指兩個或

5、多個事件在同一時間間隔內發(fā)生事件在同一時間間隔內發(fā)生。在多在多道程序環(huán)境下,并發(fā)是指宏觀上在一段時間內有多道程道程序環(huán)境下,并發(fā)是指宏觀上在一段時間內有多道程序在同時運行,而微觀上這些程序是在交替地執(zhí)行。序在同時運行,而微觀上這些程序是在交替地執(zhí)行。 (并行(并行(parallel) 指兩個或多個事件在指兩個或多個事件在同一時刻進行同一時刻進行,例如,在具有中斷的計算機系統(tǒng)中,例如,在具有中斷的計算機系統(tǒng)中,CPU可以和可以和I/O設備并行執(zhí)行。設備并行執(zhí)行。 程序的并發(fā)執(zhí)行雖然提高了系統(tǒng)的吞吐量,但也產生程序的并發(fā)執(zhí)行雖然提高了系統(tǒng)的吞吐量,但也產生了下述一些新特征:了下述一些新特征: 程序

6、并發(fā)執(zhí)行所帶來的影響(特征)程序并發(fā)執(zhí)行所帶來的影響(特征)()間斷性()間斷性 相互制約將導致并發(fā)程序具有相互制約將導致并發(fā)程序具有“執(zhí)行暫執(zhí)行暫停執(zhí)行停執(zhí)行”這種間斷性的活動規(guī)律這種間斷性的活動規(guī)律。()失去封閉性()失去封閉性 程序在并發(fā)執(zhí)行時,是多個程序共程序在并發(fā)執(zhí)行時,是多個程序共享一臺機器,因而機內資源的狀態(tài)將由多個程序來改變,因享一臺機器,因而機內資源的狀態(tài)將由多個程序來改變,因此使程序的運行已失去了封閉性,這樣,某程序在執(zhí)行時,此使程序的運行已失去了封閉性,這樣,某程序在執(zhí)行時,也必然會受到其他程序的影響,例如,當處理機資源被其他也必然會受到其他程序的影響,例如,當處理機資源

7、被其他程序占有時,某程序必須等程序占有時,某程序必須等 ()不可再現(xiàn)性()不可再現(xiàn)性 程序在并發(fā)執(zhí)行時,也將失去其可再現(xiàn)性。例程序在并發(fā)執(zhí)行時,也將失去其可再現(xiàn)性。例如,有兩個循環(huán)程序如,有兩個循環(huán)程序A和和B,它們共享一個變量,它們共享一個變量n。程序。程序A每執(zhí)行一次時都要做每執(zhí)行一次時都要做n:=n+1操作;程序操作;程序B則每執(zhí)行一次都要執(zhí)行則每執(zhí)行一次都要執(zhí)行print(n)操作,然后再將)操作,然后再將N置成置成“”。如下程序段所示。如下程序段所示:var n:integer;begin n:=0; cobeginprogram A: begin repeat n:=n+1; re

8、mainder of program A until false end;program B: begin repeat print n; n:=0; remainder of program B until false end; coendend; 22 進程的基本概念進程的基本概念 由上所述可知,程序并發(fā)執(zhí)行時,產生了一些新特征,由上所述可知,程序并發(fā)執(zhí)行時,產生了一些新特征,致使一般的程序不能并發(fā)執(zhí)行。例如,程序在執(zhí)行中一旦致使一般的程序不能并發(fā)執(zhí)行。例如,程序在執(zhí)行中一旦受阻而停下來時,系統(tǒng)無法保留該程序的現(xiàn)場,因而也就受阻而停下來時,系統(tǒng)無法保留該程序的現(xiàn)場,因而也就無法再恢復該程序

9、的現(xiàn)場并以繼續(xù)執(zhí)行。為了使程序在多無法再恢復該程序的現(xiàn)場并以繼續(xù)執(zhí)行。為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)執(zhí)行的程序加以控道程序環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)執(zhí)行的程序加以控制和描述,而專門為之配置了一個稱為制和描述,而專門為之配置了一個稱為“進程控制塊進程控制塊”的數(shù)的數(shù)據(jù)結構。其中,存放了進程標識符、進程運行的當前狀態(tài)、據(jù)結構。其中,存放了進程標識符、進程運行的當前狀態(tài)、程序和數(shù)據(jù)的地址,以及能保存該程序運行時程序和數(shù)據(jù)的地址,以及能保存該程序運行時CPU的環(huán)境的環(huán)境信息。由程序段、數(shù)據(jù)段及進程控制塊三部分構成了進程信息。由程序段、數(shù)據(jù)段及進程控制塊三部分構成了進程的實體。的實體

10、。一、進程的定義和特征一、進程的定義和特征 1. 進程的定義進程的定義 至此,已知程序并發(fā)執(zhí)行產生了一系列新特點,為了能對并發(fā)至此,已知程序并發(fā)執(zhí)行產生了一系列新特點,為了能對并發(fā)程序的執(zhí)行加以描述而引入了進程的概念。曾有許多人從不同角度程序的執(zhí)行加以描述而引入了進程的概念。曾有許多人從不同角度對進程下過各種定義,其中較典型的進程定義有:對進程下過各種定義,其中較典型的進程定義有: 進程是程序的一次執(zhí)行。進程是程序的一次執(zhí)行。 進程是一個程序及其數(shù)據(jù),在處理機上順序執(zhí)行時所發(fā)生的活進程是一個程序及其數(shù)據(jù),在處理機上順序執(zhí)行時所發(fā)生的活動。動。 進程是程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行

11、資源進程是程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調度的一個獨立單位。分配和調度的一個獨立單位。 進程是可并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集合上的運行過程。進程是可并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集合上的運行過程。 第三個定義比較準確,它包含了進程的主要特征。這里,我們第三個定義比較準確,它包含了進程的主要特征。這里,我們在該定義的基礎上加以修改后,可把在該定義的基礎上加以修改后,可把進程定義為:進程是程序的一進程定義為:進程是程序的一次執(zhí)行過程,是系統(tǒng)進行資源分配和調度的一個獨立單位,動態(tài)產次執(zhí)行過程,是系統(tǒng)進行資源分配和調度的一個獨立單位,動態(tài)產生和動態(tài)消亡,它可以和其他程序并發(fā)執(zhí)行。生和動

12、態(tài)消亡,它可以和其他程序并發(fā)執(zhí)行。2進程的特征進程的特征 進程和程序是兩個截然不同的概念。進程具有五個基本特進程和程序是兩個截然不同的概念。進程具有五個基本特征,而程序則沒有。征,而程序則沒有。(1) 動態(tài)性動態(tài)性 進程的實質是程序的一次執(zhí)行過程,因此,動態(tài)進程的實質是程序的一次執(zhí)行過程,因此,動態(tài)性是進程的最基本特征。動態(tài)性還表現(xiàn)為:性是進程的最基本特征。動態(tài)性還表現(xiàn)為:“它由創(chuàng)建而產生,它由創(chuàng)建而產生,由調度而執(zhí)行,由撤消而消亡由調度而執(zhí)行,由撤消而消亡”??梢姡M程有一定的生命期,。可見,進程有一定的生命期,而程序只是一組有序指令的集合,并存放于某種介質上,本身而程序只是一組有序指令的集

13、合,并存放于某種介質上,本身并無運動的含義,因此是靜態(tài)的。并無運動的含義,因此是靜態(tài)的。(2)并發(fā)性)并發(fā)性 這是指多個進程能在一段時間內同時運行,并發(fā)這是指多個進程能在一段時間內同時運行,并發(fā)性是進程的重要特征。引入進程的目的也正是為了使其程序能性是進程的重要特征。引入進程的目的也正是為了使其程序能和其他進程的程序并發(fā)執(zhí)行,而程序(沒有建立進程)是不能和其他進程的程序并發(fā)執(zhí)行,而程序(沒有建立進程)是不能并發(fā)執(zhí)行的(由于程序不反映執(zhí)行過程)。并發(fā)執(zhí)行的(由于程序不反映執(zhí)行過程)。(3) 獨立性獨立性 這是指進程是一個能獨立運行、獨立分這是指進程是一個能獨立運行、獨立分配資源和獨立調度的基本單

14、位,凡未建立進程的程序,配資源和獨立調度的基本單位,凡未建立進程的程序,都不能作為一個獨立的單位參加運行。都不能作為一個獨立的單位參加運行。(4)異步性)異步性 這是指進程按各自獨立的、不可預知這是指進程按各自獨立的、不可預知的速度向前推進,或說進程按異步方式運行。的速度向前推進,或說進程按異步方式運行。(5)結構特征)結構特征 為使進程能獨立運行,應為之配置為使進程能獨立運行,應為之配置一個稱為一個稱為“進程控制塊進程控制塊”的數(shù)據(jù)結構,簡稱的數(shù)據(jù)結構,簡稱PCB。這樣,。這樣,從結構上看,進程是由程序段、數(shù)據(jù)段及從結構上看,進程是由程序段、數(shù)據(jù)段及PCB三部分三部分組成,有人把這三部分稱為

15、組成,有人把這三部分稱為“進程映象進程映象”。(。(UNIX稱稱進程的映象)。進程的映象)。3 進程和程序的聯(lián)系與區(qū)別:進程和程序的聯(lián)系與區(qū)別: (1)聯(lián)系。程序是構成進程的組成部分之一,一個進程的運)聯(lián)系。程序是構成進程的組成部分之一,一個進程的運行目標是執(zhí)行它所對應的程序,如果沒有程序,進程就失去了行目標是執(zhí)行它所對應的程序,如果沒有程序,進程就失去了其實際存在的意義。從靜態(tài)的角度看,進程是由程序、數(shù)據(jù)和其實際存在的意義。從靜態(tài)的角度看,進程是由程序、數(shù)據(jù)和進程控制塊三部分組成的。進程控制塊三部分組成的。 (2)區(qū)別。程序是靜態(tài)的,而進程是動態(tài)的。進程既是程序)區(qū)別。程序是靜態(tài)的,而進程是

16、動態(tài)的。進程既是程序的執(zhí)行過程,因而進程是有生命期的,有誕生,亦有消亡。因的執(zhí)行過程,因而進程是有生命期的,有誕生,亦有消亡。因此,程序的存在是永久的,而進程的存在是暫時的,動態(tài)地產此,程序的存在是永久的,而進程的存在是暫時的,動態(tài)地產生和消亡。一個進程可以執(zhí)行一個或幾個程序,一個程序亦可生和消亡。一個進程可以執(zhí)行一個或幾個程序,一個程序亦可以構成多個進程。例如,一個編譯進程在運行時,要執(zhí)行詞法以構成多個進程。例如,一個編譯進程在運行時,要執(zhí)行詞法分析、語法分析、代碼生成和優(yōu)化等幾個程序,或者一個編譯分析、語法分析、代碼生成和優(yōu)化等幾個程序,或者一個編譯程序可以同時生成幾個編譯進程,為幾個用戶

17、服務。進程具有程序可以同時生成幾個編譯進程,為幾個用戶服務。進程具有創(chuàng)建其他進程的功能,被創(chuàng)建的進程稱為子進程,創(chuàng)建者稱為創(chuàng)建其他進程的功能,被創(chuàng)建的進程稱為子進程,創(chuàng)建者稱為父進程,從而構成進程家族。父進程,從而構成進程家族。二、進程的狀態(tài)及其轉換二、進程的狀態(tài)及其轉換 進程在運行中不斷地改變其運行狀態(tài)。通常,一個運行進程進程在運行中不斷地改變其運行狀態(tài)。通常,一個運行進程必須具有以下三種基本狀態(tài):必須具有以下三種基本狀態(tài): 1 進程的基本狀態(tài)進程的基本狀態(tài) (由進程運行的間斷性,決定了進程至少具由進程運行的間斷性,決定了進程至少具有下述三種基本狀態(tài)有下述三種基本狀態(tài))就緒狀態(tài)就緒狀態(tài) 當進

18、程已分配到除當進程已分配到除CPU以外的所有必要的資源后,以外的所有必要的資源后,只要能再獲得處理機,便能立即執(zhí)行,把進程這時的狀態(tài)稱為只要能再獲得處理機,便能立即執(zhí)行,把進程這時的狀態(tài)稱為就緒狀態(tài)。在一個系統(tǒng)中,可以有多個進程同時處于就緒狀態(tài),就緒狀態(tài)。在一個系統(tǒng)中,可以有多個進程同時處于就緒狀態(tài),通常把它們排成一個隊列,稱為就緒隊列。通常把它們排成一個隊列,稱為就緒隊列。執(zhí)行狀態(tài)執(zhí)行狀態(tài) 指進程已獲得處理機,其程序正在執(zhí)行。在單處理指進程已獲得處理機,其程序正在執(zhí)行。在單處理機系統(tǒng)中,只能有一個進程正在執(zhí)行狀態(tài)。機系統(tǒng)中,只能有一個進程正在執(zhí)行狀態(tài)。阻塞狀態(tài)阻塞狀態(tài) 進程因發(fā)生某事件(如請

19、求進程因發(fā)生某事件(如請求I/O、申請緩沖空間等)、申請緩沖空間等)而暫停執(zhí)行時的狀態(tài),亦即進程的執(zhí)行處于受到阻塞,故稱這而暫停執(zhí)行時的狀態(tài),亦即進程的執(zhí)行處于受到阻塞,故稱這種暫停狀態(tài)為阻塞狀態(tài),有時也稱為種暫停狀態(tài)為阻塞狀態(tài),有時也稱為“等待等待”狀態(tài),或狀態(tài),或“睡眠睡眠”狀狀態(tài)。通常將處于阻塞狀態(tài)的進程排成一個隊列,稱為阻塞隊列。態(tài)。通常將處于阻塞狀態(tài)的進程排成一個隊列,稱為阻塞隊列。2 進程狀態(tài)的轉換進程狀態(tài)的轉換 就緒就緒執(zhí)行執(zhí)行阻塞阻塞執(zhí)行執(zhí)行就緒就緒阻塞阻塞進程調度進程調度時間片用完時間片用完、請求請求I/O操作、操作、P操作操作I/O完成、完成、V操作操作掛起狀態(tài):掛起狀態(tài):

20、系統(tǒng)需要進程釋放某些資源。如系統(tǒng)內存空間不足,系統(tǒng)需要進程釋放某些資源。如系統(tǒng)內存空間不足,可用掛起原語將進程掛起,該進程從內存轉到外存,將活動狀態(tài)變可用掛起原語將進程掛起,該進程從內存轉到外存,將活動狀態(tài)變?yōu)閽炱馉顟B(tài),由就緒態(tài)掛起后轉換為就緒掛起;由阻塞態(tài)掛起稱為為掛起狀態(tài),由就緒態(tài)掛起后轉換為就緒掛起;由阻塞態(tài)掛起稱為 阻塞掛起。它們被激活后分別轉換為就緒態(tài)和阻塞態(tài)阻塞掛起。它們被激活后分別轉換為就緒態(tài)和阻塞態(tài)。退出退出完成完成就掛就掛 等掛等掛掛起掛起激活激活 掛起掛起激活激活 三、進程控制塊三、進程控制塊進程控制塊的作用進程控制塊的作用 為了描述和控制進程的運行為了描述和控制進程的運行

21、,隨時跟蹤和記錄各進程的變化情況,隨時跟蹤和記錄各進程的變化情況,以及掌握進程間的相互關系,系統(tǒng)為每個進程配置了一個數(shù)據(jù)結構以及掌握進程間的相互關系,系統(tǒng)為每個進程配置了一個數(shù)據(jù)結構,該數(shù)據(jù)結構被稱為進程控制塊該數(shù)據(jù)結構被稱為進程控制塊PCB(Process Control Block)。所謂)。所謂系統(tǒng)創(chuàng)建一個進程,就是由系統(tǒng)為某個程序設置一個系統(tǒng)創(chuàng)建一個進程,就是由系統(tǒng)為某個程序設置一個PCB,用于對,用于對該進程進行控制和管理。進程任務完成,由系統(tǒng)收回其該進程進行控制和管理。進程任務完成,由系統(tǒng)收回其PCB,該進,該進程便消亡。系統(tǒng)將根據(jù)某程便消亡。系統(tǒng)將根據(jù)某PCB而感知相應進程的存在

22、,故說而感知相應進程的存在,故說PCB是是進程存在的唯一標志。進程存在的唯一標志。2 進程控制塊中的內容進程控制塊中的內容 PCB中包含了進程的描述信息和控制信息。中包含了進程的描述信息和控制信息。主要有:進程標主要有:進程標識符、現(xiàn)行狀態(tài)、現(xiàn)場保留區(qū)、程序與數(shù)據(jù)地址、互斥與同步識符、現(xiàn)行狀態(tài)、現(xiàn)場保留區(qū)、程序與數(shù)據(jù)地址、互斥與同步機構、進程通信機構、進程優(yōu)先數(shù)、資源清單、鏈接字、家族機構、進程通信機構、進程優(yōu)先數(shù)、資源清單、鏈接字、家族聯(lián)系聯(lián)系 進程控制塊進程控制塊PCB是系統(tǒng)感知進程存在的唯一實是系統(tǒng)感知進程存在的唯一實體體。四、進程的組成四、進程的組成 進程由程序、數(shù)據(jù)和進程由程序、數(shù)據(jù)

23、和PCB三部分組成。三部分組成。PCB是是進程的進程的“靈魂靈魂”,由于進程控制塊中保存有進程的地,由于進程控制塊中保存有進程的地址信息,通過址信息,通過PCB可以得到該進程所對應的程序的可以得到該進程所對應的程序的存儲位置。程序和數(shù)據(jù)是進程的存儲位置。程序和數(shù)據(jù)是進程的“軀體軀體”。由于現(xiàn)代。由于現(xiàn)代操作系統(tǒng)提供程序共享的功能,這就要求程序是可操作系統(tǒng)提供程序共享的功能,這就要求程序是可重入程序,且與數(shù)據(jù)分離。所謂可重入程序是指重入程序,且與數(shù)據(jù)分離。所謂可重入程序是指“純純”代碼程序,即在運行過程中不修改自身。代碼程序,即在運行過程中不修改自身。 23 進程控制進程控制 進程和處理機管理的

24、一個重要任務是進進程和處理機管理的一個重要任務是進程控制。所謂程控制。所謂進程控制,進程控制,就是系統(tǒng)使用一些就是系統(tǒng)使用一些具有特定功能的程序段(內核)來創(chuàng)建、撤具有特定功能的程序段(內核)來創(chuàng)建、撤消進程以及完成進程各狀態(tài)間的轉換,從而消進程以及完成進程各狀態(tài)間的轉換,從而達到多進程高效率并發(fā)執(zhí)行和協(xié)調、實現(xiàn)資達到多進程高效率并發(fā)執(zhí)行和協(xié)調、實現(xiàn)資源共享的目的。即進程控制的主要任務是創(chuàng)源共享的目的。即進程控制的主要任務是創(chuàng)建和撤消進程,以及實現(xiàn)進程的狀態(tài)轉換等。建和撤消進程,以及實現(xiàn)進程的狀態(tài)轉換等。進程控制一般是由操作系統(tǒng)的內核來實現(xiàn)的。進程控制一般是由操作系統(tǒng)的內核來實現(xiàn)的。OS內核內

25、核 在進行層次設計時,往往指一些在進行層次設計時,往往指一些與硬件緊密相關的模塊或運行頻率較與硬件緊密相關的模塊或運行頻率較高的模塊以及為許多模塊公用的一些高的模塊以及為許多模塊公用的一些基本操作,安排在靠近硬件的層次中,基本操作,安排在靠近硬件的層次中,并使它們常駐內層,以提高并使它們常駐內層,以提高OS的運的運行效率,通常將這一部分稱為行效率,通常將這一部分稱為OS的的內核。亦即內核。亦即OS內核是內核是OS常駐內存的常駐內存的程序和數(shù)據(jù)。程序和數(shù)據(jù)。 一一 內核的基本功能內核的基本功能 內核包含系統(tǒng)支撐功能和資源管理功能中的許多基內核包含系統(tǒng)支撐功能和資源管理功能中的許多基本操作。本操作

26、。(1)中斷處理。)中斷處理。這是操作系統(tǒng)中內核的最基本功能,這是操作系統(tǒng)中內核的最基本功能,也是整個操作系統(tǒng)賴以活動的基礎。通常,內核只也是整個操作系統(tǒng)賴以活動的基礎。通常,內核只對中斷進行對中斷進行“有限的處理有限的處理”,然后便轉由有關進程繼,然后便轉由有關進程繼續(xù)處理;續(xù)處理;(2)進程控制和管理。)進程控制和管理。進程管理的任務有進程管理的任務有四個:進程的建立和撤消;進程狀態(tài)的轉換。系統(tǒng)四個:進程的建立和撤消;進程狀態(tài)的轉換。系統(tǒng)應能使進程從阻塞變?yōu)榫途w,把活動進程掛起或把應能使進程從阻塞變?yōu)榫途w,把活動進程掛起或把掛起的進程激活;進程調度。進行處理機的重新分掛起的進程激活;進程調

27、度。進行處理機的重新分配;控制進程的并發(fā)執(zhí)行。保證進程間的同步,實配;控制進程的并發(fā)執(zhí)行。保證進程間的同步,實現(xiàn)相互全作進程間的通信。現(xiàn)相互全作進程間的通信。(3)資源管理中的基本)資源管理中的基本操作。操作。包括對時鐘、包括對時鐘、I/O設備和文件系統(tǒng)進行控制和設備和文件系統(tǒng)進行控制和管理的基本操作。管理的基本操作。特權指令特權指令 特權指令是指只允許操作系統(tǒng)使用,而不允許一般特權指令是指只允許操作系統(tǒng)使用,而不允許一般用戶使用的指令。如啟動用戶使用的指令。如啟動I/O設備的指令、取寄取器狀態(tài)指令及設備的指令、取寄取器狀態(tài)指令及對系統(tǒng)安全有影響的指令等。這些指令如果允許用戶隨便使用,對系統(tǒng)安

28、全有影響的指令等。這些指令如果允許用戶隨便使用,就可能使系統(tǒng)陷入混亂。就可能使系統(tǒng)陷入混亂。非特權指令非特權指令 特權指令以外的指令。非特權指令的執(zhí)行不影特權指令以外的指令。非特權指令的執(zhí)行不影響其他用戶以及系統(tǒng),如算術運算指令、邏輯運算指令、取操響其他用戶以及系統(tǒng),如算術運算指令、邏輯運算指令、取操作數(shù)指令等。作數(shù)指令等。處理機的兩種執(zhí)行狀態(tài),用它們來區(qū)分某程序是否享有特權。處理機的兩種執(zhí)行狀態(tài),用它們來區(qū)分某程序是否享有特權。核心態(tài)(管態(tài))核心態(tài)(管態(tài)) 計算機的一種工作方式,在此方式下,可計算機的一種工作方式,在此方式下,可以執(zhí)行任何指令,可以訪問全部主存。以執(zhí)行任何指令,可以訪問全部主

29、存。OS在核心態(tài)下運行。在核心態(tài)下運行。4 用戶態(tài)(目態(tài))用戶態(tài)(目態(tài)) 計算機的另一種工作方式,在此方式下,不計算機的另一種工作方式,在此方式下,不允許執(zhí)行特權指令,只允許訪問受限定的主存。用戶程序或其允許執(zhí)行特權指令,只允許訪問受限定的主存。用戶程序或其它系統(tǒng)程序在目態(tài)下運行。它系統(tǒng)程序在目態(tài)下運行。5 原語(原語(primitive) 完成某一特定功能的程序段,其執(zhí)行是完成某一特定功能的程序段,其執(zhí)行是不可分割的。換言之,在一個操作中的所有動作,要么全做,不可分割的。換言之,在一個操作中的所有動作,要么全做,要么全不做。原語可分為兩類:一類是機器指令級的,其特要么全不做。原語可分為兩類:

30、一類是機器指令級的,其特點是執(zhí)行期間不允許中斷;另一類是功能級的,其特點是人點是執(zhí)行期間不允許中斷;另一類是功能級的,其特點是人作為原語的程序段不允許并發(fā)執(zhí)行。這兩類原語都在系統(tǒng)態(tài)作為原語的程序段不允許并發(fā)執(zhí)行。這兩類原語都在系統(tǒng)態(tài)下執(zhí)行,且都是為了完成某個系統(tǒng)管理所需要的功能和被高下執(zhí)行,且都是為了完成某個系統(tǒng)管理所需要的功能和被高層軟件所調用。進程控制由原語實現(xiàn)。層軟件所調用。進程控制由原語實現(xiàn)。二、進程的創(chuàng)建和撤消原語二、進程的創(chuàng)建和撤消原語 1 創(chuàng)建原語創(chuàng)建原語 一個進程可借助于創(chuàng)建原語來創(chuàng)建一個新進程。創(chuàng)建一個進程可借助于創(chuàng)建原語來創(chuàng)建一個新進程。創(chuàng)建一個新進程的主要工作是:一個新進

31、程的主要工作是: 申請一空閑申請一空閑PCB無空閑無空閑PCB,則創(chuàng)建失敗;否則產,則創(chuàng)建失??;否則產生生PID(進程標識)(進程標識)申請必要的資源申請必要的資源初始化初始化PCB插插入就緒隊列入就緒隊列 2 撤消進程原語撤消進程原語找出被撤消進程的找出被撤消進程的PCB該進程若正在執(zhí)行,則終止該該進程若正在執(zhí)行,則終止該進行的執(zhí)行進行的執(zhí)行該進程若有子進程,則撤消其所有子進程該進程若有子進程,則撤消其所有子進程將該進程所擁有的全部資源,歸還給父進程或系統(tǒng)將該進程所擁有的全部資源,歸還給父進程或系統(tǒng)將被撤消進程的將被撤消進程的PCB從所在隊列(或鏈表)中清除,放從所在隊列(或鏈表)中清除,放

32、回到空閑回到空閑PCB隊列。隊列。三、進程的阻塞和喚醒原語三、進程的阻塞和喚醒原語進程的阻塞原語進程的阻塞原語 正在執(zhí)行的進程,當出現(xiàn)請求操作系統(tǒng)服務、啟動某種操作、正在執(zhí)行的進程,當出現(xiàn)請求操作系統(tǒng)服務、啟動某種操作、新數(shù)據(jù)尚未到達、無新工作可做等事件時,由于無法繼續(xù)運行,新數(shù)據(jù)尚未到達、無新工作可做等事件時,由于無法繼續(xù)運行,于是自己便通過調用于是自己便通過調用block原語,把自己阻塞起來??梢?,進程的原語,把自己阻塞起來??梢?,進程的阻塞是進程自身的一種主動行為。進入阻塞是進程自身的一種主動行為。進入block過程后,由于此時進過程后,由于此時進程還在執(zhí)行,故而應先立即停止執(zhí)行,把進程

33、控制塊中的現(xiàn)行狀程還在執(zhí)行,故而應先立即停止執(zhí)行,把進程控制塊中的現(xiàn)行狀態(tài)由態(tài)由“執(zhí)行執(zhí)行”改為改為“阻塞阻塞”,并將它插入到阻塞隊列。若系統(tǒng)中設置,并將它插入到阻塞隊列。若系統(tǒng)中設置了由于不同事件而阻塞的多個阻塞隊列,則應將該進程插入到具了由于不同事件而阻塞的多個阻塞隊列,則應將該進程插入到具有相同事件的阻塞(等待)隊列,最后,轉進程調度程序進行重有相同事件的阻塞(等待)隊列,最后,轉進程調度程序進行重新調度,將處理機分配給另一就緒進程,并進行切換,即保留被新調度,將處理機分配給另一就緒進程,并進行切換,即保留被阻塞進程的處理機狀態(tài)在阻塞進程的處理機狀態(tài)在PCB中,按新進程中,按新進程PCB

34、中的處理機狀態(tài)中的處理機狀態(tài)設置設置CPU狀態(tài)。狀態(tài)。保存保存CPU現(xiàn)場現(xiàn)場置該進程的狀態(tài)置該進程的狀態(tài)被阻塞進程入等待隊列被阻塞進程入等待隊列轉進轉進程調度。程調度。2 進程的喚醒原語進程的喚醒原語 當被阻塞進程所期待的事件出現(xiàn),如當被阻塞進程所期待的事件出現(xiàn),如I/O操作完成,其所操作完成,其所期待的數(shù)據(jù)已經到達,則由有關進程(比如,用完并釋放了該期待的數(shù)據(jù)已經到達,則由有關進程(比如,用完并釋放了該I/O設備的進程)調用喚醒原語設備的進程)調用喚醒原語weakup(),將等待該事件的進,將等待該事件的進程喚醒。喚醒原語的操作有:先把被阻塞進程從等待該事件的程喚醒。喚醒原語的操作有:先把被

35、阻塞進程從等待該事件的阻塞隊列中移出,將其阻塞隊列中移出,將其PCB的現(xiàn)行狀態(tài)由阻塞改為就緒,然后的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該進程插到就緒隊列中。再將該進程插到就緒隊列中。 從等待隊列中摘下被喚醒進程從等待隊列中摘下被喚醒進程置進程的狀態(tài)置進程的狀態(tài)將被喚醒將被喚醒進程送入就緒隊列進程送入就緒隊列轉進程調度或返回。轉進程調度或返回。 應當指出:應當指出:block原語和原語和weakup原語是一對功能剛好相反原語是一對功能剛好相反的原語,因此,如果在某進程中調用了阻塞原語,則必須在與的原語,因此,如果在某進程中調用了阻塞原語,則必須在與之相合作的另一進程或其他相關進程中調用喚醒原語來喚

36、醒它,之相合作的另一進程或其他相關進程中調用喚醒原語來喚醒它,否則被阻塞進程將會因不能被喚醒而長久地處于阻塞狀態(tài),從否則被阻塞進程將會因不能被喚醒而長久地處于阻塞狀態(tài),從而再無運行機會。而再無運行機會。 24 進程的互斥與同步進程的互斥與同步一、一、進程間的制約關系進程間的制約關系 在多道程序系統(tǒng)中,由于資源共享與進程合作,使諸進在多道程序系統(tǒng)中,由于資源共享與進程合作,使諸進程之間可能產生兩種形式的制約關系:程之間可能產生兩種形式的制約關系:間接相互制約間接相互制約 這種制約主要源于資源共享這種制約主要源于資源共享。例如,有兩。例如,有兩進程和,如果在進程提出打印請求時,系統(tǒng)已將打印進程和,

37、如果在進程提出打印請求時,系統(tǒng)已將打印機分配給進程,則進程阻塞;一旦進程將打印機釋放,機分配給進程,則進程阻塞;一旦進程將打印機釋放,也就使進程由阻塞改為就緒狀態(tài)。也就使進程由阻塞改為就緒狀態(tài)。直接相互制約直接相互制約 這種制約主要源于進程合作。這種制約主要源于進程合作。例如,有一例如,有一輸入進程輸入進程A通過單緩沖向進程通過單緩沖向進程B提供數(shù)據(jù)。當該緩沖空時,計提供數(shù)據(jù)。當該緩沖空時,計算進程因不能獲得所需數(shù)據(jù)而阻塞,當進程算進程因不能獲得所需數(shù)據(jù)而阻塞,當進程A把數(shù)據(jù)送入把數(shù)據(jù)送入緩沖時,便將緩沖時,便將B喚醒;反之,進程因不能再向緩沖區(qū)投放喚醒;反之,進程因不能再向緩沖區(qū)投放數(shù)據(jù)而阻

38、塞,當進程數(shù)據(jù)而阻塞,當進程B將緩沖區(qū)內數(shù)據(jù)取走時喚醒將緩沖區(qū)內數(shù)據(jù)取走時喚醒A。 可見,諸進程在并發(fā)執(zhí)行時,必須按照一定的次序執(zhí)可見,諸進程在并發(fā)執(zhí)行時,必須按照一定的次序執(zhí)行。進程同步的定義如下:行。進程同步的定義如下: 進程同步進程同步 指多個相關進程在執(zhí)行次序上的協(xié)調。用于指多個相關進程在執(zhí)行次序上的協(xié)調。用于保證這種關系的相應機制稱為進程的同步機制。保證這種關系的相應機制稱為進程的同步機制。例如,對于共享一個緩沖區(qū)的輸入進程和計算進程,當輸例如,對于共享一個緩沖區(qū)的輸入進程和計算進程,當輸入進程未將數(shù)據(jù)送入緩沖區(qū)時,計算進程不能開動計算;入進程未將數(shù)據(jù)送入緩沖區(qū)時,計算進程不能開動計

39、算;同樣,若計算進程未從緩沖區(qū)中取走數(shù)據(jù)時,輸入進程不同樣,若計算進程未從緩沖區(qū)中取走數(shù)據(jù)時,輸入進程不能再啟動下一次的輸入。能再啟動下一次的輸入。緩沖區(qū)緩沖區(qū)輸入進程輸入進程計算進程計算進程二、臨界區(qū)(二、臨界區(qū)(critical section)1. 臨界資源:一次僅允許一個進程使用的資源。臨界資源:一次僅允許一個進程使用的資源。例如,有兩個進例如,有兩個進程共享一個變量程共享一個變量count:(:(R1和和R2是處理機中的寄存器):是處理機中的寄存器): 當兩個進程按下述順序執(zhí)行時當兩個進程按下述順序執(zhí)行時 但若但若P1和和P2按另一種順序對按另一種順序對count進行修改進行修改 P

40、1: R1:=count; P1: R1:=count; R1:=R1+1; P2: R2:=count; count:=R1; P1: R1:=R1+1; count:=R1; P2: R2:=count; P2: R2:=R2+1; count:=R2; R2:=R2+1; 雖然雖然P1和和P2都各自對都各自對count作了作了加加 count:=R2; 1操作,但最后的操作,但最后的count卻只增加了卻只增加了1。亦亦 其結果使其結果使count增加了增加了2; 即發(fā)生了與執(zhí)行順即發(fā)生了與執(zhí)行順序有關的錯誤。序有關的錯誤。 2. 臨界區(qū):訪問臨界資源的那段代碼。臨界區(qū):訪問臨界資源的那

41、段代碼。諸進程在訪問諸進程在訪問臨界資源時,必須互斥。我們把每個進程中訪問臨界資源的那臨界資源時,必須互斥。我們把每個進程中訪問臨界資源的那段代碼稱為臨界區(qū)。為了實現(xiàn)對臨界區(qū)的互斥訪問,應保證諸段代碼稱為臨界區(qū)。為了實現(xiàn)對臨界區(qū)的互斥訪問,應保證諸進程互斥地進入自己的臨界區(qū)。為此,每個進程在進入其臨界進程互斥地進入自己的臨界區(qū)。為此,每個進程在進入其臨界區(qū)前,必須先提出申請,經允許后方可進入。稱用以實現(xiàn)此請區(qū)前,必須先提出申請,經允許后方可進入。稱用以實現(xiàn)此請求的代碼段為進入?yún)^(qū)。顯然,在臨界區(qū)后還應跟上一段退出區(qū)。求的代碼段為進入?yún)^(qū)。顯然,在臨界區(qū)后還應跟上一段退出區(qū)。進程代碼中的其它部分稱為

42、剩留區(qū)。這樣一個循環(huán)進程可描述進程代碼中的其它部分稱為剩留區(qū)。這樣一個循環(huán)進程可描述為為repeat entry section critical section exit section remainder sectionuntil false 3 進程互斥進程互斥 不允許多于一個事件在同一時刻發(fā)生。不允許多于一個事件在同一時刻發(fā)生。亦即指在多道程序環(huán)境下,每次只允許一個進程對亦即指在多道程序環(huán)境下,每次只允許一個進程對臨界資源進行訪問。為此必須使諸進程互斥地進入臨界資源進行訪問。為此必須使諸進程互斥地進入自己的臨界區(qū)。自己的臨界區(qū)。 綜上,諸進程對臨界資源的訪問必須互斥。我綜上,諸進程對臨

43、界資源的訪問必須互斥。我們把每個進程中訪問臨界資源的那段代碼稱為臨界們把每個進程中訪問臨界資源的那段代碼稱為臨界區(qū)。顯然,若能保證諸進程互斥進入自己的臨界區(qū),區(qū)。顯然,若能保證諸進程互斥進入自己的臨界區(qū),便可實現(xiàn)它對臨界資源的互斥訪問。進程互斥也可便可實現(xiàn)它對臨界資源的互斥訪問。進程互斥也可被稱作是一種特殊形式的同步。被稱作是一種特殊形式的同步。同步機制應遵循的準則同步機制應遵循的準則 為實現(xiàn)進程互斥與同步,系統(tǒng)中應設置專門的同步機為實現(xiàn)進程互斥與同步,系統(tǒng)中應設置專門的同步機制,所有同步機制都應遵循下述四條準則:制,所有同步機制都應遵循下述四條準則:() 空閑讓進空閑讓進 臨界資源空閑時,允

44、許一個請求進入臨界臨界資源空閑時,允許一個請求進入臨界區(qū)的進程立即進入自己的臨界區(qū),以有效地利用臨界資源。區(qū)的進程立即進入自己的臨界區(qū),以有效地利用臨界資源。() 忙則等待忙則等待 當臨界資源正被訪問時,其他試圖進入臨當臨界資源正被訪問時,其他試圖進入臨界區(qū)的進程必須等待,以保證對臨界資源的互斥訪問。界區(qū)的進程必須等待,以保證對臨界資源的互斥訪問。()有限等待()有限等待 對要求訪問臨界資源的進程,應能在有對要求訪問臨界資源的進程,應能在有限的時間內進入自己的臨界區(qū),以免陷入限的時間內進入自己的臨界區(qū),以免陷入“死等死等”狀態(tài)。狀態(tài)。()() 讓權等待讓權等待 當進程不能進入臨界區(qū)時,應立即釋

45、放當進程不能進入臨界區(qū)時,應立即釋放處理機,以免進程處理機,以免進程“忙等忙等”。信號量信號量 管理相應的臨界區(qū)的公有資源,它代管理相應的臨界區(qū)的公有資源,它代表可用資源實體。表可用資源實體。(1)經典信號量機制經典信號量機制 三、信號量機制三、信號量機制 1. 信號量(信號量(semaphore)(2) 計錄型信號量機制計錄型信號量機制 計數(shù)信號量機制是一個不具有計數(shù)信號量機制是一個不具有“忙等忙等”現(xiàn)象的進程同步現(xiàn)象的進程同步機制。計錄型信號量是一個記錄型的數(shù)據(jù)結構,包含兩個機制。計錄型信號量是一個記錄型的數(shù)據(jù)結構,包含兩個數(shù)據(jù)項,它可描述為:數(shù)據(jù)項,它可描述為: type semapho

46、re=record value:integer; L:list of process; end相應地,相應地,P(S)和)和V(S)操作可描述為:)操作可描述為:procedure P(S) var S:semaphore; begin S.value:=S.value-1; if S.value0 then block(S.L) end;procedure V(S) var S:semaphore; begin S.value:=S.value+1; if S.value0 then weakup(S.L) end;var mutex:semaphore:=1; begin cobegin

47、process1:begin repeat P(mutex); critical secion; V(mutex); remainder section; until false endprocess2: begin repeat P(mutex); critical section; V(mutex); remainder section; until false end coendEnd 利用信號量實現(xiàn)進程互斥利用信號量實現(xiàn)進程互斥說明:說明:mutex為互斥信號量,其取值范圍為(為互斥信號量,其取值范圍為(1,0,-1););其中其中mutex=1表示進程表示進程1、進程、進程2都未進入

48、類名為都未進入類名為S的臨界區(qū),的臨界區(qū),mutex表示進程表示進程1或進程或進程2已進入類名為已進入類名為S的臨界區(qū),的臨界區(qū),mutex=-1表示進程表示進程1和進程和進程2中,一個進程已進入臨界區(qū),而另一個進程等待進入臨界區(qū)。中,一個進程已進入臨界區(qū),而另一個進程等待進入臨界區(qū)。若有若有n 個并發(fā)進程,有一個臨界資源,則信號量取值范圍個并發(fā)進程,有一個臨界資源,則信號量取值范圍-(n-1)1,n-1 表示阻塞進程的個數(shù)。表示阻塞進程的個數(shù)。 由此可見,在記錄型信號量機制中,如果由此可見,在記錄型信號量機制中,如果S.value的初值為,表示只的初值為,表示只允許一個進程訪問臨界資源,此時

49、的信號量便轉化為上述互斥信號量。允許一個進程訪問臨界資源,此時的信號量便轉化為上述互斥信號量。P(mutex)和)和V(mutex)必須成對地出現(xiàn)。)必須成對地出現(xiàn)。 P、V操作是不可分割的。操作是不可分割的。P、V操作操作“不可分割不可分割”的含義是指在同一個信的含義是指在同一個信號量上不能同時執(zhí)行一個以上的號量上不能同時執(zhí)行一個以上的P或或V操作,亦即一個操作,亦即一個P或或V操作的執(zhí)行必操作的執(zhí)行必須在另一個操作執(zhí)行完畢以后進行,否則會產生與時間有關的錯誤。須在另一個操作執(zhí)行完畢以后進行,否則會產生與時間有關的錯誤。缺少缺少P(mutex)將會引起系統(tǒng)混亂,不能保證對臨界資源的互斥訪問;

50、而將會引起系統(tǒng)混亂,不能保證對臨界資源的互斥訪問;而缺缺V(mutex)將會使該臨界資源永久不被釋放,從使而因等待該資源而阻將會使該臨界資源永久不被釋放,從使而因等待該資源而阻塞的進程不再被喚醒。塞的進程不再被喚醒。管程管程 用信號量可以實現(xiàn)進程間的同步與互斥,但信用信號量可以實現(xiàn)進程間的同步與互斥,但信號量的操作分散在各個進程中,不利于系統(tǒng)對號量的操作分散在各個進程中,不利于系統(tǒng)對臨界資源的集中管理。臨界資源的集中管理。 管程是指把信號量與操作原語封裝在一個對象管程是指把信號量與操作原語封裝在一個對象內部,即將共享資源以及針對共享資源的所有內部,即將共享資源以及針對共享資源的所有操作集中在一

51、個模塊中。操作集中在一個模塊中。 管程可以用函數(shù)庫的形式實現(xiàn),一個管程就是管程可以用函數(shù)庫的形式實現(xiàn),一個管程就是一個基本程序單位,可以單獨編譯。一個基本程序單位,可以單獨編譯。 所有進程要訪問臨界資源時,要經過管程才能所有進程要訪問臨界資源時,要經過管程才能進入,而管程每次只允許一個進程進入,從而進入,而管程每次只允許一個進程進入,從而實現(xiàn)了進程互斥。實現(xiàn)了進程互斥。 25 進程通信進程通信一、一、 低級和高級進程通信方式低級和高級進程通信方式 雖然一個作業(yè)可分為若干個能并發(fā)執(zhí)行的進程,雖然一個作業(yè)可分為若干個能并發(fā)執(zhí)行的進程,但它們應經常保持聯(lián)系,以便協(xié)調一致地完成指定任務。但它們應經常保

52、持聯(lián)系,以便協(xié)調一致地完成指定任務。這種聯(lián)系是指在進程之間交換一定數(shù)量的信息。信息量這種聯(lián)系是指在進程之間交換一定數(shù)量的信息。信息量可多可少,多是指能交換成千個數(shù)據(jù),少則僅是一個狀可多可少,多是指能交換成千個數(shù)據(jù),少則僅是一個狀態(tài)或數(shù)值。顯然,進程同步是一種簡單通信方式,進程態(tài)或數(shù)值。顯然,進程同步是一種簡單通信方式,進程通過修改信號量,可向另一進程表明臨界資源是否可用。通過修改信號量,可向另一進程表明臨界資源是否可用。在生產者消費者問題中,可由生產者進程向消費者進在生產者消費者問題中,可由生產者進程向消費者進程傳送一批消息,或者說,生產者通過緩沖池與消費者程傳送一批消息,或者說,生產者通過緩

53、沖池與消費者通信。應當指出,信號量機制作為同步工具是卓有成效通信。應當指出,信號量機制作為同步工具是卓有成效的,但作為通信工具則不夠理想,因為其效率甚低,因的,但作為通信工具則不夠理想,因為其效率甚低,因此,稱為低級通信方式。此,稱為低級通信方式。 1 低級進程通信低級進程通信 進程的互斥和同步可歸結為低級進程進程的互斥和同步可歸結為低級進程通信。在進程互斥中進程通過修改信號量,向其他進程通信。在進程互斥中進程通過修改信號量,向其他進程表明臨界資源是否可用;在生產者消費者問題中,生表明臨界資源是否可用;在生產者消費者問題中,生產者通過緩沖池與消費者通信。應當指出,信號量機制產者通過緩沖池與消費

54、者通信。應當指出,信號量機制作為同步工具是卓有成效的,但作為通信工具則不夠理作為同步工具是卓有成效的,但作為通信工具則不夠理想,主要表現(xiàn)在:想,主要表現(xiàn)在:()效率低()效率低 生產者每次只能向緩沖區(qū)中投放一個消生產者每次只能向緩沖區(qū)中投放一個消息,消費者每次只能從緩沖區(qū)中取得一個消息;息,消費者每次只能從緩沖區(qū)中取得一個消息;()通信對用戶不透明()通信對用戶不透明 即設置共享數(shù)據(jù)結構,數(shù)據(jù)即設置共享數(shù)據(jù)結構,數(shù)據(jù)的傳送、進程的互斥與同步都是由程序員去實現(xiàn),操作的傳送、進程的互斥與同步都是由程序員去實現(xiàn),操作系統(tǒng)只提供共享存儲器。系統(tǒng)只提供共享存儲器。 簡言之,這種通信方式的效率低,不方便,

55、故只適用簡言之,這種通信方式的效率低,不方便,故只適用于傳送少量信息的情況。于傳送少量信息的情況。 2. 高級進程通信高級進程通信 以較高的效率傳送大量數(shù)據(jù)以較高的效率傳送大量數(shù)據(jù)的一種通信方式。高級通信的目的不是為了控制進的一種通信方式。高級通信的目的不是為了控制進程的執(zhí)行速度,而是為了交換信息。在這種通信方程的執(zhí)行速度,而是為了交換信息。在這種通信方式中,程序員可直接利用系統(tǒng)提供的一組通信命令式中,程序員可直接利用系統(tǒng)提供的一組通信命令(通信原語),高效地傳送大量數(shù)據(jù),操作系統(tǒng)隱(通信原語),高效地傳送大量數(shù)據(jù),操作系統(tǒng)隱藏了實現(xiàn)通信的細節(jié),這大大簡化了通信程序編制藏了實現(xiàn)通信的細節(jié),這大

56、大簡化了通信程序編制上的復雜性。上的復雜性。高級通信原語不僅保證相互制約的進程之間的正確高級通信原語不僅保證相互制約的進程之間的正確關系,還同時實現(xiàn)了進程之間的信息交換。目前常關系,還同時實現(xiàn)了進程之間的信息交換。目前常用的高級通信機構有消息緩沖通信、管道通信和信用的高級通信機構有消息緩沖通信、管道通信和信箱通信。箱通信。二、進程通信的類型二、進程通信的類型(1)(1)共享存儲區(qū)共享存儲區(qū) 內存中開辟一個共享存儲區(qū)內存中開辟一個共享存儲區(qū), ,各進程通過各進程通過該儲存區(qū)進行通信該儲存區(qū)進行通信. .(2)(2)消息傳遞系統(tǒng)消息傳遞系統(tǒng) 通過通過osos提供的一組消息通信命令來實現(xiàn)信提供的一組

57、消息通信命令來實現(xiàn)信息的傳遞息的傳遞. . 直接直接通信方式通信方式:os:os提供提供sendsend和和receive receive 實現(xiàn)實現(xiàn). . 間接間接通信方式通信方式: :通過共享信箱來實現(xiàn)通過共享信箱來實現(xiàn). .(3) 管道通信管道通信 管道通信是由管道通信是由UNIX首創(chuàng)的,是一種重要的通信首創(chuàng)的,是一種重要的通信方式。方式。 管道通信以文件系統(tǒng)為基礎。管道通信以文件系統(tǒng)為基礎。所謂管道,就是所謂管道,就是連接兩個進程的一個打開的共享文件(連接兩個進程的一個打開的共享文件(pipes),專),專用于進程之間進行數(shù)據(jù)通信用于進程之間進行數(shù)據(jù)通信。發(fā)送進程可以源源不。發(fā)送進程可以

58、源源不斷地從管道一端寫入數(shù)據(jù)流,接收進程在需要時可斷地從管道一端寫入數(shù)據(jù)流,接收進程在需要時可以從管道的另一端讀出數(shù)據(jù)。在對管道文件進行讀以從管道的另一端讀出數(shù)據(jù)。在對管道文件進行讀寫操作時,發(fā)送進程和接收進程要實施正確的同步寫操作時,發(fā)送進程和接收進程要實施正確的同步和互斥,以確保通信的正確性。和互斥,以確保通信的正確性。管道通信的實質是管道通信的實質是利用外存來進行數(shù)據(jù)通信,故具有傳送數(shù)據(jù)量大的利用外存來進行數(shù)據(jù)通信,故具有傳送數(shù)據(jù)量大的優(yōu)點,但管道通信速度較慢。優(yōu)點,但管道通信速度較慢。 6 進程調度進程調度一、一、 調度的基本概念調度的基本概念 在多道程序環(huán)境下,進程數(shù)目往往多于處理在

59、多道程序環(huán)境下,進程數(shù)目往往多于處理機數(shù)目,致使它們爭用處理機。這就要求系統(tǒng)能按機數(shù)目,致使它們爭用處理機。這就要求系統(tǒng)能按某種算法,動態(tài)地把處理機分配給就緒隊列中的一某種算法,動態(tài)地把處理機分配給就緒隊列中的一個進程,使之執(zhí)行。個進程,使之執(zhí)行。分配處理機的任務是由進程調分配處理機的任務是由進程調度程序完成的。度程序完成的。由于處理機是最重要的計算機資源,由于處理機是最重要的計算機資源,提高處理機的利用率及改善系統(tǒng)性能(吞吐量、響提高處理機的利用率及改善系統(tǒng)性能(吞吐量、響應時間)在很大程序上取決于進程調度性能的好壞,應時間)在很大程序上取決于進程調度性能的好壞,因而進程調度便成為操作系統(tǒng)設

60、計的中心問題之一。因而進程調度便成為操作系統(tǒng)設計的中心問題之一。1 三級調度三級調度2 (1) 高級調度(宏觀調度)高級調度(宏觀調度) 又稱作業(yè)調度,又稱作業(yè)調度,如如幾幾分鐘才調度一次,且調度算法復雜。分鐘才調度一次,且調度算法復雜。(2)低級調度(微觀調度)低級調度(微觀調度) 又稱為進程調度。又稱為進程調度。(3)中級調度)中級調度 又稱進程對換,按一定算法在內存和又稱進程對換,按一定算法在內存和外存之間進行進程對換,外存之間進行進程對換,其目的是為了使內存緊其目的是為了使內存緊張的情況得以緩和。中級調度的主要工作是將內張的情況得以緩和。中級調度的主要工作是將內存中處于阻塞狀態(tài)的某些進

溫馨提示

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

評論

0/150

提交評論