課件第二章進程管理_第1頁
課件第二章進程管理_第2頁
課件第二章進程管理_第3頁
課件第二章進程管理_第4頁
課件第二章進程管理_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 Process Management 在傳統(tǒng)操作系統(tǒng)中,資源分配和獨立運行的基本單在傳統(tǒng)操作系統(tǒng)中,資源分配和獨立運行的基本單位是位是。OSOS的四大特征也都是基于進程而形成的。的四大特征也都是基于進程而形成的。 的主要功能是把處理機分配給進程以及協(xié)的主要功能是把處理機分配給進程以及協(xié)調各個進程之間的相互關系。由調各個進程之間的相互關系。由進程調度進程調度程序和程序和進程控進程控制制程序兩部分內(nèi)容組成。程序兩部分內(nèi)容組成。 第二章第二章 進程管理進程管理 進程的基本概念進程的基本概念 進程控制進程控制 進程同步進程同步 經(jīng)典進程同步問題經(jīng)典進程同步問題 管程機制管程機制 進程通信進程通信 線

2、程線程第二章第二章 進程管理進程管理2.1 2.1 進程的基本概念進程的基本概念 The basic concept of process一、前趨圖一、前趨圖 (Precedence Graph) 有向有向(DAG)。結點表示一條語句、一個程序段)。結點表示一條語句、一個程序段或進程。或進程。 結點間的有向邊表示結點間存在的結點間的有向邊表示結點間存在的偏序偏序(Partial Relation)或前趨關系或前趨關系(Precedence Relation) ” 。 例:例:Fig2-1 前趨圖示例前趨圖示例第二章第二章 進程管理進程管理 二、程序順序執(zhí)行二、程序順序執(zhí)行(Sequential

3、 Execution of Program) 程序執(zhí)行時,僅當前一操作完成后,才能執(zhí)行后繼操作。程序執(zhí)行時,僅當前一操作完成后,才能執(zhí)行后繼操作。2.1 2.1 進程的基本概念進程的基本概念 The basic concept of processC1P1I2C2P2I1特點:特點:順序性順序性(Sequential) 封閉性封閉性(Closeness)(只有程序本身的動作才能改變運行環(huán)境)只有程序本身的動作才能改變運行環(huán)境) 可再現(xiàn)性可再現(xiàn)性(Recurrence) 第二章第二章 進程管理進程管理三、程序并發(fā)執(zhí)行三、程序并發(fā)執(zhí)行(Concurrent Execution of Program

4、 )1 思想:思想:以輸入、計算、打印三個操作為例:以輸入、計算、打印三個操作為例: 對于某一作業(yè)的三個操作必存在順序關系,但多個作對于某一作業(yè)的三個操作必存在順序關系,但多個作業(yè)之間并不一定。其前趨圖可表示為:業(yè)之間并不一定。其前趨圖可表示為: I1 I2 I3 I4 C1 C2 C3 C4 P1 P2 P3 P4 由此圖可以看出,多個此類作業(yè)是可以并發(fā)執(zhí)行的。由此圖可以看出,多個此類作業(yè)是可以并發(fā)執(zhí)行的。2.1 2.1 進程的基本概念進程的基本概念 The basic concept of process第二章第二章 進程管理進程管理 例:例:s1:a:=x+2 s2:b:=y+1 s3:

5、 c:=a+b s4:d:=c+6 S1S4S3S22 特征特征:間斷性;:間斷性; 失去封閉性;失去封閉性; 不可再現(xiàn)性。不可再現(xiàn)性。S1、S2可并發(fā)執(zhí)行可并發(fā)執(zhí)行第二章第二章 進程管理進程管理例:有程序例:有程序A:N=N+1; B: print(N); N=0;設某時刻;設某時刻N的初值為的初值為n,則:則:若:若:N=N+1;PRINT(N); N=0 若:若:PRINT(N);N=N+1;N=0若:若:PRINT(N);N=0;N=N+1不可再現(xiàn)性舉例不可再現(xiàn)性舉例N變化結果為:變化結果為:n+1 n+1 0N變化結果為:變化結果為:n n+1 0N變化結果為:變化結果為:n 0 1

6、第二章第二章 進程管理進程管理2.1 2.1 進程的基本概念進程的基本概念 The basic concept of process四、并發(fā)執(zhí)行條件四、并發(fā)執(zhí)行條件(Bernstein條件條件) 設設R(Pi)=a1,a2,am:表示程序:表示程序Pi在執(zhí)行期間需參考的在執(zhí)行期間需參考的所有變量集,稱所有變量集,稱“讀集讀集”; W(Pi)=b1,b2, bn: 表示表示Pi在執(zhí)行期間要改變的所有在執(zhí)行期間要改變的所有變量的集合。稱變量的集合。稱“寫集寫集”。例:例: c:=a-b w:=c+1 x:=x+1 R()=a,b W() =c R()W()= R()= c W()=w R()W()

7、= R()W()=x第二章第二章 進程管理進程管理 Bernstein條件條件:若兩個程序(進程)若兩個程序(進程)p1、p2能滿足下述條能滿足下述條件,則它們便能并發(fā)執(zhí)行,且具有可再現(xiàn)性:件,則它們便能并發(fā)執(zhí)行,且具有可再現(xiàn)性: R(p1)W(p2)R(p2) W(p1) W(p1) W(p2) = n可理解為:可理解為: 兩程序互不把對方的結果作為輸入,且兩程序互不把對方的結果作為輸入,且不改變同一個量。不改變同一個量。例例第二章第二章 進程管理進程管理(一)進程的引入(一)進程的引入 用戶角度看,作業(yè)由若干子任務組成,只有子任務被執(zhí)行時才能用戶角度看,作業(yè)由若干子任務組成,只有子任務被執(zhí)

8、行時才能體現(xiàn)任務的功能。體現(xiàn)任務的功能。 “任務任務”和和“任務的執(zhí)行任務的執(zhí)行”截然不同。前者是任務的靜態(tài)描述,截然不同。前者是任務的靜態(tài)描述,后者體現(xiàn)了任務的動態(tài)行為。后者體現(xiàn)了任務的動態(tài)行為。同一段正文(同一段正文(2kB),分別加工兩批(),分別加工兩批(8kB,4kB)不同的數(shù)據(jù),)不同的數(shù)據(jù),執(zhí)行兩次。第執(zhí)行兩次。第1次執(zhí)行用打印機報告某些出錯信息,占用次執(zhí)行用打印機報告某些出錯信息,占用10kB內(nèi)存;內(nèi)存;第第2次執(zhí)行中無出錯數(shù)據(jù),不用打印機,但至少需要次執(zhí)行中無出錯數(shù)據(jù),不用打印機,但至少需要6kB主存。主存。 五、進程的描述五、進程的描述 (The description o

9、f process)2.1 2.1 進程的基本概念進程的基本概念 The basic concept of process第二章第二章 進程管理進程管理r 一個任務的一個任務的一次執(zhí)行一次執(zhí)行對應對應一個進程一個進程。第二章第二章 進程管理進程管理r (dynamic) :是進程最基本的特征。進程有一定生命周期。是進程最基本的特征。進程有一定生命周期。程序是指一組有序指令集合,是靜態(tài)實體。程序是指一組有序指令集合,是靜態(tài)實體。r (concurrent) :一段時間內(nèi),多個進程實體在內(nèi)存中可同時一段時間內(nèi),多個進程實體在內(nèi)存中可同時運行。引入進程的目的是為了能并發(fā)。程序不能并發(fā)。運行。引入進程

10、的目的是為了能并發(fā)。程序不能并發(fā)。r 獨立性獨立性(independent) :進程是一個能獨立運行、獨立獲得資源、獨進程是一個能獨立運行、獨立獲得資源、獨立調度的基本單位。程序不能做為一個獨立單位。立調度的基本單位。程序不能做為一個獨立單位。r 異步性異步性(asynchronism) :進程是按各自獨立、不可預知的速度前進,進程是按各自獨立、不可預知的速度前進,該特性將導致程序執(zhí)行的不可再現(xiàn)性。該特性將導致程序執(zhí)行的不可再現(xiàn)性。r 結構特征結構特征(structure feature) :為正確執(zhí)行并發(fā),每一個進程配置為正確執(zhí)行并發(fā),每一個進程配置一個數(shù)據(jù)結構,稱為進程控制塊(一個數(shù)據(jù)結構

11、,稱為進程控制塊(PCB)。)。如:鍵盤鍵入命令如:鍵盤鍵入命令 $date(二)(二) 進程的特征進程的特征動態(tài)性動態(tài)性并發(fā)性并發(fā)性第二章第二章 進程管理進程管理1 三種基本狀態(tài):三種基本狀態(tài): 1)就緒狀態(tài))就緒狀態(tài)(Ready ):進程已分配到除:進程已分配到除CPU外的所有資源。外的所有資源。只等只等CPU便可運行??山M成就緒隊列。便可運行。可組成就緒隊列。 2)執(zhí)行狀態(tài))執(zhí)行狀態(tài)(Running):已獲得:已獲得CPU正在運行。在單處理機正在運行。在單處理機系統(tǒng)中只能有一個。系統(tǒng)中只能有一個。 3)阻塞狀態(tài))阻塞狀態(tài)(Blocked) :因發(fā)生某事件(如:因發(fā)生某事件(如I/O、申請

12、緩沖區(qū)、申請緩沖區(qū)等)而暫停執(zhí)行。(等待、睡眠)??捎卸鄠€此狀態(tài)進程組等)而暫停執(zhí)行。(等待、睡眠)。可有多個此狀態(tài)進程組成一個或多個(由阻塞原因劃分)阻塞隊列。成一個或多個(由阻塞原因劃分)阻塞隊列。(三)進程的基本狀態(tài)(三)進程的基本狀態(tài) (The basic states of process )第二章第二章 進程管理進程管理1)新建狀態(tài))新建狀態(tài)(New state) :指進程剛被建立,尚未送入就緒指進程剛被建立,尚未送入就緒隊列的狀態(tài)。處于此狀態(tài)的進程是不完全的,當創(chuàng)建新進隊列的狀態(tài)。處于此狀態(tài)的進程是不完全的,當創(chuàng)建新進程的所有工作(分配進程控制塊、分配內(nèi)存空間、對程的所有工作(分

13、配進程控制塊、分配內(nèi)存空間、對PCB初始化等)完成后,操作系統(tǒng)就把該進程送入就緒隊列。初始化等)完成后,操作系統(tǒng)就把該進程送入就緒隊列。 2)終止狀態(tài))終止狀態(tài)(terminal state) :指進程已經(jīng)結束(正常、異指進程已經(jīng)結束(正常、異常)常)釋放了除釋放了除PCB之外的其他資源,之外的其他資源, OS已將它從就緒隊列已將它從就緒隊列中移出時的狀態(tài)。處于該狀態(tài)的進程不能再被調度執(zhí)行,中移出時的狀態(tài)。處于該狀態(tài)的進程不能再被調度執(zhí)行,2 新狀態(tài)和終止狀態(tài)新狀態(tài)和終止狀態(tài)第二章第二章 進程管理進程管理新進程新進程終止終止接納接納完成完成進程調度進程調度(時間片到時間片到)I/O完完成成等等

14、I/O請請求求等等中斷中斷執(zhí)行執(zhí)行阻塞阻塞就緒就緒3 進程狀態(tài)的轉換進程狀態(tài)的轉換(The conversion of process state)第二章第二章 進程管理進程管理三種基本狀態(tài)的變換體現(xiàn)了三種基本狀態(tài)的變換體現(xiàn)了OS的資源管理作用。的資源管理作用。進程的核心思想在于進程的核心思想在于CPU資源的分配。資源的分配。通常進程從執(zhí)行態(tài)到阻塞態(tài)是通常進程從執(zhí)行態(tài)到阻塞態(tài)是進程從阻塞態(tài)到就緒態(tài)是進程從阻塞態(tài)到就緒態(tài)是。不可能出現(xiàn)的狀態(tài)轉換:不可能出現(xiàn)的狀態(tài)轉換: n 第二章第二章 進程管理進程管理1) 進程掛起的原因進程掛起的原因(reasons for process suspenson

15、)4 進程的掛起狀態(tài)進程的掛起狀態(tài)(The suspended state of process) 第二章第二章 進程管理進程管理2) 狀態(tài)的轉換狀態(tài)的轉換 引入掛起狀態(tài)后,原狀態(tài)稱為引入掛起狀態(tài)后,原狀態(tài)稱為 “活動活動” (active) ,掛起,掛起后稱為后稱為“靜止靜止” (static) 。有:。有:執(zhí)行執(zhí)行、活動就緒活動就緒、活動阻塞活動阻塞、靜止就緒靜止就緒、靜止阻塞靜止阻塞幾種狀態(tài)。由幾種狀態(tài)。由“活動活動”到到“靜止靜止”的操的操作稱為作稱為“掛起掛起”,由,由“靜止靜止”到到“活動活動”的操作稱為的操作稱為“激激活活”。見見P32 圖圖2-6 Fig 2-6 Process

16、 State Transition Diagram with Suspend States第二章第二章 進程管理進程管理第二章第二章 進程管理進程管理六、進程控制塊六、進程控制塊( Process Control Block)(一)(一)PCB的作用的作用作用:作用: 2.1 2.1 進程的基本概念進程的基本概念 The basic concept of processpid進程狀態(tài)進程狀態(tài)現(xiàn)場現(xiàn)場優(yōu)先級優(yōu)先級阻塞原因阻塞原因程序地址程序地址同步機制同步機制資源清單資源清單鏈接指針鏈接指針第二章第二章 進程管理進程管理暫停暫停(斷點的處理(斷點的處理機環(huán)境保存)機環(huán)境保存)調度調度(查(查PC

17、B的優(yōu)先的優(yōu)先級及現(xiàn)場狀態(tài))級及現(xiàn)場狀態(tài))執(zhí)行執(zhí)行(查(查PCB中處理機的狀中處理機的狀態(tài)信息,恢復現(xiàn)場)態(tài)信息,恢復現(xiàn)場)執(zhí)行中執(zhí)行中查數(shù)據(jù)、程序的地查數(shù)據(jù)、程序的地址及與其他進程合作址及與其他進程合作理理 解:解:在進程的整個生命周期中,在進程的整個生命周期中,OS根據(jù)根據(jù)PCB對進程進行控制管對進程進行控制管理。創(chuàng)建理。創(chuàng)建(分配分配PCB)、調度、運行、同步、通信、暫停、阻塞、結、調度、運行、同步、通信、暫停、阻塞、結束束(回收回收PCB)。第二章第二章 進程管理進程管理1)進程標識信息:)進程標識信息:用于唯一地標識一個進程。用于唯一地標識一個進程。 外部標識符:用戶,用字母、數(shù)字構

18、成,便于記憶。外部標識符:用戶,用字母、數(shù)字構成,便于記憶。 內(nèi)部標識符:系統(tǒng),唯一整數(shù),通常就是進程的序號。內(nèi)部標識符:系統(tǒng),唯一整數(shù),通常就是進程的序號。還可根據(jù)需要設置父進程、子進程、用戶標識符。還可根據(jù)需要設置父進程、子進程、用戶標識符。2)處理機狀態(tài)信息:)處理機狀態(tài)信息:存儲處理機中各種寄存器的內(nèi)容,用于恢存儲處理機中各種寄存器的內(nèi)容,用于恢復現(xiàn)場??捎型ㄓ眉拇嫫?、指令計數(shù)器、程序狀態(tài)字復現(xiàn)場??捎型ㄓ眉拇嫫鳌⒅噶钣嫈?shù)器、程序狀態(tài)字PSW、用戶、用戶棧指針。棧指針。 3)進程調度信息:)進程調度信息:與進程調度和進程對換有關的內(nèi)容。進程狀與進程調度和進程對換有關的內(nèi)容。進程狀態(tài)、進

19、程優(yōu)先級、事件、與調度算法有關的其他信息。一般常包括態(tài)、進程優(yōu)先級、事件、與調度算法有關的其他信息。一般常包括進程已等待的時間和已使用的處理器時間等進程已等待的時間和已使用的處理器時間等 。(二)進程控制塊中的信息(二)進程控制塊中的信息(Information in PCB)第二章第二章 進程管理進程管理4)進程控制信息:)進程控制信息:程序數(shù)據(jù)的地址、進程同步和通信機制程序數(shù)據(jù)的地址、進程同步和通信機制(消息隊列和信號量)、資源清單(除(消息隊列和信號量)、資源清單(除CPU外進程所需的全外進程所需的全部資源及已分配的資源)、鏈接指針(本進程所在隊列的下部資源及已分配的資源)、鏈接指針(本

20、進程所在隊列的下一個進程的一個進程的PCB首址)。首址)。說明:說明:r 1)PCB是操作系統(tǒng)中最重要的數(shù)據(jù)結構是操作系統(tǒng)中最重要的數(shù)據(jù)結構 記錄進程的記錄進程的屬性信息;屬性信息; 標志進程的存在。標志進程的存在。r 2)進程的)進程的PCB與進程同時建立,同時撤消。與進程同時建立,同時撤消。第二章第二章 進程管理進程管理 由于由于PCB經(jīng)常被系統(tǒng)訪問,尤其是被運行頻率很高的進經(jīng)常被系統(tǒng)訪問,尤其是被運行頻率很高的進程調度及分派程序訪問,故程調度及分派程序訪問,故PCB應常駐內(nèi)存應常駐內(nèi)存。系統(tǒng)將所有的。系統(tǒng)將所有的PCB組成若干鏈表(或隊列),存放在組成若干鏈表(或隊列),存放在OS中專門

21、開辟的中專門開辟的PCB區(qū)內(nèi)。區(qū)內(nèi)。 在一個系統(tǒng)中,常常含有固定數(shù)目的在一個系統(tǒng)中,常常含有固定數(shù)目的PCB。對它們要進行。對它們要進行有效的組織與管理。有效的組織與管理。 常用的方式為:常用的方式為:r 鏈接方式鏈接方式r 索引方式索引方式(三)(三) PCB的組織方式的組織方式(The organization way of PCB )第二章第二章 進程管理進程管理1)鏈接方式)鏈接方式:相同狀態(tài)的:相同狀態(tài)的PCB鏈接成一個隊列。鏈接成一個隊列。阻塞隊列指針阻塞隊列指針就緒隊列指針就緒隊列指針執(zhí)行指針執(zhí)行指針空閑隊列指針空閑隊列指針PCB2PCB3PCB4PCB5PCB1PCB6PCB7

22、PCB8PCB943091708第二章第二章 進程管理進程管理2)索引方式)索引方式:相同狀態(tài)的:相同狀態(tài)的PCB建立一張索引表。建立一張索引表。執(zhí)行指針執(zhí)行指針就緒表指針就緒表指針阻塞表指針阻塞表指針PCB1PCB7PCB2PCB3PCB4PCB5PCB6就緒索引表就緒索引表阻塞索引表阻塞索引表第二章第二章 進程管理進程管理2.2 進程控制進程控制Process Control 進程控制的職能就是對系統(tǒng)中的全部進程實行有效的進程控制的職能就是對系統(tǒng)中的全部進程實行有效的管理,是進程管理中最基本的功能。管理,是進程管理中最基本的功能。 其主要表現(xiàn)為:進程的創(chuàng)建、撤銷以及進程運行中的其主要表現(xiàn)為

23、:進程的創(chuàng)建、撤銷以及進程運行中的狀態(tài)轉換。狀態(tài)轉換。 進程控制一般是由進程控制一般是由中的中的實現(xiàn)。實現(xiàn)。 第二章第二章 進程管理進程管理2.2 進程控制進程控制Process Control一一二二三四第二章第二章 進程管理進程管理一、進程創(chuàng)建一、進程創(chuàng)建(The creating of ProcessThe creating of Process)(reasons for process creation) 用戶登錄(如分時系統(tǒng)中);用戶登錄(如分時系統(tǒng)中); 作業(yè)調度(如批處理系統(tǒng)中);作業(yè)調度(如批處理系統(tǒng)中); 提供服務(運行中的用戶程序提出某種請求,則系統(tǒng)提供服務(運行中的用戶程

24、序提出某種請求,則系統(tǒng)創(chuàng)建進程以完成請求,創(chuàng)建進程以完成請求,如:打印文件如:打印文件);); 應用請求(應用進程根據(jù)需要,為自己創(chuàng)建進程)應用請求(應用進程根據(jù)需要,為自己創(chuàng)建進程)第二章第二章 進程管理進程管理 用于描述進程家族關系(創(chuàng)建關系)的有向樹。結點代表用于描述進程家族關系(創(chuàng)建關系)的有向樹。結點代表進程,邊代表父子關系。父進程、子進程、祖父進程、祖先。進程,邊代表父子關系。父進程、子進程、祖父進程、祖先。 子進程可以繼承父進程所擁有的資源,但子進程被撤消子進程可以繼承父進程所擁有的資源,但子進程被撤消時,必須歸還。撤消父進程時,須先撤消其所有的子進程。時,必須歸還。撤消父進程時

25、,須先撤消其所有的子進程。PCB中有家族關系表項,以標識自己的父、子進程。中有家族關系表項,以標識自己的父、子進程。(Process Graph)第二章第二章 進程管理進程管理0#1#p1p2p3p4Pn是系統(tǒng)引導自動是系統(tǒng)引導自動生成的進程生成的進程Linux系統(tǒng)中的進程樹系統(tǒng)中的進程樹 Linux內(nèi)核被加載內(nèi)存后,初始內(nèi)核被加載內(nèi)存后,初始化系統(tǒng),創(chuàng)建系統(tǒng)中的第一個內(nèi)核化系統(tǒng),創(chuàng)建系統(tǒng)中的第一個內(nèi)核態(tài)進程(態(tài)進程(idle進程進程,0號進程)。號進程)。m 0#是所有進程的祖先。由它執(zhí)行是所有進程的祖先。由它執(zhí)行cpu_idle()函數(shù),當沒有其他進程處函數(shù),當沒有其他進程處于于TASK_

26、RUNNING的時候,調度程的時候,調度程序會選擇序會選擇0號進程運行號進程運行。0號進程創(chuàng)號進程創(chuàng)建建第一個用戶態(tài)進程第一個用戶態(tài)進程init進程進程(1#進程進程)m1# 它創(chuàng)建和監(jiān)控其他進程的活動它創(chuàng)建和監(jiān)控其他進程的活動。使用宏。使用宏INIT-TASK定義了進程控定義了進程控制塊,實現(xiàn)了進程模型。制塊,實現(xiàn)了進程模型。第二章第二章 進程管理進程管理 由進程由進程創(chuàng)建原語創(chuàng)建原語Creat()()(fork()完成。完成。 輸入?yún)?shù)輸入?yún)?shù):進程名、優(yōu)先數(shù)、構成進程名、優(yōu)先數(shù)、構成PCB的其他必要參數(shù)的其他必要參數(shù) 返回返回:進程號進程號 功能功能:創(chuàng)建一個具有指定標識符的進程。構造創(chuàng)

27、建一個具有指定標識符的進程。構造PCB,使該,使該PCB進入就緒隊列,使用進入就緒隊列,使用Creat原語的進程即為新進程的父進程。原語的進程即為新進程的父進程。 步驟步驟:1)申請空白)申請空白PCB:分配唯一標識符,并從:分配唯一標識符,并從PCB集合中索取一集合中索取一空白空白PCB; 2)為新進程分配資源:為數(shù)據(jù)、程序、用戶棧分配內(nèi)存;)為新進程分配資源:為數(shù)據(jù)、程序、用戶棧分配內(nèi)存; 3)初始化)初始化PCB;(標識信息、處理機狀態(tài)信息、處理機控制信息標識信息、處理機狀態(tài)信息、處理機控制信息) 4)插入就緒隊列。)插入就緒隊列。程序描述為:程序描述為:(The creating of

28、 Process)第二章第二章 進程管理進程管理q 正常結束(有一條表示進程結束的指令);正常結束(有一條表示進程結束的指令);q 異常結束(運行中出現(xiàn)錯誤或故障。如越界錯誤、申異常結束(運行中出現(xiàn)錯誤或故障。如越界錯誤、申請的內(nèi)存超過了系統(tǒng)所能提供的最大量等。);請的內(nèi)存超過了系統(tǒng)所能提供的最大量等。);q 外界干預(應外界的請求而終止。如操作員或操作系外界干預(應外界的請求而終止。如操作員或操作系統(tǒng)干預、父進程請求、父進程終止)統(tǒng)干預、父進程請求、父進程終止)二、進程的終止二、進程的終止(Termination of Process)(Termination of Process)第二章第

29、二章 進程管理進程管理由進程由進程終止原語終止原語Destroy()()完成。完成。輸入?yún)?shù):輸入?yún)?shù):進程號進程號返回:返回:成功或失敗標記成功或失敗標記功能:功能:撤銷指定進程的撤銷指定進程的PCB,收回該進程擁有的全部資源。,收回該進程擁有的全部資源。步驟:步驟:n1)由標識符,在)由標識符,在PCB集中檢索其集中檢索其PCB,讀取狀態(tài);,讀取狀態(tài);n2)若)若“執(zhí)行執(zhí)行”則終止運行,并進行進程調度。則終止運行,并進行進程調度。n3)查其子孫進程,若有則對其)查其子孫進程,若有則對其Destroy();();n4)歸還資源給父進程或系統(tǒng);)歸還資源給父進程或系統(tǒng);n5)將被終止進程的)將

30、被終止進程的PCB從所在隊列中移出;從所在隊列中移出;第二章第二章 進程管理進程管理u 請求系統(tǒng)服務。若請求請求系統(tǒng)服務。若請求未滿足,則阻塞;當資源可以滿足未滿足,則阻塞;當資源可以滿足時,由釋放該資源的進程將阻塞進程喚醒;時,由釋放該資源的進程將阻塞進程喚醒;u 啟動某種操作啟動某種操作。等待其完成。等待其完成。u 新數(shù)據(jù)未到達。多進程合作時,本進程要用的其它進程的新數(shù)據(jù)未到達。多進程合作時,本進程要用的其它進程的結果尚未到來。結果尚未到來。u 無新工作可做。某些系統(tǒng)進程,等待工作的到達。無新工作可做。某些系統(tǒng)進程,等待工作的到達。三三、進程的阻塞與喚醒、進程的阻塞與喚醒(TheThe b

31、lock and wakeup of Process )第二章第二章 進程管理進程管理由由阻塞原語阻塞原語Block()()實現(xiàn)。實現(xiàn)。正在執(zhí)行的進程本身調用正在執(zhí)行的進程本身調用BlockBlock,n1)停止進程的執(zhí)行;)停止進程的執(zhí)行;n2)改狀態(tài))改狀態(tài)“執(zhí)行執(zhí)行”為為“阻塞阻塞”,插入相應阻塞隊列;,插入相應阻塞隊列;n3)重新調度(進行切換,即保留現(xiàn)場,重設現(xiàn)場)。)重新調度(進行切換,即保留現(xiàn)場,重設現(xiàn)場)。 BLOCK( ) 輸入?yún)?shù):輸入?yún)?shù):無無 返回:返回:轉進程調度轉進程調度 功能:功能:將現(xiàn)行進程的將現(xiàn)行進程的PCB置成置成“阻塞阻塞”狀態(tài)后列入阻塞隊狀態(tài)后列入阻塞隊

32、列列第二章第二章 進程管理進程管理 由由喚醒原語喚醒原語Wakeup()()實現(xiàn)。實現(xiàn)。 由和由和的進程執(zhí)行喚醒。的進程執(zhí)行喚醒。n 1)從阻塞隊列中移出;)從阻塞隊列中移出;n 2)改)改“阻塞阻塞”為為“就緒就緒”;n 3)插入就緒隊列。)插入就緒隊列。 WAKEUP( )輸入?yún)?shù):輸入?yún)?shù):進程號進程號返回:返回:成功或失敗標記成功或失敗標記功能:功能:把指定進程的把指定進程的PCB從阻塞隊列摘下,改狀態(tài)為就緒,從阻塞隊列摘下,改狀態(tài)為就緒,插入就緒隊列插入就緒隊列第二章第二章 進程管理進程管理第二章第二章 進程管理進程管理由由掛起原語掛起原語Suspend()()實現(xiàn)。實現(xiàn)。q 1)檢

33、查、修改狀態(tài)。)檢查、修改狀態(tài)?!盎顒泳途w活動就緒”“靜止就緒靜止就緒”;“活動活動阻塞阻塞” “靜止阻塞靜止阻塞”;q 2)若原狀態(tài)為)若原狀態(tài)為“執(zhí)行執(zhí)行”,則,則“執(zhí)行執(zhí)行” “靜止就緒靜止就緒”,并調,并調用進程調度程序重新調度。用進程調度程序重新調度。q 3)復制)復制PCB到內(nèi)存某區(qū)域到內(nèi)存某區(qū)域;由由激活原語激活原語Active()()實現(xiàn)。實現(xiàn)。q 1)將進程調入內(nèi)存,改狀態(tài)。)將進程調入內(nèi)存,改狀態(tài)?!办o止靜止” “活動活動”;q 2)若新狀態(tài)為)若新狀態(tài)為“活動就緒活動就緒”則根據(jù)情況,看是否需重新調度則根據(jù)情況,看是否需重新調度(搶占調度策略)。(搶占調度策略)。四、進程

34、的掛起與激活四、進程的掛起與激活(The Suspend and Active of Process)第二章第二章 進程管理進程管理2.3 進程同步進程同步 Process Synchronization 進程同步的主要任務是使并發(fā)執(zhí)行的諸進程進程同步的主要任務是使并發(fā)執(zhí)行的諸進程間能有效地共享資源和相互合作,從而使程序的間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。執(zhí)行具有可再現(xiàn)性。第二章第二章 進程管理進程管理 同處于一個系統(tǒng)中的進程間可能存在兩種關系:同處于一個系統(tǒng)中的進程間可能存在兩種關系:1)間接相互制約關系:間接相互制約關系:因多進程共享某資源而產(chǎn)生。此時進因多進程共

35、享某資源而產(chǎn)生。此時進程同步要保證進程能互斥地訪問臨界資源。為此資源要由系統(tǒng)程同步要保證進程能互斥地訪問臨界資源。為此資源要由系統(tǒng)統(tǒng)一分配。統(tǒng)一分配。 進程互斥時他們的執(zhí)行順序是可以任意的,通過共享資源進程互斥時他們的執(zhí)行順序是可以任意的,通過共享資源實現(xiàn)相互制約實現(xiàn)相互制約。進程資源進程進程資源進程。相互之間不一定清楚其它相互之間不一定清楚其它進程情況。進程情況。第二章第二章 進程管理進程管理2)直接相互制約關系:直接相互制約關系:因多進程內(nèi)容上的聯(lián)系而產(chǎn)生。此因多進程內(nèi)容上的聯(lián)系而產(chǎn)生。此時進程同步要保證進程在執(zhí)行次序上的協(xié)調。時進程同步要保證進程在執(zhí)行次序上的協(xié)調。 進程同步指進程同步指

36、并發(fā)進程,其各自執(zhí)行結果互為對方的執(zhí)并發(fā)進程,其各自執(zhí)行結果互為對方的執(zhí)行條件,從而限制各進程執(zhí)行速度。行條件,從而限制各進程執(zhí)行速度。進程進程。進程進程。相互清相互清楚對方的存在及其作用,交換信息。楚對方的存在及其作用,交換信息。計算進程計算進程A緩沖區(qū)緩沖區(qū)打印進程打印進程B第二章第二章 進程管理進程管理同步與互斥比較同步與互斥比較同同 步步互互 斥斥進程進程 -進程進程進程進程 -資源資源 - 進程進程時間次序上受到某種限制時間次序上受到某種限制競爭到某一物理資源時不允許進程競爭到某一物理資源時不允許進程工作工作相互清楚對方的存在及作用,相互清楚對方的存在及作用,交換信息交換信息不一定清

37、楚其進程情況不一定清楚其進程情況往往指有幾個進程共同完成一往往指有幾個進程共同完成一個任務個任務往往指多個任務多個進程間通訊制往往指多個任務多個進程間通訊制約約例:例:發(fā)送與接受之間,供者與發(fā)送與接受之間,供者與用者之間,用者之間,4100米接力,米接力,工廠流水線。工廠流水線。例:例:交通十字路口,籃球搶籃板,交通十字路口,籃球搶籃板,進程爭搶打印機。進程爭搶打印機。第二章第二章 進程管理進程管理第二章第二章 進程管理進程管理 若多進程共享某臨界資源,則應對其進行同步控制,以若多進程共享某臨界資源,則應對其進行同步控制,以實現(xiàn)對臨界資源的互斥訪問。實現(xiàn)對臨界資源的互斥訪問。 臨界資源可有硬、

38、軟資源。臨界資源可有硬、軟資源。 硬件資源如:打印機等。硬件資源如:打印機等。諸進程要互斥使用這些資源。諸進程要互斥使用這些資源。 軟件資源如:共享變量等。軟件資源如:共享變量等。對共享變量應作為臨界資源對共享變量應作為臨界資源處理。即要對它進行互斥訪問。處理。即要對它進行互斥訪問。 (一)臨界資源(一)臨界資源 ( Critical resource) 第二章第二章 進程管理進程管理 進程進程A:生產(chǎn)一個數(shù)據(jù)。用:生產(chǎn)一個數(shù)據(jù)。用count計數(shù),計數(shù),count=count+1 進程進程B:消費一個數(shù)據(jù)。則:消費一個數(shù)據(jù)。則count=count-1對對count的操作可細化為:(的操作可細

39、化為:(R表示寄存器,設表示寄存器,設count初值為初值為1)例例1: 兩個并發(fā)執(zhí)行的進程兩個并發(fā)執(zhí)行的進程A、B。A:R1=count R1=R1+1 count=R1B:R2=count R2=R2-1 count=R2n若執(zhí)行次序為:若執(zhí)行次序為:A(1) A(2) A(3) B(1) B(2) B(3) 則則count=1n若執(zhí)行次序為:若執(zhí)行次序為:A(1) B(1) A(2) A(3) B(2) B(3) 則則count=0n若執(zhí)行次序為:若執(zhí)行次序為:A(1) B(1) B(2) B(3) A(2) A(3) 則則count=2第二章第二章 進程管理進程管理棧指針為棧指針為to

40、p,設有兩個程序段設有兩個程序段getaddr(top) 和和 putaddr(blk),從給定棧中取出相應的內(nèi)存數(shù)據(jù)塊地址,從給定棧中取出相應的內(nèi)存數(shù)據(jù)塊地址,將內(nèi)存數(shù)據(jù)塊地址將內(nèi)存數(shù)據(jù)塊地址blk放入椎棧中。放入椎棧中。例例2:設有堆棧設有堆棧S S,棧中存放內(nèi)存中相應的數(shù)據(jù)塊地址。,棧中存放內(nèi)存中相應的數(shù)據(jù)塊地址。第二章第二章 進程管理進程管理abef a b e f隨機 a b e f第二章第二章 進程管理進程管理 對對臨界資源,多進程必須互斥訪問。把每個進程臨界資源,多進程必須互斥訪問。把每個進程的那段的那段稱為稱為CS。 對臨界資源的互斥訪問即為多進程互斥進入各自的臨對臨界資源的互

41、斥訪問即為多進程互斥進入各自的臨界區(qū)操作。為保證互斥訪問,在進入前必需先檢測臨界資界區(qū)操作。為保證互斥訪問,在進入前必需先檢測臨界資源的狀態(tài)。源的狀態(tài)。(Entry section) :進程中在臨界區(qū)前用于檢查臨界:進程中在臨界區(qū)前用于檢查臨界資源是否正被訪問的代碼。資源是否正被訪問的代碼。(Exit section) :進程中在臨界區(qū)后的一段代碼,用:進程中在臨界區(qū)后的一段代碼,用于標記該臨界資源已被釋放。于標記該臨界資源已被釋放。 (二)(二) 臨界區(qū)臨界區(qū) (Critical Section)第二章第二章 進程管理進程管理Entry sectionExit section remaind

42、er section;until false;訪問臨界資源的循環(huán)進程描述如下訪問臨界資源的循環(huán)進程描述如下:repeatcritical section;為實現(xiàn)進程互斥進入為實現(xiàn)進程互斥進入自己的臨界區(qū),采用自己的臨界區(qū),采用進行協(xié)調。進行協(xié)調。第二章第二章 進程管理進程管理 OS利用同步機制提供互斥工具才能保證進程互斥的進入臨界利用同步機制提供互斥工具才能保證進程互斥的進入臨界區(qū),互斥工具應能保證如下幾點:區(qū),互斥工具應能保證如下幾點:1):若臨界資源空閑,則允許一個請求進程進入自己的臨界區(qū)。若臨界資源空閑,則允許一個請求進程進入自己的臨界區(qū)。2):若臨界資源正被使用,則其它申請該資源的進程

43、應該等待。若臨界資源正被使用,則其它申請該資源的進程應該等待。3):保證進程可在有限時間內(nèi)進入自己的臨界區(qū),防止保證進程可在有限時間內(nèi)進入自己的臨界區(qū),防止“死等死等”。4):當進程需臨界資源不能滿足而等待時,應釋放當進程需臨界資源不能滿足而等待時,應釋放CPU,防止,防止“忙等忙等” 互斥工具有軟件、硬件和信號量幾種方法?;コ夤ぞ哂熊浖?、硬件和信號量幾種方法。(三)同步機制應遵循的原則(三)同步機制應遵循的原則第二章第二章 進程管理進程管理設兩個進程設兩個進程PiPi、 PjPj并發(fā)執(zhí)行,共享某臨界資源。描述為:并發(fā)執(zhí)行,共享某臨界資源。描述為: beginbegin parbegin pa

44、rbegin Pi Pi; PjPj; parendparend end end 利用軟件方法解決進程互斥問題,方法之一利用軟件方法解決進程互斥問題,方法之一 -。第二章第二章 進程管理進程管理 。檢查鎖狀態(tài),若為關。檢查鎖狀態(tài),若為關閉,則等待其打開;若已打開,閉,則等待其打開;若已打開,則將其關閉,執(zhí)行。則將其關閉,執(zhí)行。 。進入臨界區(qū),執(zhí)行操。進入臨界區(qū),執(zhí)行操作。作。 ,將鎖打開,退出臨界,將鎖打開,退出臨界區(qū)。區(qū)。 關鎖關鎖lock(W):lock(W): while(W=1); while(W=1); W=1; W=1; 開鎖開鎖unlock(W): unlock(W): W=0;

45、 W=0;為為每類臨界區(qū)每類臨界區(qū)設置一把設置一把“鎖鎖”,有,有打開打開和和關閉關閉兩種狀態(tài)??蓛煞N狀態(tài)??捎米兞勘硎炬i(軟件鎖),值為用變量表示鎖(軟件鎖),值為0表示打開,為表示打開,為1表示關閉。表示關閉。第二章第二章 進程管理進程管理例:例:利用鎖變量方法實現(xiàn)兩個進程利用鎖變量方法實現(xiàn)兩個進程A A、B B互斥互斥共享共享打印機打印機。進程進程ALock(W);打印信息打印信息S;/*CS區(qū)區(qū)*/Unlock(W);進程進程BLock(W);打印信息打印信息S;/*CS區(qū)區(qū)*/Unlock(W);:簡單;:簡單;:不安全,因為關鎖和開鎖操作不具有不安全,因為關鎖和開鎖操作不具有原子性

46、原子性。 出現(xiàn)出現(xiàn)“忙等忙等”,軟件算法不能完全解決多個進程互斥問題,算法復雜,效率較軟件算法不能完全解決多個進程互斥問題,算法復雜,效率較低。低。以變量以變量W表示鎖,置初值表示鎖,置初值為為0。兩個進程的部分代碼如下。兩個進程的部分代碼如下。Perterson算法算法 第二章第二章 進程管理進程管理 1)指令:)指令:boolean TS(boolean *lock) boolean old; old = lock; lock = TRUE; return old;lock值表示資源使用情況。值表示資源使用情況。false,表示,表示空閑(初值);空閑(初值);true,則表示正用。,則表

47、示正用。 利用硬件方法解決進程互斥問題有利用硬件方法解決進程互斥問題有和和兩種常見方式。兩種常見方式。第二章第二章 進程管理進程管理2)利用)利用TS實現(xiàn)進程互斥實現(xiàn)進程互斥while TS(lock) do skip CSlock:=false注:注:若資源可用,則若資源可用,則lock 為為false,則,則TS(lock)為為false,進入,進入CS,否則,否則繼續(xù)檢測。退出臨界區(qū),繼續(xù)檢測。退出臨界區(qū),重設資源可用。重設資源可用。缺點缺點:不能:不能“讓權等待讓權等待”,是一種是一種“忙等忙等” 更好的方法是當臨界資源不可用時,就阻塞該進程,直更好的方法是當臨界資源不可用時,就阻塞該

48、進程,直到臨界資源可用時繼續(xù)。到臨界資源可用時繼續(xù)。 該指令的具體實現(xiàn)該指令的具體實現(xiàn)第二章第二章 進程管理進程管理 信號量(信號量(Semaphore)方法是荷蘭學者)方法是荷蘭學者Dijkstra1965年提年提出的解決進程同步、互斥的通用工具,在出的解決進程同步、互斥的通用工具,在THE(荷蘭文荷蘭文Tchnische Hoogeschool Eindhov)操作系統(tǒng)中實現(xiàn)。操作系統(tǒng)中實現(xiàn)。第二章第二章 進程管理進程管理(四)信號量機制(四)信號量機制(Integer Semaphore) wait(s): while s0表示一個或多表示一個或多個資源,個資源,0沒有資源。沒有資源。r

49、 信號量操作的信號量操作的: 信號量可以初始化為一個非信號量可以初始化為一個非負值;負值;除初始化外,僅能由除初始化外,僅能由wait( )和和signal( )訪問信號量訪問信號量。即即P和和V操作。操作。signal(s): s:=s+1第二章第二章 進程管理進程管理 其他進程可獲得處理機,會出現(xiàn)多個進程等待訪問同一臨其他進程可獲得處理機,會出現(xiàn)多個進程等待訪問同一臨界資源。界資源。 放棄處理機放棄處理機“阻塞阻塞”等待,等待,“讓權等待讓權等待”。整型信號量的整型信號量的: 未遵循未遵循“讓權等待讓權等待”,出現(xiàn),出現(xiàn)“忙等忙等”。第二章第二章 進程管理進程管理(Record-type

50、Semaphore) 記錄型信號量所含內(nèi)容記錄型信號量所含內(nèi)容(1 1)代表資源數(shù)目的整型量代表資源數(shù)目的整型量(2 2)進程鏈表,接納所有等待進程。進程鏈表,接納所有等待進程。type semaphore=record value:integer; L:list of process; -L為一個進程鏈表為一個進程鏈表 end第二章第二章 進程管理進程管理procedure signal(s) var s:semaphore; begin s.value:=s.value+1 if s.value=0 then wakeup(s.L) endprocedure wait(s)var s :s

51、emaphore;begin s.value:=s.value-1; if s.value0 then block(s.L);end第二章第二章 進程管理進程管理例:系統(tǒng)有兩臺打印機,有多個需要執(zhí)行打印操作的進例:系統(tǒng)有兩臺打印機,有多個需要執(zhí)行打印操作的進程,描述各個進程的執(zhí)行。程,描述各個進程的執(zhí)行。 s第二章第二章 進程管理進程管理 1)s.value的的。s.L表示該表示該資源的阻塞隊列。資源的阻塞隊列。 2)wait()表示請求一個單位的資源。表示請求一個單位的資源。s.value-1表示該資源表示該資源數(shù)減數(shù)減1。若。若s.value0,則資源已用完,調用阻塞原語。此時的,則資源已

52、用完,調用阻塞原語。此時的s.value值不再是資源數(shù)量,而是值不再是資源數(shù)量,而是。 3)signal()表示釋放一個單位的資源。表示釋放一個單位的資源。 s.value+1表示該資表示該資源數(shù)加源數(shù)加1。若。若s.value1時,可看作一般的記錄型信號量。當時,可看作一般的記錄型信號量。當S=1時,即為互斥時,即為互斥信號量。信號量。l 3)Swait(S,1,0)下限為)下限為1,每次分配,每次分配0個資源。這是個資源。這是一種特殊的可作為開關的信號量。當一種特殊的可作為開關的信號量。當S1時,允許多個進程時,允許多個進程進入。當進入。當S1(S=0)時,阻止任何進程進入。)時,阻止任何

53、進程進入。幾種特殊情況:幾種特殊情況:第二章第二章 進程管理進程管理r 一個臨界資源一個臨界資源var mutex:semaphore:= parbegin process1: wait(mutex) CS signal(mutex) process2: wait(mutex) CS signal(mutex) parendl 1、識別臨界資源,一看是、識別臨界資源,一看是否否共享共享,二看是否,二看是否排他排他。l 2、wait(mutex)和和signal(mutex)必須必須成對出現(xiàn)成對出現(xiàn),并分別緊靠并分別緊靠臨界段的頭尾部臨界段的頭尾部。(五)信號量應用之一(五)信號量應用之一缺少缺

54、少wait,則?缺少,則?缺少signal,則?,則?一個互斥信號量一個互斥信號量mutex實現(xiàn)進程實現(xiàn)進程P1和和P2互斥的描述為:互斥的描述為:第二章第二章 進程管理進程管理實例:三個進程執(zhí)行中要共享變量實例:三個進程執(zhí)行中要共享變量count。count屬于臨界資源,對其應互斥訪問。屬于臨界資源,對其應互斥訪問。 until false;end Var mutex:semaphore:=1;Begin parbegin process1:begin repeat until false; end process3:begin repeat until false; endParendEn

55、dprocess2:begin repeat -2.1P下一條語句下一條語句第二章第二章 進程管理進程管理(六)信號量應用之二(六)信號量應用之二 利用信號量可以控制進程執(zhí)行的先后次序,以描述程序利用信號量可以控制進程執(zhí)行的先后次序,以描述程序或語句間的前趨關系?;蛘Z句間的前趨關系。mutex第二章第二章 進程管理進程管理 parbegin begin S1;signal(a);signal(b);end; begin wait(a);S2;signal(c);signal(d);end; begin wait(b);S3;signal(e);end; begin wait(c);S4;sig

56、nal(f);end; begin wait(d);S5;signal(g);end; begin wait(e);wait(f);wait(g);S6;end; parendendvar a,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0beginS1S5S2S3S6S4S3abcdfge第二章第二章 進程管理進程管理第二章第二章 進程管理進程管理例如:例如:計算進程計算進程、打印進程打印進程實現(xiàn)合作。實現(xiàn)合作。計算進程計算進程不斷把每次計算結不斷把每次計算結果果放入放入buf中,中,打印進程打印進程則則取出取出buf中的數(shù)據(jù)打印輸出,若不采取任中的數(shù)據(jù)打印輸出,若

57、不采取任何制約措施,這兩個進程的起始執(zhí)行時間和執(zhí)行速度彼此獨立,相何制約措施,這兩個進程的起始執(zhí)行時間和執(zhí)行速度彼此獨立,相應的控制段描述為:應的控制段描述為:Pc: A:local buf1計算計算Repeat buf1buf Until buf1=空空 Buf計算結果計算結果GoTo APp:B:local pri Repeat pribuf Until pri空空 打印打印buf中的數(shù)據(jù)中的數(shù)據(jù) 消除消除buf中的數(shù)據(jù)中的數(shù)據(jù)GoTo B問問 題:題:CPU時間的極大浪費時間的極大浪費(一)問題的提出(一)問題的提出第二章第二章 進程管理進程管理直接制約的進程互給對方進程直接制約的進程互

58、給對方進程,一旦收到制約進程發(fā)來的信號即由等待開始執(zhí)行。,一旦收到制約進程發(fā)來的信號即由等待開始執(zhí)行。 當當Pc將計算結果送入將計算結果送入buf后,后,給給Pp進程發(fā)送一個進程發(fā)送一個buf滿信號滿信號,Pp進程等到滿信號即從進程等到滿信號即從buf中取出結果去打印中取出結果去打印;當當Pp進程把進程把buf中數(shù)據(jù)取出打印后,中數(shù)據(jù)取出打印后,給給Pc進程發(fā)送一個進程發(fā)送一個buf空信號空信號,Pc等到空信號即可把下一個計算結果送入緩沖區(qū)。等到空信號即可把下一個計算結果送入緩沖區(qū)。 把各進程之間發(fā)送的信號作為信號量看待。即把各進程之間發(fā)送的信號作為信號量看待。即buf滿信號滿信號,buf空信

59、號空信號可用信號量表示??捎眯盘柫勘硎?。(二)問題分析(二)問題分析同同 步步 機機 制制第二章第二章 進程管理進程管理 S Sempty empty :是是PpPp進程運行結束發(fā)送的信號量,是進程運行結束發(fā)送的信號量,是PcPc運行運行需要等待的信號量,用于判斷需要等待的信號量,用于判斷BufBuf是否為空。若空則為是否為空。若空則為1 1,否則為,否則為0 0。 S Sfullfull:是是PcPc進程運行結束發(fā)送的信號量,是進程進程運行結束發(fā)送的信號量,是進程PpPp運行需要使用的信號量,用于判斷運行需要使用的信號量,用于判斷BufBuf中是否有數(shù)據(jù)。中是否有數(shù)據(jù)。有數(shù)據(jù)為有數(shù)據(jù)為1 1

60、,無數(shù)據(jù)為,無數(shù)據(jù)為0 0。 初始:初始: S Sempty empty 1 1, S Sfullfull 0 0設置兩個信號量:設置兩個信號量:Sempty 和和 Sfull第二章第二章 進程管理進程管理計算進程計算進程C打印進程打印進程P計計 算算P(Sempty)送緩沖區(qū)送緩沖區(qū)V(Sfull)從從Buffer中取數(shù)中取數(shù)P(Sfull)打印打印V(Sempty)第二章第二章 進程管理進程管理進程進程關系中,直接制約進程之間發(fā)送的關系中,直接制約進程之間發(fā)送的信號量,只與制約進程及被制約進程有關。信號量,只與制約進程及被制約進程有關。 一個進程一個進程PiPi的私有信號量是從制約進程的私

溫馨提示

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

評論

0/150

提交評論