第二章進程的描述與控制_第1頁
第二章進程的描述與控制_第2頁
第二章進程的描述與控制_第3頁
第二章進程的描述與控制_第4頁
第二章進程的描述與控制_第5頁
已閱讀5頁,還剩169頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章進 程 管 理 第二章進第二章進 程程 管管 理理 2.12.1前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行2.22.2進程的描述進程的描述2.2.3 3 進程控制進程控制2.4進程同步進程同步 2.5經(jīng)典進程的同步問題經(jīng)典進程的同步問題 2.6 進程通信進程通信 2.7線程的基本概念線程的基本概念2.8 2.8 線程的實現(xiàn)線程的實現(xiàn) 第二章進 程 管 理 2.1.12.1.1前趨圖前趨圖前趨圖前趨圖(Precedence Graph)(Precedence Graph):有向無循環(huán):有向無循環(huán)圖,用于描述程序段(進程圖,用于描述程序段(進程) )之間執(zhí)行的前之間執(zhí)行的前后關(guān)系。后關(guān)系。 結(jié)點結(jié)點:

2、 :用于描述一個程序段或進程,乃至用于描述一個程序段或進程,乃至一條語句。一條語句。 有向邊:用于表示兩個結(jié)點之間存在的前有向邊:用于表示兩個結(jié)點之間存在的前趨關(guān)系,用趨關(guān)系,用“”“”表示。表示。 2.12.1前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行第二章進 程 管 理 如有如有PiPjPiPj,則稱,則稱PiPi是是PjPj的直接前趨,的直接前趨,而稱而稱PjPj是是PiPi的直接后繼。的直接后繼。 初始結(jié)點:沒有前趨的結(jié)點。初始結(jié)點:沒有前趨的結(jié)點。 終止結(jié)點:沒有后繼的結(jié)點。終止結(jié)點:沒有后繼的結(jié)點。 重量:用于表示該結(jié)點所含有的程序量重量:用于表示該結(jié)點所含有的程序量或結(jié)點的執(zhí)行時間?;蚪Y(jié)點

3、的執(zhí)行時間。例如前面圖例如前面圖2-12-1就是一個前趨關(guān)系圖。就是一個前趨關(guān)系圖。注意:前趨圖中必須不存在循環(huán)。注意:前趨圖中必須不存在循環(huán)。第二章進 程 管 理 例題:若有以下前趨關(guān)系:例題:若有以下前趨關(guān)系:P1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6P8,P7P9,P8P9,求其前趨圖。,求其前趨圖。解:題中前趨關(guān)系也表示為:解:題中前趨關(guān)系也表示為:P=P1,P2,P3,P4,P5,P6,P7,P8,P9=(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8

4、),(P7,P9),(P8,P9) 則前趨圖如下所示:則前趨圖如下所示:第二章進 程 管 理 圖圖 2-12-1具有具有9 9節(jié)點的前趨圖節(jié)點的前趨圖 P1P3P8P9P4P2P5P6P7S1S2S3(a) 具有九個結(jié)點的前趨圖(b ) 具有循環(huán)的圖第二章進 程 管 理 例:某一具有下述四條語句的程序段,求例:某一具有下述四條語句的程序段,求其前趨圖。其前趨圖。S1: a:=x+2 S2: b:=y+4S1: a:=x+2 S2: b:=y+4S3: c:=a+b S3: c:=a+b S4: d:=c+b S4: d:=c+b S1S2S3S4圖圖 2-22-2四條語句的前趨關(guān)系四條語句的前

5、趨關(guān)系 第二章進 程 管 理 2.1.22.1.2程序的順序執(zhí)行程序的順序執(zhí)行1. 1. 程序的順序執(zhí)行程序的順序執(zhí)行一個應(yīng)用程序可分成若干個程序段,在各程一個應(yīng)用程序可分成若干個程序段,在各程序段之間必須按照某種先后次序順序執(zhí)行。例如序段之間必須按照某種先后次序順序執(zhí)行。例如下述三條語句的程序段下述三條語句的程序段: :S1: a:=x+y; S2: b:=a-5; S3:c:=b+1;其執(zhí)行順序:其執(zhí)行順序:(a ) 程序的順序執(zhí)行(b ) 三條語句的順序執(zhí)行I1C1P1I2C2P2S1S2S3圖圖 2-32-3程序的順序執(zhí)行程序的順序執(zhí)行 第二章進 程 管 理 2. 2. 程序順序執(zhí)行時

6、的特征程序順序執(zhí)行時的特征 (1) (1) 順序性:順序性: 處理機的操作嚴(yán)格按照程序所規(guī)定的順處理機的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。序執(zhí)行。 (2) (2) 封閉性:封閉性: 即程序運行時獨占全機資源,程序一旦即程序運行時獨占全機資源,程序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響。開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響。 (3) (3) 可再現(xiàn)性:可再現(xiàn)性: 只要程序執(zhí)行時的環(huán)境、條件相同,當(dāng)只要程序執(zhí)行時的環(huán)境、條件相同,當(dāng)程序重復(fù)執(zhí)行時,都將獲得相同的結(jié)果。程序重復(fù)執(zhí)行時,都將獲得相同的結(jié)果。第二章進 程 管 理 2.1.32.1.3程序的并發(fā)執(zhí)行及其特征程序的并發(fā)執(zhí)行及其特征1程序的

7、并發(fā)執(zhí)行程序的并發(fā)執(zhí)行若多個程序中的每一個都劃分為輸若多個程序中的每一個都劃分為輸入程序入程序Ii 、計算程序、計算程序Ci和打印程序和打印程序Pi, ,則則三者之間,存在著三者之間,存在著IiCiPi這樣的前趨這樣的前趨關(guān)系,在對一批程序進行處理時,可使關(guān)系,在對一批程序進行處理時,可使它們并發(fā)執(zhí)行。如圖它們并發(fā)執(zhí)行。如圖2-4示出。示出。 第二章進 程 管 理 圖圖2-4 2-4 并發(fā)執(zhí)行時的前趨圖并發(fā)執(zhí)行時的前趨圖 P1P2P3P4I1I2I3I4C1C2C3C4P Pi-1i-1、C Ci i、I Ii+1i+1之間,可以并發(fā)執(zhí)行。之間,可以并發(fā)執(zhí)行。第二章進 程 管 理 2 2程序并

8、發(fā)執(zhí)行時的特征程序并發(fā)執(zhí)行時的特征1) 1) 間斷性間斷性程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)資源,以及為完成同一項任務(wù)而相互合作,資源,以及為完成同一項任務(wù)而相互合作,致使在這些并發(fā)執(zhí)行的程序之間,形成了致使在這些并發(fā)執(zhí)行的程序之間,形成了相相互制約互制約(即有時序性)的關(guān)系。相互制約將(即有時序性)的關(guān)系。相互制約將導(dǎo)致并發(fā)程序具有導(dǎo)致并發(fā)程序具有“執(zhí)行執(zhí)行暫停暫停執(zhí)行執(zhí)行”這這種間斷性的活動規(guī)律。種間斷性的活動規(guī)律。 第二章進 程 管 理 2) 2) 失去封閉性失去封閉性程序在并發(fā)執(zhí)行時,是多個程序共享系程序在并發(fā)執(zhí)行時,是多個程序共享系統(tǒng)中的各種資源,因

9、而這些資源的狀態(tài)將由統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行失去了封多個程序來改變,致使程序的運行失去了封閉性。閉性。 3) 不可再現(xiàn)性不可再現(xiàn)性程序在并發(fā)執(zhí)行時,由于失去了封閉程序在并發(fā)執(zhí)行時,由于失去了封閉性,也將導(dǎo)致其再失去可再現(xiàn)性。性,也將導(dǎo)致其再失去可再現(xiàn)性。第二章進 程 管 理 例如,有循環(huán)程序例如,有循環(huán)程序A A、B1B1、B2B2,它們共享一,它們共享一個變量個變量N N。 A: N:=N+1 B1: Print(N) A: N:=N+1 B1: Print(N) B2: N:=0B2: N:=0 若三程序以不同的速度運行。則可能出現(xiàn)若三程序以不同

10、的速度運行。則可能出現(xiàn)下述三種情況下述三種情況( (假定某時刻變量假定某時刻變量N N的值為的值為n)n)。 (1) A B1 B2(1) A B1 B2,得到的,得到的N N值分別為值分別為n+1n+1,n+1n+1,0 0。 (2)B1 B2 A(2)B1 B2 A,此時得到的,此時得到的N N值分別為值分別為n n,0 0,1 1。 (3)B1 A B2(3)B1 A B2,此時得到的,此時得到的N N值分別為值分別為n n,n+1n+1,0 0。 因此,多程序不能進行并發(fā)執(zhí)行。因此,多程序不能進行并發(fā)執(zhí)行。第二章進 程 管 理 2.22.2進程的描述進程的描述2.2.1 2.2.1 進

11、程的定義和特征進程的定義和特征1. 1. 進程的定義進程的定義 在多道程序環(huán)境下,程序不能并發(fā)執(zhí)行。在多道程序環(huán)境下,程序不能并發(fā)執(zhí)行。為使程序能并發(fā)執(zhí)行,且為了對并發(fā)執(zhí)行為使程序能并發(fā)執(zhí)行,且為了對并發(fā)執(zhí)行的程序加以描述和控制,引入了的程序加以描述和控制,引入了“進程進程”的概念。的概念。 進程定義:是進程實體的運行過程,系進程定義:是進程實體的運行過程,系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。統(tǒng)進行資源分配和調(diào)度的一個獨立單位。第二章進 程 管 理 進程的結(jié)構(gòu)進程的結(jié)構(gòu)進程實體組成進程實體組成程序段程序段數(shù)據(jù)段數(shù)據(jù)段PCBPCB進程實體組成進程實體組成程序段程序段數(shù)據(jù)段數(shù)據(jù)段PCBPCB P

12、CB PCB是特殊的數(shù)據(jù)結(jié)構(gòu),記錄了進程的各是特殊的數(shù)據(jù)結(jié)構(gòu),記錄了進程的各種信息,是進程存在的唯一標(biāo)識。種信息,是進程存在的唯一標(biāo)識。 OSOS對進程的管理主要通過進程控制塊對進程的管理主要通過進程控制塊PCB(Process Control Block)PCB(Process Control Block)。第二章進 程 管 理 2.2.進程的特征進程的特征1) 1) 動態(tài)性動態(tài)性進程的實質(zhì)是進程實體的一次執(zhí)行過程,進程的實質(zhì)是進程實體的一次執(zhí)行過程,因此,動態(tài)性是進程的最基本的特征。因此,動態(tài)性是進程的最基本的特征。 “ “由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤消由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤

13、消而消亡而消亡”。 進程實體有一定的生命期。進程實體有一定的生命期。 第二章進 程 管 理 2) 2) 并發(fā)性并發(fā)性 多個進程實體同存于內(nèi)存中,且能在一多個進程實體同存于內(nèi)存中,且能在一段時間內(nèi)同時運行。段時間內(nèi)同時運行。 是是OSOS引入進程的目的。引入進程的目的。3) 3) 獨立性獨立性進程實體是一個能獨立運行、獨立分配進程實體是一個能獨立運行、獨立分配資源和獨立接受調(diào)度的基本單位。資源和獨立接受調(diào)度的基本單位。4 4)異步性)異步性第二章進 程 管 理 2.2.2 2.2.2 進程的基本狀態(tài)及轉(zhuǎn)換進程的基本狀態(tài)及轉(zhuǎn)換1) 1) 就緒就緒(Ready)(Ready)狀態(tài)狀態(tài)就緒隊列。就緒隊

14、列。2) 2) 執(zhí)行狀態(tài)執(zhí)行狀態(tài)進程獲得進程獲得CPUCPU正在執(zhí)行。正在執(zhí)行。3) 3) 阻塞狀態(tài)阻塞狀態(tài)/ /等待狀態(tài)等待狀態(tài)/ /封鎖狀態(tài)封鎖狀態(tài)正在執(zhí)行的進程由于發(fā)生某事件而暫時正在執(zhí)行的進程由于發(fā)生某事件而暫時無法繼續(xù)執(zhí)行時,便放棄處理機而處于暫無法繼續(xù)執(zhí)行時,便放棄處理機而處于暫停狀態(tài),亦即進程的執(zhí)行受到阻塞。停狀態(tài),亦即進程的執(zhí)行受到阻塞。 阻塞隊列(可能有多個)。阻塞隊列(可能有多個)。思考:阻塞是主思考:阻塞是主動行為還是被動動行為還是被動行為?行為?第二章進 程 管 理 圖圖2-5 2-5 進程的三種基本狀態(tài)及其轉(zhuǎn)換進程的三種基本狀態(tài)及其轉(zhuǎn)換 就緒阻塞執(zhí)行時間片完進程調(diào)度I

15、/O完成I/O請求2.2.三基態(tài)間轉(zhuǎn)換三基態(tài)間轉(zhuǎn)換第二章進 程 管 理 3 3創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)創(chuàng)建狀態(tài)和終止?fàn)顟B(tài) 1) 1) 創(chuàng)建狀態(tài)創(chuàng)建狀態(tài)創(chuàng)建進程步驟:創(chuàng)建進程步驟:(1 1)為新進程創(chuàng)建)為新進程創(chuàng)建PCBPCB,并填寫必要的管理,并填寫必要的管理信息;(進行到此步為創(chuàng)建狀態(tài))信息;(進行到此步為創(chuàng)建狀態(tài))(2 2)把該進程轉(zhuǎn)入就緒狀態(tài)并插入就緒隊列)把該進程轉(zhuǎn)入就緒狀態(tài)并插入就緒隊列之中。之中。2) 2) 終止?fàn)顟B(tài)終止?fàn)顟B(tài)進程終止步驟:進程終止步驟:(1 1)操作系統(tǒng)進行善后處理;)操作系統(tǒng)進行善后處理;(2 2)將其)將其PCBPCB清零,并將清零,并將PCBPCB空間返還系統(tǒng)???/p>

16、間返還系統(tǒng)。第二章進 程 管 理 圖圖2-6 2-6 進程的五種基本狀態(tài)及轉(zhuǎn)換進程的五種基本狀態(tài)及轉(zhuǎn)換 創(chuàng)建就緒阻塞執(zhí)行終止許可I/O請求釋放I/O完成時間片完進程調(diào)度第二章進 程 管 理 2.2.3. 2.2.3. 掛起操作和進程狀態(tài)轉(zhuǎn)換掛起操作和進程狀態(tài)轉(zhuǎn)換 1. 1.引入掛起狀態(tài)的原因引入掛起狀態(tài)的原因 (1)(1)終端用戶的請求。終端用戶的請求。 程序調(diào)試、檢測。程序調(diào)試、檢測。 (2)(2)父進程請求。父進程請求。 父進程修改子進程或協(xié)調(diào)各子進程間活動。父進程修改子進程或協(xié)調(diào)各子進程間活動。 (3)(3)負(fù)荷調(diào)節(jié)的需要。負(fù)荷調(diào)節(jié)的需要。 當(dāng)系統(tǒng)中的工作負(fù)荷較重時把一些不重要的當(dāng)系統(tǒng)中

17、的工作負(fù)荷較重時把一些不重要的進程掛起。進程掛起。 (4)(4)操作系統(tǒng)的需要。操作系統(tǒng)的需要。 操作系統(tǒng)掛起某些進程,以便檢查運行中的操作系統(tǒng)掛起某些進程,以便檢查運行中的資源使用情況或進行記賬。資源使用情況或進行記賬。 第二章進 程 管 理 2.2.進程狀態(tài)的轉(zhuǎn)換進程狀態(tài)的轉(zhuǎn)換掛起狀態(tài)掛起狀態(tài)/ /靜止?fàn)顟B(tài)靜止?fàn)顟B(tài) 非掛起狀態(tài)非掛起狀態(tài)/ /活動狀態(tài)活動狀態(tài)活動就緒活動就緒靜止就緒靜止就緒活動阻塞活動阻塞靜止阻塞靜止阻塞某事件某事件發(fā)生發(fā)生掛起掛起激活激活某事件某事件發(fā)生發(fā)生掛起掛起激活激活第二章進 程 管 理 圖圖 2-72-7具有掛起狀態(tài)的進程狀態(tài)圖具有掛起狀態(tài)的進程狀態(tài)圖 活動就緒靜

18、止就緒執(zhí)行掛起激活釋放掛起活動阻塞靜止阻塞掛起激活釋放請求I/O調(diào)度第二章進 程 管 理 圖圖2-8 2-8 雙掛起雙掛起6 6狀態(tài)進程模型狀態(tài)進程模型創(chuàng)建終止執(zhí)行活動就緒活動阻塞靜止阻塞靜止就緒許可許可請 求 I/O釋 放激活掛起釋 放掛起激活掛起釋放第二章進 程 管 理 2.2.42.2.4進程管理中的數(shù)據(jù)結(jié)構(gòu)進程管理中的數(shù)據(jù)結(jié)構(gòu)1.OS1.OS中用于管理控制的數(shù)據(jù)結(jié)構(gòu)(了)中用于管理控制的數(shù)據(jù)結(jié)構(gòu)(了)2.2.進程控制塊的作用進程控制塊的作用 是進程實體的一部分,是操作系統(tǒng)中最是進程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。重要的記錄型數(shù)據(jù)結(jié)構(gòu)。 PCBPCB中記錄了操作系統(tǒng)所需

19、的、用于描中記錄了操作系統(tǒng)所需的、用于描述進程的當(dāng)前情況以及控制進程運行的全述進程的當(dāng)前情況以及控制進程運行的全部信息。部信息。 OSOS是根據(jù)是根據(jù)PCBPCB來對并發(fā)執(zhí)行的進程進行來對并發(fā)執(zhí)行的進程進行控制和管理的??刂坪凸芾淼?。 PCBPCB是進程存在的惟一標(biāo)志。是進程存在的惟一標(biāo)志。 第二章進 程 管 理 3 3進程控制塊中的信息進程控制塊中的信息內(nèi)符:系統(tǒng)內(nèi)符:系統(tǒng)與調(diào)度有關(guān)的其他參數(shù)與調(diào)度有關(guān)的其他參數(shù) 事件(阻塞原因)事件(阻塞原因)資源清單資源清單PCBPCB1)1)進程標(biāo)識符進程標(biāo)識符外符:用戶外符:用戶2)2)進程調(diào)度信息進程調(diào)度信息進程狀態(tài)進程狀態(tài)進程優(yōu)先級進程優(yōu)先級3)

20、3)進程控制信息進程控制信息程序、數(shù)據(jù)地址程序、數(shù)據(jù)地址進程通信、同步機制進程通信、同步機制鏈接指針鏈接指針4)4)處理機信息處理機信息1)1)進程標(biāo)識符進程標(biāo)識符外符:用戶外符:用戶2)2)進程調(diào)度信息進程調(diào)度信息進程狀態(tài)進程狀態(tài)進程優(yōu)先級進程優(yōu)先級3)3)進程控制信息進程控制信息程序、數(shù)據(jù)地址程序、數(shù)據(jù)地址第二章進 程 管 理 4. 4. 進程控制塊的組織方式進程控制塊的組織方式1 1)線性方式)線性方式:PCB:PCB存放在一張線性表里存放在一張線性表里2) 2) 鏈接方式鏈接方式PCB14PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB93087901執(zhí)行指針就緒隊列指針

21、阻塞隊列指針空閑隊列指針圖圖 2-92-9PCBPCB鏈接隊列示意圖鏈接隊列示意圖第二章進 程 管 理 2) 2) 索引方式索引方式執(zhí)行指針就緒索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7阻塞索引表就緒表指針阻塞表指針圖圖 2-102-10按索引方式組織按索引方式組織PCBPCB 第二章進 程 管 理 2.32.3進進 程程 控控 制制 進程控制一般是由進程控制一般是由OSOS的內(nèi)核中的的內(nèi)核中的原語原語來實現(xiàn)的。來實現(xiàn)的。 進程控制進程控制1.1.創(chuàng)建進程創(chuàng)建進程2.2.進程狀態(tài)轉(zhuǎn)換進程狀態(tài)轉(zhuǎn)換3.3.終止進程終止進程第二章進 程 管 理 2.3.12.3.1操作系統(tǒng)內(nèi)核操

22、作系統(tǒng)內(nèi)核( (了)了) 原語:由若干條指令組成用于完成一定功能原語:由若干條指令組成用于完成一定功能的一個過程。用于實現(xiàn)進程的通信和控制。的一個過程。用于實現(xiàn)進程的通信和控制。 原語與一般過程的區(qū)別:原語是原子操作。原語與一般過程的區(qū)別:原語是原子操作。 原子操作:指一個操作中的所有動作要么全原子操作:指一個操作中的所有動作要么全做,要么全不做。是一個不可分割的基本單位。做,要么全不做。是一個不可分割的基本單位。 原子操作在管態(tài)下執(zhí)行,常駐內(nèi)存。原子操作在管態(tài)下執(zhí)行,常駐內(nèi)存。 CPUCPU執(zhí)行執(zhí)行狀態(tài)狀態(tài)管態(tài)管態(tài)/ /系統(tǒng)態(tài)系統(tǒng)態(tài)/ /特權(quán)態(tài)特權(quán)態(tài)/ /核心態(tài)核心態(tài)目態(tài)目態(tài)/ /常態(tài)常態(tài)/

23、 /用戶態(tài)用戶態(tài)第二章進 程 管 理 2.3.22.3.2進程的創(chuàng)建進程的創(chuàng)建1.1.進程層級結(jié)構(gòu)進程層級結(jié)構(gòu)2 2進程圖進程圖描述一個進程家族關(guān)系的有向樹。描述一個進程家族關(guān)系的有向樹。DEFGBCIJKMALH圖圖2-11 2-11 進程樹進程樹 第二章進 程 管 理 3 3引起創(chuàng)建進程的事件引起創(chuàng)建進程的事件(1) (1) 用戶登錄。用戶登錄。 分時系統(tǒng)中增加新用戶。分時系統(tǒng)中增加新用戶。(2) (2) 作業(yè)調(diào)度。作業(yè)調(diào)度。 (3) (3) 提供服務(wù)。提供服務(wù)。 (4) (4) 應(yīng)用請求。應(yīng)用請求。系統(tǒng)創(chuàng)建系統(tǒng)創(chuàng)建用戶進程自行創(chuàng)建用戶進程自行創(chuàng)建第二章進 程 管 理 4 4進程的創(chuàng)建過程

24、進程的創(chuàng)建過程 調(diào)用進程創(chuàng)建原語調(diào)用進程創(chuàng)建原語Creat( ) Creat( ) 。(1)(1)申請空白申請空白PCBPCB。(2)(2)為新進程分配資源。為新進程分配資源。 主要是內(nèi)存資源主要是內(nèi)存資源(3)(3)初始化初始化PCBPCB。 初始化標(biāo)識信息初始化標(biāo)識信息 初始化處理機狀態(tài)信息初始化處理機狀態(tài)信息 初始化處理機控制信息初始化處理機控制信息使程序計數(shù)器指向程序的使程序計數(shù)器指向程序的入口地址入口地址棧指針指向棧頂棧指針指向棧頂設(shè)置進程狀態(tài)為就緒設(shè)置進程狀態(tài)為就緒設(shè)置進程優(yōu)先級為最低級設(shè)置進程優(yōu)先級為最低級(4)(4)將新進程插入就緒隊列將新進程插入就緒隊列第二章進 程 管 理

25、2.2.3 2.2.3進程的終止進程的終止 1 1引起進程終止的事件引起進程終止的事件1)1)正常結(jié)束正常結(jié)束在程序結(jié)尾一般有一個用于表示進程已經(jīng)在程序結(jié)尾一般有一個用于表示進程已經(jīng)運行完成的指令。當(dāng)運行到該指令時,將產(chǎn)生運行完成的指令。當(dāng)運行到該指令時,將產(chǎn)生一個中斷去通知一個中斷去通知OSOS本進程已經(jīng)完成。本進程已經(jīng)完成。 2)2)異常結(jié)束異常結(jié)束運行中出現(xiàn)某些錯誤和故障運行中出現(xiàn)某些錯誤和故障 (1)(1)越界錯誤。越界錯誤。 所訪問的存儲區(qū)超出。所訪問的存儲區(qū)超出。第二章進 程 管 理 (2) (2)保護錯。保護錯。 進程對資源的訪問方式不當(dāng)。進程對資源的訪問方式不當(dāng)。 (3)(3)

26、非法指令。非法指令。 進程試圖去執(zhí)行一條不存在的指令。進程試圖去執(zhí)行一條不存在的指令。 (4)(4)特權(quán)指令錯。特權(quán)指令錯。 進程試圖去執(zhí)行進程試圖去執(zhí)行OSOS的指令。的指令。(5)(5)運行超時。運行超時。 進程的執(zhí)行時間超過了指定的最大值。進程的執(zhí)行時間超過了指定的最大值。第二章進 程 管 理 6)6)等待超時。等待超時。 進程等待某事件的時間超過了規(guī)定的進程等待某事件的時間超過了規(guī)定的最大值。最大值。(7)(7)算術(shù)運算錯。算術(shù)運算錯。 進程試圖去執(zhí)行錯誤的運算。進程試圖去執(zhí)行錯誤的運算。(8)I/O(8)I/O故障。故障。在在I/OI/O過程中發(fā)生了錯誤等。過程中發(fā)生了錯誤等。 第二

27、章進 程 管 理 3) 3) 外界干預(yù)外界干預(yù)指進程應(yīng)外界的請求而終止運行。指進程應(yīng)外界的請求而終止運行。(1) (1) 操作員或操作系統(tǒng)干預(yù)。操作員或操作系統(tǒng)干預(yù)。 由于某種原因,例如,發(fā)生了死鎖,由于某種原因,例如,發(fā)生了死鎖,由操作員或操作系統(tǒng)終止該進程。由操作員或操作系統(tǒng)終止該進程。(2) (2) 父進程請求。父進程請求。(3) (3) 父進程終止。父進程終止。第二章進 程 管 理 2 2進程的終止過程進程的終止過程 OSOS調(diào)用進程撤銷原語調(diào)用進程撤銷原語destroy()destroy()。(1)(1)根據(jù)進程標(biāo)識符,檢索出該進程的根據(jù)進程標(biāo)識符,檢索出該進程的PCBPCB,從中讀

28、出該進程的狀態(tài)。從中讀出該進程的狀態(tài)。(2)(2)若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,并重新進行調(diào)度。即終止該進程的執(zhí)行,并重新進行調(diào)度。 (3)(3)終止所有子孫進程。終止所有子孫進程。(4)(4)將全部資源歸還給其父進程或系統(tǒng)。將全部資源歸還給其父進程或系統(tǒng)。(5)(5)將被終止進程將被終止進程(PCB)(PCB)從所在隊列從所在隊列( (或鏈或鏈表表) )中移出。中移出。 第二章進 程 管 理 2.3.42.3.4進程的阻塞與喚醒進程的阻塞與喚醒 1. 1. 引起進程阻塞和喚醒的事件引起進程阻塞和喚醒的事件1)1)等待資源等待資源2)2)等

29、待等待I/OI/O 3) 3)新數(shù)據(jù)尚未到達新數(shù)據(jù)尚未到達 4)4)無新工作可做無新工作可做 如系統(tǒng)中的發(fā)送、接受進程。如系統(tǒng)中的發(fā)送、接受進程。第二章進 程 管 理 2 2進程阻塞過程(進程阻塞過程(BlockBlock原語過程)原語過程) 1)1)立即停止執(zhí)行,改變立即停止執(zhí)行,改變PCBPCB中狀態(tài)信息中狀態(tài)信息 2 2)將進程放入阻塞隊列中)將進程放入阻塞隊列中3 3進程喚醒過程(進程喚醒過程(wakeupwakeup原語過程)原語過程) 1)1)把被阻塞的進程從等待該事件的阻塞隊把被阻塞的進程從等待該事件的阻塞隊列中移出列中移出 2)2)將其將其PCBPCB中的現(xiàn)行狀態(tài)由阻塞改為就緒

30、中的現(xiàn)行狀態(tài)由阻塞改為就緒 3)3)將該將該PCBPCB插入到就緒隊列中插入到就緒隊列中注:注:block原語和原語和wakeup原語是一對相反原語是一對相反的原語,需成對出現(xiàn)。的原語,需成對出現(xiàn)。第二章進 程 管 理 2.3.52.3.5進程的掛起與激活進程的掛起與激活1 1進程掛起的原因進程掛起的原因(回憶)(回憶) 1 1)終端用戶請求)終端用戶請求 2 2)父進程請求)父進程請求 3 3)負(fù)荷調(diào)節(jié)需要)負(fù)荷調(diào)節(jié)需要2.2.掛起過程(掛起過程(SuspendSuspend原語過程)原語過程) 1 1)查)查PCBPCB狀態(tài)信息,由活動狀態(tài)改為靜止?fàn)顟B(tài)信息,由活動狀態(tài)改為靜止?fàn)顟B(tài)。狀態(tài)。思

31、考:進程能否由執(zhí)行到掛起?思考:進程能否由執(zhí)行到掛起? 2 2)將)將PCBPCB中信息復(fù)制到內(nèi)存指定區(qū)域。中信息復(fù)制到內(nèi)存指定區(qū)域。 3 3)將進程移除內(nèi)存。)將進程移除內(nèi)存。 思考:為何要復(fù)制思考:為何要復(fù)制PCBPCB中信息到內(nèi)存?中信息到內(nèi)存?第二章進 程 管 理 3 3進程的激活過程(進程的激活過程(ActiveActive原語過程)原語過程) 1)1)將進程從外存調(diào)入內(nèi)存將進程從外存調(diào)入內(nèi)存 2)2)檢查檢查PCBPCB狀態(tài),由靜止改為活動,并送入狀態(tài),由靜止改為活動,并送入相應(yīng)隊列。相應(yīng)隊列。 3)3)若進入就緒隊列,則與當(dāng)前進程比較優(yōu)若進入就緒隊列,則與當(dāng)前進程比較優(yōu)先級的。先

32、級的。 注:注: Suspend原語和原語和Active原語是一對相反原語是一對相反的原語,需成對出現(xiàn)。的原語,需成對出現(xiàn)。第二章進 程 管 理 OSOS管理進程同步時主要做兩個工作:管理進程同步時主要做兩個工作:1.1.保證多個進程互斥的訪問臨界資源。保證多個進程互斥的訪問臨界資源。2.2.協(xié)調(diào)多進程間執(zhí)行順序,以實現(xiàn)程序可協(xié)調(diào)多進程間執(zhí)行順序,以實現(xiàn)程序可再現(xiàn)性。再現(xiàn)性。2.42.4進進 程程 同同 步步 第二章進 程 管 理 進進程程同同步步機機制制軟、硬件方法軟、硬件方法信號量信號量機制機制整型信號量整型信號量記錄型信號量記錄型信號量信號量集信號量集管程機制管程機制ANDAND型信號量

33、集型信號量集一般型信號量集一般型信號量集第二章進 程 管 理 2.4.1 2.4.1進程同步的基本概念進程同步的基本概念1 1并發(fā)進程兩種關(guān)系并發(fā)進程兩種關(guān)系 (1)(1)共享資源(間接關(guān)系、互斥)。共享資源(間接關(guān)系、互斥)。 (2)(2)相互合作(直接關(guān)系、同步)。相互合作(直接關(guān)系、同步)。2. 2. 臨界資源:互斥共享臨界資源:互斥共享 以生產(chǎn)者以生產(chǎn)者- -消費者問題為例分析為何要互斥消費者問題為例分析為何要互斥共享臨界資源。共享臨界資源。第二章進 程 管 理 生產(chǎn)者生產(chǎn)者- -消費者消費者(producer-consumer)(producer-consumer)問題:問題:有一群

34、生產(chǎn)者進程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品有一群生產(chǎn)者進程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給消費者進程去消費。提供給消費者進程去消費。 假設(shè)由若干個緩沖區(qū)首尾相連形成一個環(huán)假設(shè)由若干個緩沖區(qū)首尾相連形成一個環(huán)形緩沖區(qū),由生產(chǎn)者進程生產(chǎn)產(chǎn)品放入緩沖區(qū)形緩沖區(qū),由生產(chǎn)者進程生產(chǎn)產(chǎn)品放入緩沖區(qū)中,由消費者從緩沖區(qū)中取走產(chǎn)品。中,由消費者從緩沖區(qū)中取走產(chǎn)品。 過程中遵守的原則:過程中遵守的原則:若緩沖區(qū)中產(chǎn)品滿則不能再生產(chǎn)產(chǎn)品放入緩若緩沖區(qū)中產(chǎn)品滿則不能再生產(chǎn)產(chǎn)品放入緩沖區(qū);沖區(qū);若緩沖區(qū)空則不能從緩沖區(qū)中取走產(chǎn)品消費若緩沖區(qū)空則不能從緩沖區(qū)中取走產(chǎn)品消費第二章進 程 管 理 簡化問題,形成模型:簡化問題,形成模

35、型:012in out假設(shè):假設(shè):3 3個緩沖區(qū)個緩沖區(qū)2 2個指針個指針1 1個變量個變量inin: :指向存放產(chǎn)品的緩沖區(qū)。指向存放產(chǎn)品的緩沖區(qū)。outout: :指向取產(chǎn)品的緩沖區(qū)。指向取產(chǎn)品的緩沖區(qū)。countercounter: :每生產(chǎn)一個產(chǎn)品值每生產(chǎn)一個產(chǎn)品值+1+1; 每取走一個產(chǎn)品,值每取走一個產(chǎn)品,值-1-1in/outin/out初值設(shè)為初值設(shè)為1 1,可能取值,可能取值0 0、1 1、2 2每生產(chǎn)一個產(chǎn)品,每生產(chǎn)一個產(chǎn)品,inin的下個取值為的下個取值為 in:=(in+1)mod 3in:=(in+1)mod 3in,outin,out重逢時可能有兩種情況:重逢時可能

36、有兩種情況:1 1)in=out,in=out,緩沖池空緩沖池空2 2)(in+1)mod 3=out(in+1)mod 3=out,緩沖區(qū)滿,緩沖區(qū)滿第二章進 程 管 理 1)1)兩進程公用變量:兩進程公用變量: Var nVar n:integerinteger; type item=type item=; var buffer: array0var buffer: array0,1 1,n-1of itemn-1of item; inin,out: 0out: 0,1 1,n-1n-1; counter: 0counter: 0,1 1,n n;2)2)兩進程局部變量兩進程局部變量 ne

37、xtp:Pnextp:P進程,存放每次剛生產(chǎn)出來的產(chǎn)品;進程,存放每次剛生產(chǎn)出來的產(chǎn)品; nextcnextc:C C進程,存放每次要消費的產(chǎn)品。進程,存放每次要消費的產(chǎn)品。 P-CP-C問題描述:問題描述:第二章進 程 管 理 producer: producer: repeatrepeat produce an item in nextpproduce an item in nextp; while counter=n do no-opwhile counter=n do no-op; bufferbufferinin:=nextp:=nextp; in:=(in+1)mod nin:=(

38、in+1)mod n; counter:=counter+1counter:=counter+1; until falseuntil false; 第二章進 程 管 理 consumer: consumer: repeatrepeat while counter=0 do no-opwhile counter=0 do no-op;nextc:=buffernextc:=bufferoutout;out:=(out+1) mod nout:=(out+1) mod n;counter:=counter-1counter:=counter-1;consumer the item in nextc

39、consumer the item in nextc; until falseuntil false; 第二章進 程 管 理 生產(chǎn)者程序和消費者程序分別執(zhí)行、順序生產(chǎn)者程序和消費者程序分別執(zhí)行、順序執(zhí)行時結(jié)果都是正確的,但若并發(fā)執(zhí)行就會執(zhí)行時結(jié)果都是正確的,但若并發(fā)執(zhí)行就會出現(xiàn)差錯。問題就在于這兩個進程共享變量出現(xiàn)差錯。問題就在于這兩個進程共享變量countercounter。生產(chǎn)者對它做加。生產(chǎn)者對它做加1 1操作,消費者對操作,消費者對它做減它做減1 1操作,這兩個操作在用機器語言實操作,這兩個操作在用機器語言實現(xiàn)時,??捎孟旅娴男问矫枋觯含F(xiàn)時,??捎孟旅娴男问矫枋觯?生產(chǎn)者進程對生產(chǎn)者進

40、程對counter加加1操作過程操作過程A:register1:=counter;B:register1:=register1+1;C:counter:=register1;消費者進程對消費者進程對counter減減1操作過程操作過程D:register2:=counter;E:register2:=register2-1;F:counter:=register2;第二章進 程 管 理 假設(shè)假設(shè)countercounter的當(dāng)前值是的當(dāng)前值是5 5:1)1)若先若先P P進程再進程再C C進程則共享變量進程則共享變量countercounter的的值仍為值仍為5 5;2)2)若先若先C C進程

41、再進程再P P進程則進程則countercounter值也還是值也還是5;5;3)3)若按下述順序執(zhí)行:若按下述順序執(zhí)行:A,B,D,E,C,F A,B,D,E,C,F ,則,則countercounter的值是的值是4 4;4)4)若按下述順序執(zhí)行:若按下述順序執(zhí)行:A,B,D,E,F,C,A,B,D,E,F,C,則則countercounter的值是的值是6 6; 程序失去了再現(xiàn)性。解決此問題的關(guān)鍵是應(yīng)程序失去了再現(xiàn)性。解決此問題的關(guān)鍵是應(yīng)把變量把變量countercounter作為臨界資源處理,亦即,令生產(chǎn)作為臨界資源處理,亦即,令生產(chǎn)者進程和消費者進程互斥地訪問變量者進程和消費者進程互

42、斥地訪問變量countercounter。 第二章進 程 管 理 3 3臨界區(qū)臨界區(qū)訪問臨界資源的進程可分為四個部分:訪問臨界資源的進程可分為四個部分:退出臨界資源并設(shè)立標(biāo)識退出臨界資源并設(shè)立標(biāo)識進入?yún)^(qū)進入?yún)^(qū)用于檢查臨界資源狀態(tài)用于檢查臨界資源狀態(tài)臨界區(qū)臨界區(qū)用于訪問臨界資源用于訪問臨界資源退出區(qū)退出區(qū)剩余區(qū)剩余區(qū)第二章進 程 管 理 訪問臨界資源的循環(huán)進程描述如下:訪問臨界資源的循環(huán)進程描述如下:repeatrepeatentry sectionentry sectioncritical sectioncritical section;exit sectionexit sectionrema

43、inder sectionremainder section;until falseuntil false; 第二章進 程 管 理 4 4同步機制應(yīng)遵循的規(guī)則(臨界區(qū)管同步機制應(yīng)遵循的規(guī)則(臨界區(qū)管理原則)理原則) (1)(1)空閑讓進。空閑讓進。 (2)(2)忙則等待。忙則等待。 (3)(3)有限等待。有限等待。 避免避免“死等死等”狀態(tài)。狀態(tài)。 (4)(4)讓權(quán)等待。讓權(quán)等待。 避免避免“忙等忙等”狀態(tài)。狀態(tài)。補補: :(5)(5)有限時間使用。有限時間使用。第二章進 程 管 理 補充:補充:5.5.互斥與同步的關(guān)系互斥與同步的關(guān)系1)1)區(qū)別:區(qū)別: 互斥:聯(lián)系松散互斥:聯(lián)系松散, ,取

44、用資源隨機取用資源隨機, ,有則用;有則用; 同步:聯(lián)系緊密,按序執(zhí)行,有資源也不一定同步:聯(lián)系緊密,按序執(zhí)行,有資源也不一定能用;能用;2)2)聯(lián)系:聯(lián)系: 都是進程間的相互制約關(guān)系,互斥是特殊的同都是進程間的相互制約關(guān)系,互斥是特殊的同步,二者統(tǒng)稱為進程同步。步,二者統(tǒng)稱為進程同步。 2.4.2 2.4.2 硬件同步硬件同步1.1.關(guān)中斷關(guān)中斷2.2.利用利用test-and-set(tstest-and-set(ts指令)指令)3.3.利用利用swapswap指令指令第二章進 程 管 理 S0時代表可用資源數(shù)時代表可用資源數(shù)0時代表等待資源的進程數(shù)時代表等待資源的進程數(shù)2.4.32.4.

45、3信號量機制信號量機制 最初由最初由DijkstraDijkstra提出。提出。 1 1整型信號量整型信號量定義整型信號量定義整型信號量S S,表示資源數(shù)目初,表示資源數(shù)目初值為值為1 1。與一般整型量不同,。與一般整型量不同,S S僅能通過原僅能通過原子操作子操作wait(S)wait(S)和和signal(S)signal(S)來訪問。來訪問。 早期這兩個操作一直被分別稱為早期這兩個操作一直被分別稱為P P、V V操操作,執(zhí)行時不可中斷。作,執(zhí)行時不可中斷。第二章進 程 管 理 P操作:申請資源操作:申請資源 1)若若S 0,不做任何操作;,不做任何操作; 2)若若S0,可進入臨界區(qū),同時

46、可進入臨界區(qū),同時S自減自減1變變?yōu)闉?,為臨資加鎖;,為臨資加鎖;P(S) 描述:描述:while S=0 do no-op;S:=S-1;V操作:釋放資源操作:釋放資源 1)退出臨界區(qū);退出臨界區(qū); 2)S自加自加1,解鎖;,解鎖;V(S)描述:描述: S:=S+1; 第二章進 程 管 理 臨資互斥訪問臨資互斥訪問:s在在0和和1之間變化之間變化 P(S) 臨界區(qū)臨界區(qū) V(S)整型信號量的缺點:整型信號量的缺點: 1)讓進程處于忙等狀態(tài))讓進程處于忙等狀態(tài) 2)對于等待的進程沒有相應(yīng)操作)對于等待的進程沒有相應(yīng)操作改進思想:增加阻塞、喚醒原語。改進思想:增加阻塞、喚醒原語。第二章進 程

47、管 理 2 2記錄型信號量記錄型信號量 記錄型信號量是由于它采用了記錄型的記錄型信號量是由于它采用了記錄型的數(shù)據(jù)結(jié)構(gòu)而得名的。它包含兩個數(shù)據(jù)項:數(shù)據(jù)結(jié)構(gòu)而得名的。它包含兩個數(shù)據(jù)項:S.value:S.value:代表資源數(shù)量。代表資源數(shù)量。S.LS.L:指向阻塞隊列的指針。:指向阻塞隊列的指針。 type semaphore=recordtype semaphore=recordvalue: integervalue: integer;L: list of processL: list of process;end end 第二章進 程 管 理 wait(S)wait(S)和和signal(S

48、)signal(S)操作可描述為:操作可描述為:procedure P(S)procedure P(S)var Svar S:semaphoresemaphore;beginbeginS.value:=S.value-1S.value:=S.value-1;if if S.value0S.value0 then block(S.L) then block(S.L);end end procedure V(S) procedure V(S)var S: semaphorevar S: semaphore;beginbeginS.value:=S.value+1S.value:=S.value+1

49、;if if S.value=0S.value=1 and and Sn=1 thenfor i:=1 to n do Si:=Si-1;endforelseplace the process in the waiting queue associated with the first Si found with Si=t1 and and Sn=tn then Si=t1 and and Sn=tn thenforfor i:=1 to n do i:=1 to n doSi:=Si-diSi:=Si-di;endforendforelseelsePlace the executing pr

50、ocess in the Place the executing process in the waiting queue of the first Si with waiting queue of the first Si with Siti and set its program counter to Si1S1時,記錄型信號量;時,記錄型信號量; 當(dāng)當(dāng)S=1S=1時,互斥信號量。時,互斥信號量。 (3)Swait(S(3)Swait(S,1 1,0)0)可控開關(guān)??煽亻_關(guān)。 當(dāng)當(dāng)S1S1時,允許多個進程進入某特定區(qū);時,允許多個進程進入某特定區(qū); 當(dāng)當(dāng)S=0S=0時,阻止任何進程進入特定

51、區(qū)。時,阻止任何進程進入特定區(qū)。第二章進 程 管 理 2.4.42.4.4信號量的應(yīng)用信號量的應(yīng)用1 1利用信號量實現(xiàn)進程互斥利用信號量實現(xiàn)進程互斥 為臨界資源設(shè)置一互斥信號量為臨界資源設(shè)置一互斥信號量mutexmutex,并,并設(shè)其初始值為設(shè)其初始值為1 1,然后將各進程訪問該資源的,然后將各進程訪問該資源的臨界區(qū)臨界區(qū)CSCS置于置于wait(mutex)wait(mutex)和和signal(mutex)signal(mutex)操作之間即可。利用信號量實現(xiàn)進程互斥的操作之間即可。利用信號量實現(xiàn)進程互斥的進程可描述如下:進程可描述如下: 第二章進 程 管 理 Var mutex: sem

52、aphore:=1Var mutex: semaphore:=1;beginbeginparbeginparbeginprocess 1: process 1: beginbegin repeatrepeat wait(mutex)wait(mutex); critical sectioncritical section signal(mutex)signal(mutex); remainder sectionremainder section until falseuntil false; endend 第二章進 程 管 理 process 2: process 2: beginbegin

53、repeatrepeatwait(mutex)wait(mutex);critical sectioncritical sectionsignal(mutex)signal(mutex);remainder sectionremainder section until falseuntil false; endendparendparend 注:用于互斥操作時注:用于互斥操作時P,V必須成對出現(xiàn)在同必須成對出現(xiàn)在同一個進程中。一個進程中。第二章進 程 管 理 補充:補充: 例題例題1:某超市門口為顧客準(zhǔn)備了:某超市門口為顧客準(zhǔn)備了100輛手推車,每位顧客在進去買東西輛手推車,每位顧客在進去買東

54、西時取一輛手推車,在買完東西結(jié)完賬以時取一輛手推車,在買完東西結(jié)完賬以后再把推車還回去,試用后再把推車還回去,試用PV操作實現(xiàn)顧操作實現(xiàn)顧客進程的同步互斥關(guān)系??瓦M程的同步互斥關(guān)系。1)進程同步、互斥分析進程同步、互斥分析2)信號量分析信號量分析第二章進 程 管 理 Var s:semaphore:=100 begin repeat p(s); 購物;購物; 結(jié)賬;結(jié)賬; v(s); until false end第二章進 程 管 理 例題例題2:桌子上有一個水果盤,每次:桌子上有一個水果盤,每次可以往里面放一個水果,爸爸專向盤子可以往里面放一個水果,爸爸專向盤子里放蘋果,兒子專等著吃盤子中的

55、蘋果,里放蘋果,兒子專等著吃盤子中的蘋果,把爸爸、兒子看做兩個進程,試用把爸爸、兒子看做兩個進程,試用P,V操作實現(xiàn)兩進程的并發(fā)執(zhí)行。操作實現(xiàn)兩進程的并發(fā)執(zhí)行。1)進程互斥、同步分析進程互斥、同步分析2)信號量分析)信號量分析第二章進 程 管 理 Var f,s:semaphore; f:=1; s:=0; begin parbegin father: begin repeat p(f); 放蘋果;放蘋果; v(s); untilfalse endson: begin repeat p(s); 吃蘋果;吃蘋果; v(f); untilfalse end parendend第二章進 程 管 理

56、2 2利用信號量實現(xiàn)前趨關(guān)系利用信號量實現(xiàn)前趨關(guān)系( (同步)同步)第二章進 程 管 理 圖2-12 前趨圖舉例 S4S5S3S1S6S2abcdefg第二章進 程 管 理 Var a,b,c,d,e,f,gVar a,b,c,d,e,f,g semaphore:=0,0,0,0,0,0,0semaphore:=0,0,0,0,0,0,0;beginbegin parbeginparbegin begin S1begin S1;signal(a)signal(a);signal(b)signal(b);endend; begin wait(a)begin wait(a);S2S2;signal

57、(c) signal(d)signal(c) signal(d); endend; begin wait(b)begin wait(b);S3S3;signal(e)signal(e);endend; begin wait(c)begin wait(c);S4S4;signal(f)signal(f);endend; begin wait(d)begin wait(d);S5S5;signal(g)signal(g);endend; begin wait(e)begin wait(e);wait(f)wait(f);wait(g)wait(g);S6 S6 end end; parendpar

58、end end end 第二章進 程 管 理 2.4.52.4.5管程機制管程機制管程的引入原因管程的引入原因1 1管程的定義:管程的定義: 把資源以數(shù)據(jù)結(jié)構(gòu)的形式抽象化,把對把資源以數(shù)據(jù)結(jié)構(gòu)的形式抽象化,把對資源的操作以過程、函數(shù)的形式加以定義。資源的操作以過程、函數(shù)的形式加以定義。 定義:定義:代表共享資源的數(shù)據(jù)結(jié)構(gòu),以及代表共享資源的數(shù)據(jù)結(jié)構(gòu),以及由對該共享數(shù)據(jù)結(jié)構(gòu)實施操作的一組過程由對該共享數(shù)據(jù)結(jié)構(gòu)實施操作的一組過程所組成的資源管理程序,共同構(gòu)成了一個所組成的資源管理程序,共同構(gòu)成了一個操作系統(tǒng)的資源管理模塊,稱之為管程。操作系統(tǒng)的資源管理模塊,稱之為管程。第二章進 程 管 理 進程對

59、共享資源的申請、釋放和其它操進程對共享資源的申請、釋放和其它操作,都是通管程來實現(xiàn)的,管程還可以根作,都是通管程來實現(xiàn)的,管程還可以根據(jù)資源的情況,或接受或阻塞進程的訪問,據(jù)資源的情況,或接受或阻塞進程的訪問,確保每次僅有一個進程使用共享資源,這確保每次僅有一個進程使用共享資源,這樣就可以統(tǒng)一管理對共享資源的所有訪問,樣就可以統(tǒng)一管理對共享資源的所有訪問,實現(xiàn)進程互斥。實現(xiàn)進程互斥。 管程被請求和釋放資源的進程所調(diào)用。管程被請求和釋放資源的進程所調(diào)用。 第二章進 程 管 理 管管程程組組成成 管程的名稱;管程的名稱; 管程內(nèi)共享變量聲明;管程內(nèi)共享變量聲明; 管程內(nèi)過程聲明;管程內(nèi)過程聲明;

60、管程內(nèi)變量初始化語句;管程內(nèi)變量初始化語句;第二章進 程 管 理 圖2-13管程的示意圖 共享數(shù)據(jù)一組操作過程初始化代碼進入隊列條件(不忙)隊列第二章進 程 管 理 管程的語法描述如下:管程的語法描述如下:type type monitor_namemonitor_name = MONITOR = MONITOR; ;define define ;use use ;procedure procedure ();beginbeginend; end; 第二章進 程 管 理 function function ():值類型;:值類型;beginbeginendend; beginbegin ;en

溫馨提示

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

評論

0/150

提交評論