計算機操作系統(tǒng)第二章ppt_第1頁
計算機操作系統(tǒng)第二章ppt_第2頁
計算機操作系統(tǒng)第二章ppt_第3頁
計算機操作系統(tǒng)第二章ppt_第4頁
計算機操作系統(tǒng)第二章ppt_第5頁
已閱讀5頁,還剩190頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第二章 進 程 管 理 第二章第二章 進程管理進程管理 2.1 2.1 進程的基本概念進程的基本概念 2.2 2.2 進程控制進程控制 2.3 2.3 進程同步進程同步 2.4 2.4 經(jīng)典進程的同步問題經(jīng)典進程的同步問題2.5 2.5 管程機制管程機制 2.6 2.6 進程通信進程通信 2.7 2.7 線程線程 第二章 進 程 管 理 n 程序的順序執(zhí)行和并發(fā)執(zhí)行程序的順序執(zhí)行和并發(fā)執(zhí)行n程序的執(zhí)行有兩種方式:程序的執(zhí)行有兩種方式:順序執(zhí)行和并發(fā)執(zhí)行順序執(zhí)行和并發(fā)執(zhí)行。 n順序執(zhí)行順序執(zhí)行是單道批處理系統(tǒng)的執(zhí)行方式,也用于是單道批處理系統(tǒng)的執(zhí)行方式,也用于簡單的單片機系統(tǒng);簡單的單片機系統(tǒng);

2、 n現(xiàn)在的操作系統(tǒng)多為并發(fā)執(zhí)行,具有許多新的特現(xiàn)在的操作系統(tǒng)多為并發(fā)執(zhí)行,具有許多新的特征。引入并發(fā)執(zhí)行的目的是為了提高資源利用率。征。引入并發(fā)執(zhí)行的目的是為了提高資源利用率。第二章 進 程 管 理 n在多道程序環(huán)境下,程序不能獨立運行。作為在多道程序環(huán)境下,程序不能獨立運行。作為資源分配和獨立運行的基本單位是進程。操作資源分配和獨立運行的基本單位是進程。操作系統(tǒng)所有的特征都是基于進程而體現(xiàn)的系統(tǒng)所有的特征都是基于進程而體現(xiàn)的n為了描述程序在并發(fā)執(zhí)行時對系統(tǒng)資源的共享,為了描述程序在并發(fā)執(zhí)行時對系統(tǒng)資源的共享,我們需要一個我們需要一個描述程序執(zhí)行時動態(tài)特征的概念,描述程序執(zhí)行時動態(tài)特征的概念,

3、這就是進程。這就是進程。n通常把這個正準備進入內(nèi)存的程序稱為通常把這個正準備進入內(nèi)存的程序稱為作業(yè)作業(yè),當這個作業(yè)進入內(nèi)存后我們把它稱為當這個作業(yè)進入內(nèi)存后我們把它稱為進程進程。n進程通常具有三種狀態(tài):運行狀態(tài)(正在使用進程通常具有三種狀態(tài):運行狀態(tài)(正在使用CPU)、阻塞狀態(tài)(等待輸入)、阻塞狀態(tài)(等待輸入/輸出)和就緒輸出)和就緒狀態(tài)(等待分配狀態(tài)(等待分配CPU)。)。第二章 進 程 管 理 n進程的特征進程的特征n動態(tài)性:進程具有動態(tài)的地址空間(數(shù)量和動態(tài)性:進程具有動態(tài)的地址空間(數(shù)量和內(nèi)容),地址空間上包括:內(nèi)容),地址空間上包括: n代碼(指令執(zhí)行和代碼(指令執(zhí)行和CPU狀態(tài)的改

4、變)狀態(tài)的改變) n數(shù)據(jù)(變量的生成和賦值)數(shù)據(jù)(變量的生成和賦值) n系統(tǒng)控制信息(進程控制塊的生成和刪除)系統(tǒng)控制信息(進程控制塊的生成和刪除) n獨立性:各進程的地址空間相互獨立,除非采獨立性:各進程的地址空間相互獨立,除非采用進程間通信手段;用進程間通信手段; n并發(fā)性、異步性:并發(fā)性、異步性:虛擬虛擬 n結(jié)構(gòu)化:代碼段、數(shù)據(jù)段和核心段(在地址空結(jié)構(gòu)化:代碼段、數(shù)據(jù)段和核心段(在地址空間中);程序文件中通常也劃分了代碼段和數(shù)間中);程序文件中通常也劃分了代碼段和數(shù)據(jù)段,而核心段通常就是據(jù)段,而核心段通常就是OS核心(由各個進核心(由各個進程共享,包括各進程的程共享,包括各進程的PCB)

5、第二章 進 程 管 理 n進程與程序的區(qū)別和相互關(guān)系進程與程序的區(qū)別和相互關(guān)系 :n(1)動態(tài)性和靜態(tài)性。)動態(tài)性和靜態(tài)性。 n(2)從結(jié)構(gòu)上看每個進程的實體都是由程序段和相)從結(jié)構(gòu)上看每個進程的實體都是由程序段和相應的數(shù)據(jù)段兩部分構(gòu)成的,這一特征與程序的含義相應的數(shù)據(jù)段兩部分構(gòu)成的,這一特征與程序的含義相近。近。n(3)一個進程可以涉及到一個或幾個程序的執(zhí)行;)一個進程可以涉及到一個或幾個程序的執(zhí)行;反之一程序可以對應多個進程,即同一程序段可在不反之一程序可以對應多個進程,即同一程序段可在不同數(shù)據(jù)集合上運行,可構(gòu)成不同的進程同數(shù)據(jù)集合上運行,可構(gòu)成不同的進程 。n(4)并發(fā)性。)并發(fā)性。 n

6、(5)進程具有創(chuàng)建其他進程的功能。)進程具有創(chuàng)建其他進程的功能。 n(6)操作系統(tǒng)中的每一個程序都是在一個進程現(xiàn)場)操作系統(tǒng)中的每一個程序都是在一個進程現(xiàn)場中運行的。中運行的。第二章 進 程 管 理 程序順序執(zhí)行的特征程序順序執(zhí)行的特征 :n順序性:按照程序結(jié)構(gòu)所指定的次序(可能順序性:按照程序結(jié)構(gòu)所指定的次序(可能有分支或循環(huán))有分支或循環(huán)) n封閉性:獨占全部資源,計算機的狀態(tài)只由封閉性:獨占全部資源,計算機的狀態(tài)只由于該程序的控制邏輯所決定于該程序的控制邏輯所決定n可再現(xiàn)性:初始條件相同則結(jié)果相同。如:可再現(xiàn)性:初始條件相同則結(jié)果相同。如:可通過空指令控制時間關(guān)系??赏ㄟ^空指令控制時間關(guān)

7、系。 第二章 進 程 管 理 2.1 進程的基本概念進程的基本概念 2.1.1 程序的順序執(zhí)行及其特征程序的順序執(zhí)行及其特征 1. 程序的順序執(zhí)行程序的順序執(zhí)行 僅當前一操作僅當前一操作(程序段程序段)執(zhí)行完后,才能執(zhí)行后執(zhí)行完后,才能執(zhí)行后繼操作。例如,在進行計算時,總須先輸入用戶的繼操作。例如,在進行計算時,總須先輸入用戶的程序和數(shù)據(jù),然后進行計算,最后才能打印計算結(jié)程序和數(shù)據(jù),然后進行計算,最后才能打印計算結(jié)果。果。 S1: a=x+y; S2: b=a-5; S3: c=b+1;第二章 進 程 管 理 圖圖 2-1 程序的順序執(zhí)行程序的順序執(zhí)行 (a) 程序的順序執(zhí)行(b) 三條語句的

8、順序執(zhí)行I1C1P1I2C2P2S1S2S3第二章 進 程 管 理 1程序的順序執(zhí)行及其特性程序的順序執(zhí)行及其特性 n由于各類軟件的出現(xiàn)及日益復雜化,使得由于各類軟件的出現(xiàn)及日益復雜化,使得程序設(shè)計的概念和方法有了很大的發(fā)展,程序設(shè)計的概念和方法有了很大的發(fā)展,在單道程序工作環(huán)境中,我們把一個在單道程序工作環(huán)境中,我們把一個“程程序序”理解為理解為“一個在時間上按嚴格次序前一個在時間上按嚴格次序前后相繼的操作序列后相繼的操作序列”。 第二章 進 程 管 理 2. 程序順序執(zhí)行時的特征程序順序執(zhí)行時的特征 (1)順序性:順序性:(2) 封閉性:封閉性:資源獨占。資源獨占。(3) 可再現(xiàn)性:可再現(xiàn)

9、性: 結(jié)果的無關(guān)性。結(jié)果的無關(guān)性。 第二章 進 程 管 理 2.1.2 前趨圖前趨圖 前趨圖是一個有向無循環(huán)圖,記為前趨圖是一個有向無循環(huán)圖,記為DAG,用于,用于描述進程之間執(zhí)行的前后關(guān)系。圖中的每個結(jié)點可描述進程之間執(zhí)行的前后關(guān)系。圖中的每個結(jié)點可用于描述一個程序段或進程,乃至一條語句;結(jié)點用于描述一個程序段或進程,乃至一條語句;結(jié)點間的有向邊則用于表示兩個結(jié)點之間存在的偏序或間的有向邊則用于表示兩個結(jié)點之間存在的偏序或前趨關(guān)系前趨關(guān)系 “”。在前趨圖中,把沒有前趨的結(jié)點稱為在前趨圖中,把沒有前趨的結(jié)點稱為初始結(jié)點初始結(jié)點,把,把沒沒有后繼的結(jié)點稱為有后繼的結(jié)點稱為終止結(jié)點終止結(jié)點。第二章

10、 進 程 管 理 每個結(jié)點還具有一個重量每個結(jié)點還具有一個重量(Weight),用于表示該結(jié)點用于表示該結(jié)點所含有的程序量或結(jié)點的執(zhí)行時間。所含有的程序量或結(jié)點的執(zhí)行時間。 IiCiPi和S1S2S3 圖圖 2-2 前趨圖前趨圖 P1P3P8P9P4P2P5P6P7S1S2S3(a) 具有九個結(jié)點的前趨圖(b) 具有循環(huán)的前趨圖對于圖對于圖 2-2(a)所示的前趨圖,所示的前趨圖, 存在下述前趨關(guān)系:存在下述前趨關(guān)系: P1P2, P1P3, P1P4, P2P5, P3P5, P4P6, P4P7, P5P8, P6P8, P7P9, P8P9或表示為:或表示為: P=P1, P2, P3,

11、 P4, P5, P6, P7, P8, P9= (P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5), (P4, P6), (P4, P7), (P5, P8), (P6, P8), (P7, P9), (P8, P9) 應當注意,前趨圖中必須不存在循環(huán),但在圖應當注意,前趨圖中必須不存在循環(huán),但在圖2-2(b)中卻有著中卻有著下述的前趨關(guān)系:下述的前趨關(guān)系:S2S3, S3S2 這是無法滿足的這是無法滿足的.第二章 進 程 管 理 2.1.3程序的并發(fā)執(zhí)行及其特性程序的并發(fā)執(zhí)行及其特性 n無論是操作系統(tǒng)自身的程序還是用戶程序,通無論是操作系統(tǒng)自身

12、的程序還是用戶程序,通??偸谴嬖谝恍┫鄬Κ毩ⅰ⒌帜懿l(fā)執(zhí)行的??偸谴嬖谝恍┫鄬Κ毩?、但又能并發(fā)執(zhí)行的程序段。由于這些程序段可以被多個用戶作業(yè)程序段。由于這些程序段可以被多個用戶作業(yè)調(diào)用,因此可在同一時間間隔內(nèi)發(fā)生。這樣一調(diào)用,因此可在同一時間間隔內(nèi)發(fā)生。這樣一來,某個程序段可能對應多個來,某個程序段可能對應多個“計算計算”,于是,于是程序與程序與“計算計算”已不具有一一對應關(guān)系了。這已不具有一一對應關(guān)系了。這些些“并發(fā)程序并發(fā)程序”就構(gòu)成了一個就構(gòu)成了一個“并發(fā)環(huán)境并發(fā)環(huán)境”。第二章 進 程 管 理 n并發(fā)執(zhí)行的特征并發(fā)執(zhí)行的特征 n間斷間斷(異步異步)性:性:走走停停走走停停,一個程序可能

13、,一個程序可能走到中途停下來,失去原有的時序關(guān)系;走到中途停下來,失去原有的時序關(guān)系; n失去封閉性:共享資源,受其他程序的控制失去封閉性:共享資源,受其他程序的控制邏輯的影響。如:一個程序?qū)懙酱鎯ζ髦械倪壿嫷挠绊?。如:一個程序?qū)懙酱鎯ζ髦械臄?shù)據(jù)可能被另一個程序修改,失去原有的不數(shù)據(jù)可能被另一個程序修改,失去原有的不變特征。變特征。 n失去可再現(xiàn)性:失去封閉性失去可再現(xiàn)性:失去封閉性 失去可再現(xiàn)失去可再現(xiàn)性;外界環(huán)境在程序的兩次執(zhí)行期間發(fā)生變性;外界環(huán)境在程序的兩次執(zhí)行期間發(fā)生變化,失去原有的可重復特征?;?,失去原有的可重復特征。2.1.3 程序的并發(fā)執(zhí)行及其特征程序的并發(fā)執(zhí)行及其特征 第二章

14、 進 程 管 理 2.1.3 程序的并發(fā)執(zhí)行及其特征程序的并發(fā)執(zhí)行及其特征 1. 程序的并發(fā)執(zhí)行程序的并發(fā)執(zhí)行 圖圖 2-3 并發(fā)執(zhí)行時的前趨圖并發(fā)執(zhí)行時的前趨圖 P1P2P3P4I1I2I3I4C1C2C3C4第二章 進 程 管 理 在該例中存在下述前趨關(guān)系:在該例中存在下述前趨關(guān)系: IiCi,IiIi+1, CiPi, CiCi+1,PiPi+1而而Ii+1和和Ci及及Pi-1是重迭的,亦即在是重迭的,亦即在Pi-1和和Ci以及以及Ii+1之間,可之間,可以并發(fā)執(zhí)行。以并發(fā)執(zhí)行。 對于具有下述四條語句的程序段:對于具有下述四條語句的程序段: S1: a=x+2 S2: b=y+4 S3:

15、 c=a+b S4: d=c+b 第二章 進 程 管 理 圖圖 2-4 四條語句的前趨關(guān)系四條語句的前趨關(guān)系S1S2S3S4第二章 進 程 管 理 2. 程序并發(fā)執(zhí)行時的特征程序并發(fā)執(zhí)行時的特征 1) 間斷性間斷性2) 失去封閉性失去封閉性 3) 不可再現(xiàn)性不可再現(xiàn)性 例如,兩個循環(huán)程序例如,兩個循環(huán)程序A和和B,它們共享一個變量,它們共享一個變量N。程序程序A N=N+1 ;程序程序B Print(N) ;N=0;程序程序A和和B以不同的速度運行。以不同的速度運行。 (1) N=N+1在在Print(N)和和N=0之前,此時得到的之前,此時得到的N值值分別為分別為n+1, n+1, 0。 (

16、2) N=N+1在在Print(N)和和N=0之后,此時得到的之后,此時得到的N值值分別為分別為n, 0, 1。 (3) N=N+1在在Print(N)和和N=0之間,此時得到的之間,此時得到的N值值分別為分別為n, n+1, 0。 第二章 進 程 管 理 2.1.4 進程的特征與狀態(tài)進程的特征與狀態(tài) 1. 進程的特征和定義進程的特征和定義 1) 結(jié)構(gòu)特征結(jié)構(gòu)特征 程序段、相關(guān)數(shù)據(jù)段、程序段、相關(guān)數(shù)據(jù)段、PCB構(gòu)成進程實體構(gòu)成進程實體2) 動態(tài)性動態(tài)性 3) 并發(fā)性并發(fā)性 4) 獨立性獨立性 5) 異步性異步性 第二章 進 程 管 理 n行為的一個規(guī)則叫做程序,程序在處理機上執(zhí)行為的一個規(guī)則叫

17、做程序,程序在處理機上執(zhí)行時所發(fā)生的活動稱為進程(行時所發(fā)生的活動稱為進程(Dijkstra)Dijkstra)。n進程是這樣的計算部分,它是可以和其它計算進程是這樣的計算部分,它是可以和其它計算并行的一個計算并行的一個計算。(Donovan)(Donovan)n進程(有時稱為任務)是一個程序與其數(shù)據(jù)一進程(有時稱為任務)是一個程序與其數(shù)據(jù)一道通過處理機的執(zhí)行所發(fā)生的活動道通過處理機的執(zhí)行所發(fā)生的活動。(。(Alan.C. Alan.C. Shaw)Shaw)n進程是執(zhí)行中的程序進程是執(zhí)行中的程序。(。(Ken Thompson and Ken Thompson and Dennis Ritc

18、hie )Dennis Ritchie )n教材上給出的進程的定義教材上給出的進程的定義:n 進程,即是一個具有一定獨立功能的程序關(guān)進程,即是一個具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次活動。于某個數(shù)據(jù)集合的一次活動。較典型的進程定義有:較典型的進程定義有: (1) 進程是程序的一次執(zhí)行。進程是程序的一次執(zhí)行。 (2) 進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時所發(fā)生的活動。時所發(fā)生的活動。 (3) 進程是程序在一個數(shù)據(jù)集合上運行的過程,它進程是程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。是系統(tǒng)進行資源分配和調(diào)度的一個獨

19、立單位。 傳統(tǒng)傳統(tǒng)OS中的進程定義為:中的進程定義為:“進程是進程實體的運進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位位”。 第二章 進 程 管 理 程序與進程程序與進程聯(lián)系:聯(lián)系: 程序是構(gòu)成進程的組成部分之一。一程序是構(gòu)成進程的組成部分之一。一個進程的運行目標就是執(zhí)行它所對應的程個進程的運行目標就是執(zhí)行它所對應的程序,如果沒有程序,進程就失去了其實際序,如果沒有程序,進程就失去了其實際存在的意義。存在的意義。 從靜態(tài)的角度看,進程是由程序、數(shù)從靜態(tài)的角度看,進程是由程序、數(shù)據(jù)和進程控制塊(據(jù)和進程控制塊(PCBPCB)三部分組

20、成。)三部分組成。 第二章 進 程 管 理 區(qū)別:區(qū)別: 程序是靜態(tài)的,而進程是動態(tài)的;程序是靜態(tài)的,而進程是動態(tài)的; 程序的存在是永久的,進程的存在程序的存在是永久的,進程的存在是暫時的,動態(tài)的產(chǎn)生和消亡;是暫時的,動態(tài)的產(chǎn)生和消亡; 一個進程可以執(zhí)行一個或幾個程序,一個進程可以執(zhí)行一個或幾個程序,一個程序亦可以構(gòu)成多個進程;一個程序亦可以構(gòu)成多個進程; 進程具有創(chuàng)建其它進程的功能。進程具有創(chuàng)建其它進程的功能。 第二章 進 程 管 理 2. 進程的三種基本狀態(tài)進程的三種基本狀態(tài) 1) 就緒就緒(Ready)狀態(tài)狀態(tài) 2) 執(zhí)行狀態(tài)執(zhí)行狀態(tài) 3) 阻塞狀態(tài)阻塞狀態(tài) 圖圖 2-5 進程的三種基本

21、狀態(tài)及其轉(zhuǎn)換進程的三種基本狀態(tài)及其轉(zhuǎn)換 第二章 進 程 管 理 n(1)運行狀態(tài):進程正在處理機上運行的狀)運行狀態(tài):進程正在處理機上運行的狀態(tài),該進程已獲得必要的資源,也獲得了處理態(tài),該進程已獲得必要的資源,也獲得了處理機,用戶程序正在處理機上運行。機,用戶程序正在處理機上運行。n(2)阻塞狀態(tài):進程等待某種事件完成(例)阻塞狀態(tài):進程等待某種事件完成(例如,等待輸入如,等待輸入/輸出操作的完成)而暫時不能輸出操作的完成)而暫時不能運行的狀態(tài),處于該狀態(tài)的進程不能參加競爭運行的狀態(tài),處于該狀態(tài)的進程不能參加競爭處理機,此時,即使分配給它處理機,它也不處理機,此時,即使分配給它處理機,它也不能

22、運行。能運行。n(3)就緒狀態(tài):該進程運行所需的一切條件)就緒狀態(tài):該進程運行所需的一切條件都得到滿足,但因處理機資源個數(shù)少于進程個都得到滿足,但因處理機資源個數(shù)少于進程個數(shù),所以該進程不能運行,而必須等待分配處數(shù),所以該進程不能運行,而必須等待分配處理機資源,一旦獲得處理機就立即投入運行。理機資源,一旦獲得處理機就立即投入運行。第二章 進 程 管 理 3. 掛起狀態(tài)掛起狀態(tài)1) 引入掛起狀態(tài)的原因引入掛起狀態(tài)的原因 (1)終端用戶的請求。終端用戶的請求。 (2) 父進程請求。父進程請求。 (3) 負荷調(diào)節(jié)的需要。負荷調(diào)節(jié)的需要。 (4) 操作系統(tǒng)的需要。操作系統(tǒng)的需要。 q 掛起進程在操作系

23、統(tǒng)中可以定義為暫時被淘掛起進程在操作系統(tǒng)中可以定義為暫時被淘汰出內(nèi)存的進程,機器的資源是有限的,在汰出內(nèi)存的進程,機器的資源是有限的,在資源不足的情況下,操作系統(tǒng)對在內(nèi)存中的資源不足的情況下,操作系統(tǒng)對在內(nèi)存中的程序進行合理的安排,其中有的進程被暫時程序進行合理的安排,其中有的進程被暫時調(diào)離出內(nèi)存,當條件允許的時候,會被操作調(diào)離出內(nèi)存,當條件允許的時候,會被操作系統(tǒng)再次調(diào)回內(nèi)存,重新進入等待被執(zhí)行的系統(tǒng)再次調(diào)回內(nèi)存,重新進入等待被執(zhí)行的狀態(tài)即就緒態(tài)。狀態(tài)即就緒態(tài)。第二章 進 程 管 理 2) 進程狀態(tài)的轉(zhuǎn)換進程狀態(tài)的轉(zhuǎn)換 (1)活動就緒活動就緒靜止就緒。靜止就緒。 (2) 活動阻塞活動阻塞靜止

24、阻塞。靜止阻塞。 (3) 靜止就緒靜止就緒活動就緒?;顒泳途w。 (4) 靜止阻塞靜止阻塞活動阻塞活動阻塞。 活動就緒靜止就緒執(zhí)行掛起激活釋放掛起活動阻塞靜止阻塞掛起激活釋放請求I/O圖圖 2-6 具有掛起狀態(tài)的進程狀態(tài)圖具有掛起狀態(tài)的進程狀態(tài)圖 第二章 進 程 管 理 2.1.5 進程控制塊進程控制塊 1. 進程控制塊的作用進程控制塊的作用 進程控制塊的作用是使一個在多道程序環(huán)境進程控制塊的作用是使一個在多道程序環(huán)境下不能獨立運行的程序下不能獨立運行的程序(含數(shù)據(jù)含數(shù)據(jù)),成為一個能獨,成為一個能獨立運行的基本單位,一個能與其它進程并發(fā)執(zhí)行立運行的基本單位,一個能與其它進程并發(fā)執(zhí)行的進程?;蛘?/p>

25、說,的進程?;蛘哒f,OS是根據(jù)是根據(jù)PCB來對并發(fā)執(zhí)行的來對并發(fā)執(zhí)行的進程進行控制和管理的。進程進行控制和管理的。 PCB是進程存在的唯一標志。是進程存在的唯一標志。第二章 進 程 管 理 進程控制塊進程控制塊 n為了刻畫進程的動態(tài)變化,通常把進程表示為為了刻畫進程的動態(tài)變化,通常把進程表示為由程序段、私有數(shù)據(jù)塊和進程控制塊組成,如由程序段、私有數(shù)據(jù)塊和進程控制塊組成,如圖圖3.4(a)所示。程序部分描述進程本身所要)所示。程序部分描述進程本身所要完成的功能,而完成的功能,而“私有數(shù)據(jù)塊私有數(shù)據(jù)塊”是接受程序規(guī)是接受程序規(guī)定操作的一組存儲單元的內(nèi)容,是操作的對象。定操作的一組存儲單元的內(nèi)容,是

26、操作的對象。進程控制塊是在進程創(chuàng)建時產(chǎn)生的,當進程存進程控制塊是在進程創(chuàng)建時產(chǎn)生的,當進程存在于系統(tǒng)時(運行),進程控制塊就標識了這在于系統(tǒng)時(運行),進程控制塊就標識了這個進程。如圖個進程。如圖3.4(b)所示。)所示。 下一頁下一頁第二章 進 程 管 理 nLoik,第二章 進 程 管 理 n進程控制塊是進程存在的標志,當系統(tǒng)或父進進程控制塊是進程存在的標志,當系統(tǒng)或父進程創(chuàng)建一個進程時,實際上就是為其建立一個程創(chuàng)建一個進程時,實際上就是為其建立一個進程控制塊。進程控制塊。 n進程控制塊既能標識進程的存在,又能刻畫出進程控制塊既能標識進程的存在,又能刻畫出進程的動態(tài)特征,它是一個進程僅有的

27、被系統(tǒng)進程的動態(tài)特征,它是一個進程僅有的被系統(tǒng)真正感知的部分。對操作系統(tǒng)而言,所有進程真正感知的部分。對操作系統(tǒng)而言,所有進程控制塊將構(gòu)成并發(fā)執(zhí)行控制和維護系統(tǒng)工作的控制塊將構(gòu)成并發(fā)執(zhí)行控制和維護系統(tǒng)工作的依據(jù)。依據(jù)。進程控制塊的作用:進程控制塊的作用:第二章 進 程 管 理 2. 進程控制塊中的信息進程控制塊中的信息 1) 進程標識符進程標識符 (1) 內(nèi)部標識符。主要是為了方便系統(tǒng)使用。內(nèi)部標識符。主要是為了方便系統(tǒng)使用。在所有的操作系統(tǒng)中,都為每一個進程賦予一個在所有的操作系統(tǒng)中,都為每一個進程賦予一個惟一的數(shù)字標識符,它通常是一個進程的序號。惟一的數(shù)字標識符,它通常是一個進程的序號。

28、(2) 外部標識符。它由創(chuàng)建者提供,通常是由外部標識符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶字母、數(shù)字組成,往往是由用戶(進程進程)在訪問該在訪問該進程時使用。進程時使用。 2) 處理機狀態(tài)處理機狀態(tài) 通用寄存器通用寄存器 :用戶程序可以訪問的,存放信息。:用戶程序可以訪問的,存放信息。 指令計數(shù)器,存放要訪問的下一條指令的地址;指令計數(shù)器,存放要訪問的下一條指令的地址; 程序狀態(tài)字程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼、,其中含有狀態(tài)信息,如條件碼、執(zhí)行方式、執(zhí)行方式、 中斷屏蔽標志等;中斷屏蔽標志等; 用戶棧指針,指每個用戶進程都有一個或若干個與用戶棧指針,指每個用戶

29、進程都有一個或若干個與之相關(guān)的系之相關(guān)的系統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。用地址。棧指針指向該棧的棧頂。 第二章 進 程 管 理 3) 進程調(diào)度信息進程調(diào)度信息 進程狀態(tài),指明進程的當前狀態(tài),作為進程調(diào)進程狀態(tài),指明進程的當前狀態(tài),作為進程調(diào)度和對換時的依據(jù);度和對換時的依據(jù); 進程優(yōu)先級,用于描述進程使用處理機的優(yōu)先進程優(yōu)先級,用于描述進程使用處理機的優(yōu)先級別的一個整數(shù),級別的一個整數(shù), 優(yōu)先級高的進程應優(yōu)先獲得處優(yōu)先級高的進程應優(yōu)先獲得處理機;理機; 進程調(diào)度所需的其它信息;進程調(diào)度所需的其它信息; 事件,是指進程由執(zhí)行

30、狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所事件,是指進程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的事件,即等待發(fā)生的事件,即阻塞原因。阻塞原因。 第二章 進 程 管 理 4) 進程控制信息進程控制信息 程序和數(shù)據(jù)的地址程序和數(shù)據(jù)的地址 進程同步和通信機制;進程同步和通信機制; 資源清單,是一張列出了除資源清單,是一張列出了除CPU以外的、進程以外的、進程所需的全部資源及已經(jīng)分配到該進程的資源的清單;所需的全部資源及已經(jīng)分配到該進程的資源的清單; 鏈接指針,鏈接指針, 它給出了本進程它給出了本進程(PCB)所在隊列中所在隊列中的的下一個進程的下一個進程的PCB的首地址。的首地址。 第二章 進 程 管 理 n家族聯(lián)系家族聯(lián)系

31、 process familyn 有的系統(tǒng)允許一個進程可創(chuàng)建自已的子有的系統(tǒng)允許一個進程可創(chuàng)建自已的子進程,子進程還可以創(chuàng)建,一個進程往進程,子進程還可以創(chuàng)建,一個進程往往處在一個家族之中,就需要記錄進程往處在一個家族之中,就需要記錄進程在家族中位置的信息。在家族中位置的信息。第二章 進 程 管 理 3. 進程控制塊的組織方式進程控制塊的組織方式 1) 鏈接方式鏈接方式 圖圖 2-7 PCB鏈接隊列示意圖鏈接隊列示意圖 PCB14PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB93087901執(zhí)行指針就緒隊列指針阻塞隊列指針空閑隊列指針第二章 進 程 管 理 2) 索引方式索引方

32、式 圖圖 2-8 按索引方式組織按索引方式組織PCB 執(zhí)行指針就緒索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7阻塞索引表就緒表指針阻塞表指針第二章 進 程 管 理 進程的類型進程的類型n在系統(tǒng)中同時有多個進程存在,但歸納起來在系統(tǒng)中同時有多個進程存在,但歸納起來有兩大類:有兩大類:n1 1、系統(tǒng)進程、系統(tǒng)進程n 系統(tǒng)進程起著資源管理和控制的作用。系統(tǒng)進程起著資源管理和控制的作用。n 或者:執(zhí)行操作系統(tǒng)核心代碼的進程或者:執(zhí)行操作系統(tǒng)核心代碼的進程。n2 2、用戶進程、用戶進程n 執(zhí)行用戶程序的進程。執(zhí)行用戶程序的進程。第二章 進 程 管 理 進程的類型進程的類型n系統(tǒng)進程與用

33、戶進程的區(qū)別:系統(tǒng)進程與用戶進程的區(qū)別:n1 1、系統(tǒng)進程被分配一個初始的資源集合,這些、系統(tǒng)進程被分配一個初始的資源集合,這些資源可以為它獨占,也能以最高優(yōu)先權(quán)的資格使資源可以為它獨占,也能以最高優(yōu)先權(quán)的資格使用。用戶進程通過系統(tǒng)服務請求的手段競爭使用用。用戶進程通過系統(tǒng)服務請求的手段競爭使用系統(tǒng)資源;系統(tǒng)資源;n2 2、用戶進程不能直接做、用戶進程不能直接做I/OI/O操作,而系統(tǒng)進程可操作,而系統(tǒng)進程可以做顯示的、直接的以做顯示的、直接的I/OI/O操作。操作。n3 3、系統(tǒng)進程在管態(tài)下活動,而用戶進程則在用、系統(tǒng)進程在管態(tài)下活動,而用戶進程則在用戶態(tài)(目態(tài))下活動。戶態(tài)(目態(tài))下活動。

34、n另一種分類:計算進程,另一種分類:計算進程,I/OI/O進程等進程等第二章 進 程 管 理 n 進程是有生命周期的,產(chǎn)生、運行、暫停、進程是有生命周期的,產(chǎn)生、運行、暫停、終止,對進程的這些操作叫進程控制。終止,對進程的這些操作叫進程控制。n 進程控制的職責是對系統(tǒng)中全部進程實施有進程控制的職責是對系統(tǒng)中全部進程實施有效的管理,它是處理機管理的部分(效的管理,它是處理機管理的部分(另一部分另一部分是進程調(diào)度是進程調(diào)度),當系統(tǒng)允許多進程并發(fā)執(zhí)行時,),當系統(tǒng)允許多進程并發(fā)執(zhí)行時,為了實現(xiàn)共享、協(xié)調(diào)并發(fā)進程的關(guān)系,處理機為了實現(xiàn)共享、協(xié)調(diào)并發(fā)進程的關(guān)系,處理機管理必須提供對進程實行有效的管理管

35、理必須提供對進程實行有效的管理。2.2 進進 程程 控控 制制 第二章 進 程 管 理 進程控制進程控制 進程控制的概念進程控制的概念n 進程控制包括進程控制包括:n 進程創(chuàng)建進程創(chuàng)建、n 進程撤消進程撤消、n 進程阻塞進程阻塞、n 進程喚醒進程喚醒。n 這些操作都要對應地執(zhí)行一個特殊的程序這些操作都要對應地執(zhí)行一個特殊的程序段(操作系統(tǒng)核心程序),同時系統(tǒng)也通過段(操作系統(tǒng)核心程序),同時系統(tǒng)也通過系統(tǒng)調(diào)用給用戶提供進程控制的功能。教材系統(tǒng)調(diào)用給用戶提供進程控制的功能。教材上叫原語(一種特殊的系統(tǒng)調(diào)用)。上叫原語(一種特殊的系統(tǒng)調(diào)用)。第二章 進 程 管 理 n運行狀態(tài)運行狀態(tài) 等待狀態(tài)等待

36、狀態(tài) n 進程阻塞進程阻塞n等待狀態(tài)等待狀態(tài) 就緒狀態(tài)就緒狀態(tài) n 進程喚醒進程喚醒n新建進程置為就緒狀態(tài)新建進程置為就緒狀態(tài) n 進程創(chuàng)建進程創(chuàng)建n進程終止(消亡進程終止(消亡) n 進程撤消進程撤消n就緒狀態(tài)就緒狀態(tài) 運行狀態(tài)運行狀態(tài) n 進程調(diào)度進程調(diào)度第二章 進 程 管 理 原語原語 n在操作系統(tǒng)中,某些被進程調(diào)用的操作,在操作系統(tǒng)中,某些被進程調(diào)用的操作,例如隊列操作、對信號燈的操作、檢查例如隊列操作、對信號燈的操作、檢查啟動外設(shè)操作等,一旦開始執(zhí)行就不能啟動外設(shè)操作等,一旦開始執(zhí)行就不能被中斷,否則就會出現(xiàn)操作錯誤,造成被中斷,否則就會出現(xiàn)操作錯誤,造成系統(tǒng)混亂。原語就是為實現(xiàn)這些

37、操作而系統(tǒng)混亂。原語就是為實現(xiàn)這些操作而設(shè)置的。設(shè)置的。第二章 進 程 管 理 原語原語(primitive):由若干條指令構(gòu)成的由若干條指令構(gòu)成的“原原子操作子操作(atomic operation)”過程,作為一個過程,作為一個整體而不可分割整體而不可分割要么全都完成,要么要么全都完成,要么全都不做。許多系統(tǒng)調(diào)用就是原語。全都不做。許多系統(tǒng)調(diào)用就是原語。注意:注意:系統(tǒng)調(diào)用并不都是原語。系統(tǒng)調(diào)用并不都是原語。進程進程A調(diào)用調(diào)用read(),因無數(shù)據(jù)而阻塞,在,因無數(shù)據(jù)而阻塞,在read()里未返回。里未返回。然后進程然后進程B調(diào)用調(diào)用read(),此時,此時read()被重入。被重入。系統(tǒng)

38、調(diào)用不一定一次執(zhí)行完并返回該進程,系統(tǒng)調(diào)用不一定一次執(zhí)行完并返回該進程,有可能在特定的點暫停,而轉(zhuǎn)入到其他進程。有可能在特定的點暫停,而轉(zhuǎn)入到其他進程。第二章 進 程 管 理 圖圖3.5 進程家族示例進程家族示例第二章 進 程 管 理 2.2.1 進程的創(chuàng)建進程的創(chuàng)建 1. 進程圖進程圖(Process Graph)2. 繼承繼承(inherit):子進程:子進程可以從父進程中繼承環(huán)可以從父進程中繼承環(huán)境變量、打開文件、文境變量、打開文件、文件系統(tǒng)的當前目錄、控件系統(tǒng)的當前目錄、控制終端、已經(jīng)連接的共制終端、已經(jīng)連接的共享存儲區(qū)、信號處理例享存儲區(qū)、信號處理例程入口表等程入口表等 .3. 不被

39、繼承:進程標識符,不被繼承:進程標識符,父進程標識符。父進程標識符。 圖 2-9 進程樹 DEFGHBCIJKLMA第二章 進 程 管 理 2. 引起創(chuàng)建進程的事件引起創(chuàng)建進程的事件 (1)用戶登錄。用戶登錄。 (2) 作業(yè)調(diào)度。作業(yè)調(diào)度。 (3) 提供服務。提供服務。 (4) 應用請求。應用請求。 第二章 進 程 管 理 n(1 1)創(chuàng)建進程。系統(tǒng)在創(chuàng)建進程時,必須為)創(chuàng)建進程。系統(tǒng)在創(chuàng)建進程時,必須為之分配其所必需的、除處理機以外的所有資源。之分配其所必需的、除處理機以外的所有資源。如內(nèi)存空間、如內(nèi)存空間、I/OI/O設(shè)備以及建立相應的設(shè)備以及建立相應的PCBPCB結(jié)構(gòu)。結(jié)構(gòu)。n(2 2)

40、撤消進程。系統(tǒng)在撤消進程時,又必須)撤消進程。系統(tǒng)在撤消進程時,又必須先對這些資源進行回收操作,然后再撤消先對這些資源進行回收操作,然后再撤消PCBPCB結(jié)構(gòu)。結(jié)構(gòu)。n(3 3)進程切換。在對進程進行切換時,由于)進程切換。在對進程進行切換時,由于要保留當前進程的要保留當前進程的CPUCPU環(huán)境和設(shè)置新選中進程環(huán)境和設(shè)置新選中進程的的CPUCPU環(huán)境,為此需花費不少處理機時間。環(huán)境,為此需花費不少處理機時間。第二章 進 程 管 理 3. 進程的創(chuàng)建進程的創(chuàng)建(Creation of Progress) (1)申請空白申請空白PCB。申請唯一的數(shù)字表示符;。申請唯一的數(shù)字表示符; (2)為新進程

41、分配資源。為新進程分配資源。 (3) 初始化進程控制塊。初始化進程控制塊。 初始化標識符,處理機狀態(tài)信息和控制信息。初始化標識符,處理機狀態(tài)信息和控制信息。(4) 將新進程插入就緒隊列,如果進程就緒隊列能夠接將新進程插入就緒隊列,如果進程就緒隊列能夠接納新進程,納新進程, 便將新進程插入就緒隊便將新進程插入就緒隊列。列。 第二章 進 程 管 理 2.2.2 進程的終止進程的終止 1. 引起進程終止引起進程終止(Termination of Process)的事件的事件1) 正常結(jié)束正常結(jié)束2) 異常結(jié)束異常結(jié)束 越界錯誤越界錯誤 保護錯誤保護錯誤 非法指令。非法指令。 特權(quán)指令錯誤。特權(quán)指令錯

42、誤。 運行超時。運行超時。 等待超時。等待超時。 算術(shù)運算錯誤。算術(shù)運算錯誤。 I/O故障。故障。 第二章 進 程 管 理 3) 外界干預外界干預 外界干預并非指在本進程運行中出現(xiàn)了異常外界干預并非指在本進程運行中出現(xiàn)了異常事件,而是指進程應外界的請求而終止運行。事件,而是指進程應外界的請求而終止運行。 操作員或操作系統(tǒng)干預。操作員或操作系統(tǒng)干預。 父進程請求。父進程請求。 父進程終止。父進程終止。 第二章 進 程 管 理 2. 進程的終止過程進程的終止過程 (1) 根據(jù)被終止進程的標識符,從根據(jù)被終止進程的標識符,從PCB集合中檢索集合中檢索出該進程的出該進程的PCB,從中讀出該進程的狀態(tài)。

43、,從中讀出該進程的狀態(tài)。 (2) 終止執(zhí)行進程重新進行調(diào)度。終止執(zhí)行進程重新進行調(diào)度。 (3)終止其所有子孫進程終止其所有子孫進程 。 (4) 將被終止進程所擁有的全部資源,歸還給其父將被終止進程所擁有的全部資源,歸還給其父進程,進程, 或者系統(tǒng)。或者系統(tǒng)。 (5) 將被終止進程將被終止進程(它的它的PCB)從所在隊列從所在隊列(或鏈表或鏈表)中中移出,移出, 等待其他程序來搜集信息。等待其他程序來搜集信息。 第二章 進 程 管 理 2.2.3 進程的阻塞與喚醒進程的阻塞與喚醒1. 引起進程阻塞和喚醒的事件引起進程阻塞和喚醒的事件 1) 請求系統(tǒng)服務請求系統(tǒng)服務 2) 啟動某種操作啟動某種操作

44、 3) 新數(shù)據(jù)尚未到達新數(shù)據(jù)尚未到達 4) 無新工作可做無新工作可做 第二章 進 程 管 理 正在執(zhí)行的進程,當發(fā)現(xiàn)上述某事件時,由于無正在執(zhí)行的進程,當發(fā)現(xiàn)上述某事件時,由于無法繼續(xù)執(zhí)行,于是進程便通過調(diào)用阻塞原語法繼續(xù)執(zhí)行,于是進程便通過調(diào)用阻塞原語block把自把自己阻塞??梢?,己阻塞??梢?,進程的阻塞是進程自身的一種主動行進程的阻塞是進程自身的一種主動行為。為。 進入進入block過程后,立即停止執(zhí)行,把進程控制塊過程后,立即停止執(zhí)行,把進程控制塊中的現(xiàn)行狀態(tài)由中的現(xiàn)行狀態(tài)由“執(zhí)行執(zhí)行”改為阻塞,并將改為阻塞,并將PCB插入阻插入阻塞隊列。最后,轉(zhuǎn)調(diào)度程序進行重新調(diào)度,將處理機塞隊列。

45、最后,轉(zhuǎn)調(diào)度程序進行重新調(diào)度,將處理機分配給另一就緒進程,并進行切換。分配給另一就緒進程,并進行切換。 2. 進程阻塞過程進程阻塞過程第二章 進 程 管 理 當被阻塞進程所期待的事件出現(xiàn)時,則由有關(guān)進程當被阻塞進程所期待的事件出現(xiàn)時,則由有關(guān)進程(比如,用完并釋放了該比如,用完并釋放了該I/O設(shè)備的進程設(shè)備的進程)調(diào)用喚醒原語調(diào)用喚醒原語wakeup( ),將等待該事件的進程喚醒。,將等待該事件的進程喚醒。 喚醒原語執(zhí)行的過程是:首先把被阻塞的進程從等喚醒原語執(zhí)行的過程是:首先把被阻塞的進程從等待該事件的阻塞隊列中移出,待該事件的阻塞隊列中移出,將其將其PCB中的現(xiàn)行狀態(tài)由中的現(xiàn)行狀態(tài)由阻塞改

46、為就緒,然后再將該阻塞改為就緒,然后再將該PCB插入到就緒隊列中。插入到就緒隊列中。 3. 進程喚醒過程進程喚醒過程第二章 進 程 管 理 2.2.4 進程的掛起與激活進程的掛起與激活 1. 進程的掛起進程的掛起 原語原語suspend( )將指定進程或處于阻塞狀態(tài)的將指定進程或處于阻塞狀態(tài)的進程掛起。進程掛起。 掛起原語的執(zhí)行過程是:首先檢查被掛起進掛起原語的執(zhí)行過程是:首先檢查被掛起進程的狀態(tài)。為了方便用戶或父進程考查該進程的程的狀態(tài)。為了方便用戶或父進程考查該進程的運行情況而把該進程的運行情況而把該進程的PCB復制到某指定的內(nèi)存復制到某指定的內(nèi)存區(qū)域。最后,若被掛區(qū)域。最后,若被掛起的進

47、程正在執(zhí)行,則轉(zhuǎn)向起的進程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度。調(diào)度程序重新調(diào)度。 第二章 進 程 管 理 2. 進程的激活過程進程的激活過程 激活原語先將進程從外存調(diào)入內(nèi)存,檢查該進激活原語先將進程從外存調(diào)入內(nèi)存,檢查該進程的現(xiàn)行狀態(tài)。程的現(xiàn)行狀態(tài)。 假如采用的是搶占調(diào)度策略,則每當有新進程假如采用的是搶占調(diào)度策略,則每當有新進程進入就緒隊列時,應檢查是否要進行重新調(diào)度,即進入就緒隊列時,應檢查是否要進行重新調(diào)度,即由調(diào)度程序?qū)⒈患せ钸M程與當前進程進行優(yōu)先級的由調(diào)度程序?qū)⒈患せ钸M程與當前進程進行優(yōu)先級的比較,如果被激活進程的優(yōu)先級更低,就不必重新比較,如果被激活進程的優(yōu)先級更低,就不必重新調(diào)度;

48、否則,立即剝奪當前進程的運行,把調(diào)度;否則,立即剝奪當前進程的運行,把處理機處理機分配給剛被激活的進程。分配給剛被激活的進程。 第二章 進 程 管 理 2.3 進進 程程 同同 步步 2.3.1 進程同步的基本概念進程同步的基本概念 1. 兩種形式的制約關(guān)系兩種形式的制約關(guān)系 (1)間接相互制約關(guān)系間接相互制約關(guān)系-資源共享關(guān)系資源共享關(guān)系(2) 直接相互制約關(guān)系直接相互制約關(guān)系-相互合作關(guān)系相互合作關(guān)系第二章 進 程 管 理 進程互斥進程互斥互斥的概念互斥的概念n 引例:引例:n 宿舍電話的使用宿舍電話的使用n 打印機的使用打印機的使用n 1. 臨界資源:一次僅允許一個進程使用的臨界資源:一

49、次僅允許一個進程使用的資源稱為臨界資源資源稱為臨界資源。n 引例中的電話和打印機都屬于臨界資源。引例中的電話和打印機都屬于臨界資源。除此之外,還有內(nèi)存變量、指針、數(shù)組等等除此之外,還有內(nèi)存變量、指針、數(shù)組等等也是臨界資源。也是臨界資源。第二章 進 程 管 理 n2 2、臨界區(qū):、臨界區(qū):n每個進程中訪問臨每個進程中訪問臨界資源的那段程序界資源的那段程序段稱為臨界段)。段稱為臨界段)。進程互斥進程互斥互斥的概念互斥的概念第二章 進 程 管 理 n互斥互斥n定義定義: :n在操作系統(tǒng)中,當某一進程正在訪問某臨界在操作系統(tǒng)中,當某一進程正在訪問某臨界區(qū)時,就不允許其它進程進入,否則就會發(fā)區(qū)時,就不允

50、許其它進程進入,否則就會發(fā)生生( (后果后果) )無法估計的錯誤。我們把進程之間無法估計的錯誤。我們把進程之間的這種相互制約的關(guān)系稱為互斥的這種相互制約的關(guān)系稱為互斥。n例如:飛機定票系統(tǒng)中的機票庫例如:飛機定票系統(tǒng)中的機票庫進程互斥進程互斥互斥的概念互斥的概念第二章 進 程 管 理 n進入臨界區(qū)的準則:進入臨界區(qū)的準則:n(1)(1)每次至多有一個進程處于臨界區(qū);每次至多有一個進程處于臨界區(qū);n(2)(2)當有若干個進程欲進入臨界區(qū)時,應在當有若干個進程欲進入臨界區(qū)時,應在有限的時間內(nèi)使其進入;有限的時間內(nèi)使其進入;n(3)(3)進程在臨界區(qū)內(nèi)僅逗留有限的時間進程在臨界區(qū)內(nèi)僅逗留有限的時間。

51、進程互斥進程互斥互斥的概念互斥的概念第二章 進 程 管 理 n 解決進程互斥的最簡單的辦法解決進程互斥的最簡單的辦法是加鎖。是加鎖。n 在系統(tǒng)中為在系統(tǒng)中為每個臨界資源設(shè)置每個臨界資源設(shè)置一個鎖位一個鎖位,n 0 0 表示資源可用表示資源可用,n 1 1 表示資源已被占用(不可表示資源已被占用(不可用)。用)。第二章 進 程 管 理 鎖和上鎖、開鎖操作鎖和上鎖、開鎖操作n這樣當一個進程使用某個臨界資源之前必須這樣當一個進程使用某個臨界資源之前必須完成下列操作:完成下列操作:n1 1、考察鎖位的值;、考察鎖位的值;n2 2、若原來的值是為、若原來的值是為“0”0”,將鎖位置為,將鎖位置為“1”1

52、”n (占用該資源);(占用該資源);n3 3、若原來值是為、若原來值是為“1”1”,(該資源已被別人,(該資源已被別人占用),則轉(zhuǎn)到占用),則轉(zhuǎn)到1 1。n當進程使用完資源后,將鎖位置為當進程使用完資源后,將鎖位置為“0 ” 0 ” ,稱為開鎖操作。稱為開鎖操作。第二章 進 程 管 理 用上鎖原語和開鎖原語實現(xiàn)互斥用上鎖原語和開鎖原語實現(xiàn)互斥n假設(shè)有兩個進程共享打假設(shè)有兩個進程共享打n印機,兩個進程中使用印機,兩個進程中使用n打印機的程序段為臨界打印機的程序段為臨界n區(qū)。區(qū)。n為保證打印的正確,設(shè)為保證打印的正確,設(shè)n置打印機的鎖位置打印機的鎖位print,n其初值為其初值為“0”,表示,表

53、示n打印機可。打印機可。第二章 進 程 管 理 2. 臨界資源臨界資源(Critical Resouce) 在一段時間內(nèi)只允許一個進程訪問的資源稱在一段時間內(nèi)只允許一個進程訪問的資源稱為為臨界資源。臨界資源。 生產(chǎn)者生產(chǎn)者-消費者消費者(producer-consumer)問題是一個著問題是一個著名的進程同步問題。每個生產(chǎn)者可不斷地每次往緩名的進程同步問題。每個生產(chǎn)者可不斷地每次往緩沖池中送一個生產(chǎn)產(chǎn)品,而每個消費者則可不斷地沖池中送一個生產(chǎn)產(chǎn)品,而每個消費者則可不斷地每次從緩沖池中取出一個產(chǎn)品每次從緩沖池中取出一個產(chǎn)品 同步關(guān)系:即不允許消費者進程到一個空緩沖同步關(guān)系:即不允許消費者進程到一

54、個空緩沖區(qū)去取產(chǎn)品;也不允許生產(chǎn)者進程向一個已裝滿產(chǎn)區(qū)去取產(chǎn)品;也不允許生產(chǎn)者進程向一個已裝滿產(chǎn)品且品且尚未被取走的緩沖區(qū)中投放產(chǎn)品。尚未被取走的緩沖區(qū)中投放產(chǎn)品。 第二章 進 程 管 理 生產(chǎn)者與消費者問題生產(chǎn)者與消費者問題 nDijkstra把廣義同步問題抽象成一種把廣義同步問題抽象成一種“生產(chǎn)者生產(chǎn)者與消費者問題與消費者問題”(Producer-consumer-relationship)的抽象模型。事實上,計算機)的抽象模型。事實上,計算機系統(tǒng)中的許多問題都可歸結(jié)為生產(chǎn)者與消費者系統(tǒng)中的許多問題都可歸結(jié)為生產(chǎn)者與消費者問題,生產(chǎn)者與消費者可以通過一個環(huán)形緩沖問題,生產(chǎn)者與消費者可以通過

55、一個環(huán)形緩沖池(見圖池(見圖3.8)聯(lián)系起來,環(huán)形緩沖池由幾個)聯(lián)系起來,環(huán)形緩沖池由幾個大小相等的緩沖塊組成,每個緩沖塊容納一個大小相等的緩沖塊組成,每個緩沖塊容納一個產(chǎn)品。產(chǎn)品。 第二章 進 程 管 理 圖圖3.8 環(huán)形緩沖池環(huán)形緩沖池第二章 進 程 管 理 rearrear5 54 04 03 13 12 2frontfrontJ6J6J7J7J8J8J9J9J4J4J5J5隊滿隊滿frontfrontrearrear5 54 04 03 13 12 2隊空隊空對于循環(huán)隊列,當隊空和隊滿時,都有:對于循環(huán)隊列,當隊空和隊滿時,都有:front = rear怎么判斷循環(huán)隊列的怎么判斷循環(huán)隊

56、列的隊空隊空和和隊滿隊滿呢?呢?第二章 進 程 管 理 n有兩種處理方法:1) 另設(shè)一個標志位以區(qū)別隊列是“空”或“滿”。2) 少用一個存儲單元,隊滿條件是: (rear1)% MaxSize = front 其中,MaxSize 是隊列的最大長度。 隊空條件:frontrearfront54 03 12J5J6J7J3J4rear54 03 12rearfront J3,J4,J5,J6,J7依次出隊列后第二章 進 程 管 理 生產(chǎn)者消費者共享下列變量:生產(chǎn)者消費者共享下列變量:int in=0, out=0, count=0;item=buffern; /枚舉類型說明;枚舉類型說明; vo

57、id consumer( ) while(1) while (counter=0 ) ; nextc=bufferout; out=(out+1) % n; counter-; consumer the item in nextc; ;void producer( ) while(1) produce an item in nextp; while (counter=n) ; bufferin =nextp; in =(in+1 )% n; counter+; ; 第二章 進 程 管 理 若并發(fā)執(zhí)行時,就會出現(xiàn)差錯,問題就在于這兩若并發(fā)執(zhí)行時,就會出現(xiàn)差錯,問題就在于這兩個進程共享變量個進程共

58、享變量counter。生產(chǎn)者對它做加。生產(chǎn)者對它做加1操作,消費操作,消費者對它做減者對它做減1操作,這兩個操作在用機器語言實現(xiàn)時,操作,這兩個操作在用機器語言實現(xiàn)時, ??捎孟旅娴男问矫枋觯撼?捎孟旅娴男问矫枋觯?register 1=counter; register 2=counter; register1=register 1+1; register 2=register 2-1; counter=register 1; counter =register 2; 第二章 進 程 管 理 假設(shè):假設(shè):counter的當前值是的當前值是5。如果生產(chǎn)者進程先。如果生產(chǎn)者進程先執(zhí)行左列的三條機

59、器語言語句,然后消費者進程再執(zhí)執(zhí)行左列的三條機器語言語句,然后消費者進程再執(zhí)行右列的三條語句,行右列的三條語句, 則最后共享變量則最后共享變量counter的值仍的值仍為為5;反之,如果讓消費者進程先執(zhí)行右列的三條語;反之,如果讓消費者進程先執(zhí)行右列的三條語句,然后再讓生產(chǎn)者進程執(zhí)行左列的三條語句,句,然后再讓生產(chǎn)者進程執(zhí)行左列的三條語句,counter值也還是值也還是5,但是,如果按下述順序執(zhí)行:,但是,如果按下述順序執(zhí)行: register 1 =counter; (register 1=5) register 1 =register 1+1; (register 1=6) registe

60、r 2 =counter; (register 2=5) register 2 =register 2-1; (register 2=4) counter =register 1; (counter=6) counter =register 2; (counter=4)第二章 進 程 管 理 互斥互斥,指多個進程不能同時使用同一個資源;,指多個進程不能同時使用同一個資源; 死鎖,死鎖,指多個進程互不相讓,都得不到足夠指多個進程互不相讓,都得不到足夠的資源;的資源; 饑餓饑餓,指一個進程一直得不到資源,指一個進程一直得不到資源(其他進程可能輪流占用資源)(其他進程可能輪流占用資源)第二章 進 程

溫馨提示

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

評論

0/150

提交評論