CH2-1進程管理_第1頁
CH2-1進程管理_第2頁
CH2-1進程管理_第3頁
CH2-1進程管理_第4頁
CH2-1進程管理_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第第2 2章章 進程管理進程管理v 程序并發(fā)執(zhí)行時,產(chǎn)生了一些新特征,所以一般的程序是不能并程序并發(fā)執(zhí)行時,產(chǎn)生了一些新特征,所以一般的程序是不能并發(fā)執(zhí)行的。為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)發(fā)執(zhí)行的。為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)執(zhí)行的程序加以控制和描述,引入執(zhí)行的程序加以控制和描述,引入“進程進程”的概念。的概念。v 現(xiàn)在,現(xiàn)在,“進程進程”已經(jīng)成為操作系統(tǒng)乃至并發(fā)程序設計中最核心的已經(jīng)成為操作系統(tǒng)乃至并發(fā)程序設計中最核心的概念,它是對正在運行的程序的抽象,操作系統(tǒng)的其他所有內(nèi)容都概念,它是對正在運行的程序的抽象,操作系統(tǒng)的其他所有內(nèi)容都是圍繞著進程展開的

2、。掌握進程的概念對于理解操作系統(tǒng)的實質(zhì)以是圍繞著進程展開的。掌握進程的概念對于理解操作系統(tǒng)的實質(zhì)以及分析、設計操作系統(tǒng)都有非常重要的意義及分析、設計操作系統(tǒng)都有非常重要的意義 22.1 2.1 進程的基本概念進程的基本概念 2.1.1 2.1.1 程序的順序執(zhí)行及其特征程序的順序執(zhí)行及其特征 1. 1. 程序的順序執(zhí)行程序的順序執(zhí)行 僅當前一操作(程序段)執(zhí)行完后,才能執(zhí)行后繼操作。例如在進行計算時:輸入程序和數(shù)據(jù)進行計算打印計算結(jié)果。 S1: a=x+y; S2: b=a-5; S3: c=b+1;(a) 程序的順序執(zhí)行(b) 三條語句的順序執(zhí)行I1C1P1I2C2P2S1S2S32. 2.

3、 程序順序執(zhí)行時的特征:程序順序執(zhí)行時的特征:順序性、封閉性、可再現(xiàn)性。32.1.2 2.1.2 前趨圖前趨圖 前趨圖(Precedence Graph)是一個有向無循環(huán)圖,用于描述進程之間執(zhí)行的前后關系。圖中的每個結(jié)點可用于描述一個程序段或進程,乃至一條語句;結(jié)點間的有向邊則用于表示兩個結(jié)點之間存在的前趨關系 “”。 =(Pi, Pj)|Pi must complete before Pj may start, 稱Pi是Pj的直接前趨,而稱Pj是Pi的直接后繼。在前趨圖中,把沒有前趨的結(jié)點稱為初始結(jié)點(Initial Node),把沒有后繼的結(jié)點稱為終止結(jié)點(Final Node)。4 每個

4、結(jié)點還具有一個重量(Weight),用于表示該結(jié)點所含有的程序量或結(jié)點的執(zhí)行時間。 IiCiPi和S1S2S3 P1P3P8P9P4P2P5P6P7S1S2S3(a) 具有九個結(jié)點的前趨圖(b) 具有循環(huán)的前趨圖52.1.3 2.1.3 程序的并發(fā)執(zhí)行及其特征程序的并發(fā)執(zhí)行及其特征 1. 1. 程序的并發(fā)執(zhí)行程序的并發(fā)執(zhí)行 圖 2-3 并發(fā)執(zhí)行時的前趨圖 P1P2P3P4I1I2I3I4C1C2C3C46在該例中存在下述前趨關系: IiCi,IiIi+1, CiPi, CiCi+1,PiPi+1而Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1之間,可以并發(fā)執(zhí)行。 對于具有下

5、述四條語句的程序段: S1: a=x+2 S2: b=y+4 S3: c=a+b S4: d=c+b S1S2S3S42. 2. 程序并發(fā)執(zhí)行時的特征程序并發(fā)執(zhí)行時的特征 1) 間斷性 2) 失去封閉性 3) 不可再現(xiàn)性72.1.4 2.1.4 進程的特征與狀態(tài)進程的特征與狀態(tài) “進程進程”這一術(shù)語,在這一術(shù)語,在6060年代初期,首先在美國年代初期,首先在美國MITMIT的的MULTICSMULTICS系統(tǒng)系統(tǒng)和和IBMIBM公司的公司的CTSS/360CTSS/360系統(tǒng)中引入。其中能反映進程實質(zhì)的定義有:系統(tǒng)中引入。其中能反映進程實質(zhì)的定義有: (1 1)進程是程序的一次執(zhí)行。)進程是程

6、序的一次執(zhí)行。 (2 2)進程是可以和其他計算并發(fā)執(zhí)行的計算。)進程是可以和其他計算并發(fā)執(zhí)行的計算。 (3 3)進程是一個程序及其數(shù)據(jù)在處理器上順序執(zhí)行時發(fā)生的活動。)進程是一個程序及其數(shù)據(jù)在處理器上順序執(zhí)行時發(fā)生的活動。 (4 4)進程是程序在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進行資源)進程是程序在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。分配和調(diào)度的一個獨立單位。 (5 5)進程是進程實體的一次活動。)進程是進程實體的一次活動。 一、進程的定義一、進程的定義 8 我國我國19781978年在廬山召開的全國年在廬山召開的全國OSOS研討會上研討會上將將“進程進程”定義為

7、:定義為:進程是一個具有一定獨立功能的程序關進程是一個具有一定獨立功能的程序關于某個數(shù)據(jù)集合的一次運行活動。于某個數(shù)據(jù)集合的一次運行活動。 一個程序為實現(xiàn)不同的任務可以同時一個程序為實現(xiàn)不同的任務可以同時有多次運行活動,每個運行活動分別有多次運行活動,每個運行活動分別作為不同的進程作為不同的進程9二、進程的特性及與程序的區(qū)別二、進程的特性及與程序的區(qū)別 1. 1. 進程的五個特性進程的五個特性 (1)(1)動態(tài)性動態(tài)性:生命周期。即它由系統(tǒng)“創(chuàng)建”而誕生,因被“調(diào)度”而執(zhí)行,因得不到資源而暫停,最后因被“撤消”而消亡。 (2)(2)并發(fā)性并發(fā)性:是指不同進程的動作在時間上可以重疊,即系統(tǒng)內(nèi)的多

8、個進程是可以并發(fā)執(zhí)行的。 (3)(3)獨立性獨立性:指進程實體是一個能獨立運行的基本單位,同時也是系統(tǒng)中獨立獲得資源和獨立調(diào)動的基本單位。 (4)(4)異步性異步性:指進程按各自獨立的、不可預知的速度向前推進 (5)(5)結(jié)構(gòu)特性結(jié)構(gòu)特性:從結(jié)構(gòu)上看,每個進程都由程序段、數(shù)據(jù)段和一個PCB三部分組成。 2. 2. 進程與程序的區(qū)別進程與程序的區(qū)別 (1)(1)從定義上看,進程是程序處理數(shù)據(jù)的過程,而程序是從定義上看,進程是程序處理數(shù)據(jù)的過程,而程序是一組指令的有序集合;一組指令的有序集合; (2)(2)進程具有動態(tài)性、并發(fā)性、獨立性和異步性等,而程進程具有動態(tài)性、并發(fā)性、獨立性和異步性等,而程

9、序不具有這些特性;序不具有這些特性; (3)(3)從進程結(jié)構(gòu)特性上看,它包含程序(以及數(shù)據(jù)和從進程結(jié)構(gòu)特性上看,它包含程序(以及數(shù)據(jù)和PCBPCB);); (4)(4)進程和程序并非一一對應。進程和程序并非一一對應。 11 在操作系統(tǒng)中引入在操作系統(tǒng)中引入“進程進程”概念的主要目的是概念的主要目的是( )。)。 A. A. 改善用戶編程環(huán)境改善用戶編程環(huán)境 B. B. 描述程序動態(tài)執(zhí)行過程的性質(zhì)描述程序動態(tài)執(zhí)行過程的性質(zhì) C. C. 使程序與計算過程一一對應使程序與計算過程一一對應 D. D. 提高程序的運行速度提高程序的運行速度12三、進程的基本狀態(tài)及其轉(zhuǎn)換三、進程的基本狀態(tài)及其轉(zhuǎn)換 1 1

10、進程的三種基本狀態(tài)進程的三種基本狀態(tài) (1 1)就緒()就緒(ReadyReady)狀態(tài):)狀態(tài):當進程已分配到除當進程已分配到除CPUCPU以外的所有必要以外的所有必要的資源,只要能再獲得處理器,便可立即執(zhí)行的資源,只要能再獲得處理器,便可立即執(zhí)行 (2 2)執(zhí)行()執(zhí)行(RunningRunning)狀態(tài))狀態(tài):當進程已獲得處理器,其程序正在處當進程已獲得處理器,其程序正在處理器上執(zhí)行,理器上執(zhí)行, (3 3)阻塞()阻塞(BlockedBlocked)狀態(tài):)狀態(tài):正在執(zhí)行的進程,由于等待某事件發(fā)正在執(zhí)行的進程,由于等待某事件發(fā)生而無法執(zhí)行時,便放棄處理器而處于暫停狀態(tài)。生而無法執(zhí)行時,

11、便放棄處理器而處于暫停狀態(tài)。 在不少系統(tǒng)中,又增加了兩種基本狀態(tài):在不少系統(tǒng)中,又增加了兩種基本狀態(tài): 新建(新建(NewNew)狀態(tài))狀態(tài) 終止(終止(TerminatedTerminated)狀態(tài))狀態(tài) 13引入新建態(tài)和終止狀態(tài)的原因:引入新建態(tài)和終止狀態(tài)的原因: 由于由于OSOS在建立一個新進程時,通常分為在建立一個新進程時,通常分為2 2步:第一步是為步:第一步是為新登錄的用戶程序(分時系統(tǒng))創(chuàng)建進程,并為他分配新登錄的用戶程序(分時系統(tǒng))創(chuàng)建進程,并為他分配資源,此時進程即處于資源,此時進程即處于新建態(tài)新建態(tài)。第二步是把新創(chuàng)建的進。第二步是把新創(chuàng)建的進程送入就緒隊列,一旦進程進入就緒

12、隊列,它便由新建程送入就緒隊列,一旦進程進入就緒隊列,它便由新建態(tài)變?yōu)榫途w狀態(tài)。態(tài)變?yōu)榫途w狀態(tài)。 一個結(jié)束了的進程,其退出系統(tǒng)的過程也分為兩步:第一個結(jié)束了的進程,其退出系統(tǒng)的過程也分為兩步:第一步是將該進程從就緒隊列中移出,使之成為一個不可一步是將該進程從就緒隊列中移出,使之成為一個不可能再運行的進程,相應的進程處于能再運行的進程,相應的進程處于終止狀態(tài)終止狀態(tài)。此時系統(tǒng)。此時系統(tǒng)并不立即撤銷它,而是將它暫時留在系統(tǒng)中,以便其它并不立即撤銷它,而是將它暫時留在系統(tǒng)中,以便其它進程去收集該進程的有關信息。進程去收集該進程的有關信息。 14創(chuàng)建創(chuàng)建就緒就緒執(zhí)行執(zhí)行終止終止阻塞阻塞接納接納完成完成

13、I/OI/O完成完成或等待的或等待的事件發(fā)生事件發(fā)生I/OI/O請求或請求或等待某事件等待某事件2 2進程三種基本狀態(tài)間的轉(zhuǎn)換進程三種基本狀態(tài)間的轉(zhuǎn)換進程調(diào)度進程調(diào)度時間片完時間片完153.3.掛起狀態(tài)掛起狀態(tài) 在有的系統(tǒng)中,為了暫時緩和內(nèi)存的緊張狀態(tài),或為了調(diào)節(jié)系統(tǒng)負荷,又引入了掛起功能。即暫時掛起一部分進程,把它們從內(nèi)存臨時換出到輔存,使它們暫時和系統(tǒng)脫離聯(lián)系,起到平滑系統(tǒng)操作負荷的目的。 這樣,就需要把進程的就緒狀態(tài)進一步細分為活動就緒活動就緒狀態(tài)狀態(tài)(未被掛起的就緒進程)和靜止就緒狀態(tài)靜止就緒狀態(tài)(被掛起的就緒進程)兩種。把進程的阻塞狀態(tài)也細分為活動活動阻塞狀態(tài)阻塞狀態(tài)(未被掛起的阻塞

14、進程)和靜止阻塞狀態(tài)靜止阻塞狀態(tài)(被掛起的阻塞進程)。 16活動就緒靜止就緒執(zhí)行掛起激活釋放掛起活動阻塞靜止阻塞掛起激活釋放請求I/O具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換圖具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換圖172.1.5 2.1.5 進程控制塊進程控制塊PCBPCB PCB PCB ( Process Control Block )( Process Control Block )是系統(tǒng)為了描述和控制進是系統(tǒng)為了描述和控制進程的運行而為進程定義的一種數(shù)據(jù)結(jié)構(gòu)。程的運行而為進程定義的一種數(shù)據(jù)結(jié)構(gòu)。 它是進程實體的一部分,它是進程實體的一部分,是進程存在的唯一標志是進程存在的唯一標志,也是,也是操作系統(tǒng)中最重要的

15、結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu)。操作系統(tǒng)中最重要的結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu)。 PCBPCB中存放著操作系統(tǒng)所需的用于描述進程的當前情況中存放著操作系統(tǒng)所需的用于描述進程的當前情況以及控制進程運行的全部信息。以及控制進程運行的全部信息。181 1PCBPCB的作用的作用(1 1)標識進程的存在:標識進程的存在:系統(tǒng)創(chuàng)建進程時,就為之創(chuàng)建一個系統(tǒng)創(chuàng)建進程時,就為之創(chuàng)建一個PCBPCB;進;進程結(jié)束時,系統(tǒng)又回收其程結(jié)束時,系統(tǒng)又回收其PCBPCB,進程便隨之消亡,進程便隨之消亡。 (2 2)為系統(tǒng)提供可并發(fā)執(zhí)行的獨立單位為系統(tǒng)提供可并發(fā)執(zhí)行的獨立單位:PCBPCB使一個在多道程使一個在多道程序環(huán)境下不能獨立運行

16、的程序成為一個能獨立運行的基本單位,一個序環(huán)境下不能獨立運行的程序成為一個能獨立運行的基本單位,一個能與其他進程并發(fā)執(zhí)行的進程。沒有為之建立能與其他進程并發(fā)執(zhí)行的進程。沒有為之建立PCBPCB的程序是不能并發(fā)的程序是不能并發(fā)執(zhí)行的。執(zhí)行的。 (3 3)為系統(tǒng)控制和管理進程提供所需的一切信息為系統(tǒng)控制和管理進程提供所需的一切信息。 192 2PCBPCB中的信息中的信息 (1 1)進程標識符)進程標識符( (內(nèi)部:數(shù)字,系統(tǒng);外部:字符,內(nèi)部:數(shù)字,系統(tǒng);外部:字符, 用戶用戶) ): (2 2)處理器狀態(tài))處理器狀態(tài):通用寄存器、指令計數(shù)器、通用寄存器、指令計數(shù)器、PSWPSW,用戶棧指針;用

17、戶棧指針; (3 3)進程調(diào)度信息:)進程調(diào)度信息:進程的現(xiàn)行狀態(tài)、進程優(yōu)先級、進程的現(xiàn)行狀態(tài)、進程優(yōu)先級、 與進程有關的其他信息、事件即阻塞原因;與進程有關的其他信息、事件即阻塞原因; (4 4)進程控制信息:)進程控制信息:進程相應的程序和數(shù)據(jù)地址:進程相應的程序和數(shù)據(jù)地址: 進程同步與通信機制:進程資源清單:進程所進程同步與通信機制:進程資源清單:進程所在在PCBPCB的鏈接字的鏈接字 。 203.PCB3.PCB的組織方式的組織方式 PCBPCB的組織方式指的是把具有相同狀態(tài)的若干的組織方式指的是把具有相同狀態(tài)的若干進程按照某種原則適當組織在一起的一種形式。進程按照某種原則適當組織在一

18、起的一種形式。 因為因為PCBPCB是系統(tǒng)中最重要也是被頻繁訪問的數(shù)據(jù)結(jié)構(gòu),是系統(tǒng)中最重要也是被頻繁訪問的數(shù)據(jù)結(jié)構(gòu),系統(tǒng)中的許多模塊,如調(diào)度程序、資源分配程序、中斷系統(tǒng)中的許多模塊,如調(diào)度程序、資源分配程序、中斷處理程序以及監(jiān)督和分析程序等,特別是運行頻率很高處理程序以及監(jiān)督和分析程序等,特別是運行頻率很高的進程分派程序,都要對它進行讀或?qū)懖僮?,所以的進程分派程序,都要對它進行讀或?qū)懖僮鳎訮CBPCB常常駐內(nèi)存的系統(tǒng)區(qū)中,系統(tǒng)將所有的駐內(nèi)存的系統(tǒng)區(qū)中,系統(tǒng)將所有的PCBPCB以數(shù)組形式連續(xù)存以數(shù)組形式連續(xù)存放組織成若干個鏈表(或隊列),存放在操作系統(tǒng)中專放組織成若干個鏈表(或隊列),存放在

19、操作系統(tǒng)中專門開辟的門開辟的PCBPCB區(qū)內(nèi)。區(qū)內(nèi)。 21空閑空閑PCB隊列頭指針隊列頭指針阻塞進程隊列頭指針阻塞進程隊列頭指針就緒進程隊列頭指針就緒進程隊列頭指針執(zhí)行進程指針執(zhí)行進程指針PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9430879015.1 1)鏈接方式)鏈接方式 系統(tǒng)按照進程的狀態(tài)將進程的系統(tǒng)按照進程的狀態(tài)將進程的PCBPCB組組成隊列,將同一狀態(tài)的成隊列,將同一狀態(tài)的PCBPCB用鏈接字用鏈接字鏈接成一個隊列,從而形成就緒隊鏈接成一個隊列,從而形成就緒隊列、阻塞隊列、運行隊列等。列、阻塞隊列、運行隊列等。 222) 2) 索引方式:索引方式:系統(tǒng)按

20、照進程的狀態(tài)分別建立就緒索引表、阻塞索系統(tǒng)按照進程的狀態(tài)分別建立就緒索引表、阻塞索 引表等。引表等。 執(zhí)行指針就緒索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7阻塞索引表就緒表指針阻塞表指針3) 3) 線性表方式線性表方式 不論進程的狀態(tài)如何,將所有的不論進程的狀態(tài)如何,將所有的PCBPCB連續(xù)地存放在內(nèi)存的系統(tǒng)區(qū)。連續(xù)地存放在內(nèi)存的系統(tǒng)區(qū)。這種方式適用于系統(tǒng)中進程數(shù)目不多的情況。這種方式適用于系統(tǒng)中進程數(shù)目不多的情況。232.2 2.2 進程控制進程控制v 進程控制是進程管理中最基本的功能;進程控制是進程管理中最基本的功能;v 進程控制一般是由進程控制一般是由OSOS的內(nèi)核來

21、實現(xiàn)的。的內(nèi)核來實現(xiàn)的。v 原語操作:原語操作: 本身是由若干條指令構(gòu)成、用于完成特定功能的一個過程。本身是由若干條指令構(gòu)成、用于完成特定功能的一個過程。為了保證操作的正確性,原語在執(zhí)行期間是不允許分割的,也就是為了保證操作的正確性,原語在執(zhí)行期間是不允許分割的,也就是說,原語的執(zhí)行不能被中斷。說,原語的執(zhí)行不能被中斷。 :一個操作中的所有動作。與一般過程的區(qū)別:要么全:一個操作中的所有動作。與一般過程的區(qū)別:要么全作,要么全不作。即:原子操作是不可分割的,在管態(tài)下執(zhí)行,常作,要么全不作。即:原子操作是不可分割的,在管態(tài)下執(zhí)行,常駐內(nèi)存。駐內(nèi)存。 原語的作用是為了實現(xiàn)進程的通信和控制,習題對進

22、原語的作用是為了實現(xiàn)進程的通信和控制,習題對進程的控制如不適用原語,就會造成其這臺的不確定性,程的控制如不適用原語,就會造成其這臺的不確定性,從而達不到進程控制的目的。從而達不到進程控制的目的。241.進程創(chuàng)建原語Creat()引起創(chuàng)建進程的事件:引起創(chuàng)建進程的事件: 用戶登錄用戶登錄 作業(yè)調(diào)度作業(yè)調(diào)度 提供服務提供服務 應用請求應用請求(進程自身創(chuàng)建)(進程自身創(chuàng)建)進程創(chuàng)建的主要步驟:進程創(chuàng)建的主要步驟: 申請空白申請空白PCBPCB 為新進程分配資源為新進程分配資源 初始化初始化PCBPCB的內(nèi)容的內(nèi)容 將新進程插入就緒隊列將新進程插入就緒隊列系統(tǒng)內(nèi)核系統(tǒng)內(nèi)核創(chuàng)建創(chuàng)建252.進程撤銷原語

23、Terminate()引起撤銷進程的事件:引起撤銷進程的事件: 正常結(jié)束正常結(jié)束 異常結(jié)束異常結(jié)束 外界干擾外界干擾進程撤銷的過程:進程撤銷的過程: 檢索進程當前的狀態(tài),結(jié)檢索進程當前的狀態(tài),結(jié)束并置調(diào)度標志,撤銷其束并置調(diào)度標志,撤銷其所有的子進程,歸還資源,所有的子進程,歸還資源,移出隊列。移出隊列。v應由父進程調(diào)用進程撤銷原語來撤銷,以便及時的釋放其應由父進程調(diào)用進程撤銷原語來撤銷,以便及時的釋放其所占的資源。所占的資源。263.進程阻塞原語Block()引起進程阻塞的事件:引起進程阻塞的事件: 請求系統(tǒng)服務請求系統(tǒng)服務 啟動某種操作啟動某種操作 新數(shù)據(jù)尚未到達新數(shù)據(jù)尚未到達 無新工作可

24、作無新工作可作進程堵塞的過程:進程堵塞的過程: 發(fā)現(xiàn)堵塞事件,調(diào)用阻塞發(fā)現(xiàn)堵塞事件,調(diào)用阻塞原語把自己阻塞,停止進原語把自己阻塞,停止進程的執(zhí)行,修改程的執(zhí)行,修改PCBPCB的的,將其插入到自己,將其插入到自己的堵塞隊列。最后轉(zhuǎn)調(diào)度的堵塞隊列。最后轉(zhuǎn)調(diào)度程序,將處理器分配給另程序,將處理器分配給另一個就緒進程一個就緒進程。v進程的阻塞是進程自身的一進程的阻塞是進程自身的一種主動行為種主動行為274.進程喚醒原語Wakeup()引起進程喚醒的事件:引起進程喚醒的事件: 當被阻塞進程所期待的事當被阻塞進程所期待的事件出現(xiàn)時,或者所期待的件出現(xiàn)時,或者所期待的數(shù)據(jù)已經(jīng)到達。由該有關數(shù)據(jù)已經(jīng)到達。由

25、該有關進程調(diào)用進程喚醒原語,進程調(diào)用進程喚醒原語,將等待該資源而阻塞的一將等待該資源而阻塞的一個進程喚醒成個進程喚醒成進程喚醒的過程:進程喚醒的過程: 把被阻塞進程從等待該把被阻塞進程從等待該事件的阻塞隊列中移出,事件的阻塞隊列中移出,將其將其PCBPCB的現(xiàn)行狀態(tài),由的現(xiàn)行狀態(tài),由阻塞改為就緒,再將該阻塞改為就緒,再將該進程插入到進程插入到PCBPCB就緒隊列就緒隊列中。中。285.掛起原語Suspend( ): 當出現(xiàn)了引起掛起的事件時,如為了暫時緩和內(nèi)存當出現(xiàn)了引起掛起的事件時,如為了暫時緩和內(nèi)存的緊張狀態(tài),用戶進程請求將自己掛起或者當父進程請的緊張狀態(tài),用戶進程請求將自己掛起或者當父進

26、程請求將自己的某個子進程掛起時,系統(tǒng)將利用掛起原語求將自己的某個子進程掛起時,系統(tǒng)將利用掛起原語suspend( )suspend( )將制定的進程或處于阻塞狀態(tài)的進程掛起。將制定的進程或處于阻塞狀態(tài)的進程掛起。 6.激活原語Active( ): 將進程從外存調(diào)入內(nèi)存,檢查該進程的狀態(tài),改為將進程從外存調(diào)入內(nèi)存,檢查該進程的狀態(tài),改為相應的活動狀態(tài)相應的活動狀態(tài)( (只能由其它進程調(diào)用只能由其它進程調(diào)用) )29 多道程序的并發(fā)執(zhí)行改善了資源利用率、提高了系統(tǒng)多道程序的并發(fā)執(zhí)行改善了資源利用率、提高了系統(tǒng)吞吐量,但由于進程的異步性,給系統(tǒng)帶來了新的問題,吞吐量,但由于進程的異步性,給系統(tǒng)帶來了

27、新的問題,如資源共享、進程合作等問題,使的進程間的制約成為如資源共享、進程合作等問題,使的進程間的制約成為可能??赡?。 進程之間的關系包括:競爭關系進程之間的關系包括:競爭關系( (互斥互斥) )、協(xié)作關系、協(xié)作關系( (同步同步) );進程間數(shù)據(jù)傳送方法;進程間數(shù)據(jù)傳送方法( (通信通信) );資源資源( (臨界區(qū)臨界區(qū)) )競競爭的兩個控制問題:死鎖、饑餓等。爭的兩個控制問題:死鎖、饑餓等。 重點和難點:重點和難點:信號量與信號量與P P、V V操作;死鎖操作;死鎖。30多道程序設計帶來的問題多道程序設計帶來的問題 : 并發(fā)執(zhí)行的多個進程可能產(chǎn)生互斥或同步的相互制并發(fā)執(zhí)行的多個進程可能產(chǎn)生

28、互斥或同步的相互制約關系,不采取措施,可能導致結(jié)果的不可再現(xiàn)性。影約關系,不采取措施,可能導致結(jié)果的不可再現(xiàn)性。影響系統(tǒng)效率,而且還可以導致系統(tǒng)崩潰。響系統(tǒng)效率,而且還可以導致系統(tǒng)崩潰。 為此為此,現(xiàn)代操作系統(tǒng)都在內(nèi)核中設有進程的互斥,現(xiàn)代操作系統(tǒng)都在內(nèi)核中設有進程的互斥同步機制,以控制并發(fā)執(zhí)行的諸進程能有效的共享資源同步機制,以控制并發(fā)執(zhí)行的諸進程能有效的共享資源和相互合作,同時使并發(fā)程序的執(zhí)行仍具有可再現(xiàn)性。和相互合作,同時使并發(fā)程序的執(zhí)行仍具有可再現(xiàn)性。2.3 2.3 進程同步進程同步312.3.1 2.3.1 進程同步的基本概念進程同步的基本概念 進程的同步進程的同步synchroni

29、smsynchronism你等我,我也等你你等我,我也等你 多道程序系統(tǒng)中,系統(tǒng)中可能有許多進程,在這些進程多道程序系統(tǒng)中,系統(tǒng)中可能有許多進程,在這些進程之間可能存在以下兩種關系:之間可能存在以下兩種關系: 1 1. .資源共享關系資源共享關系 2.2.相互合作關系相互合作關系 這實際上都是一種合作進程在獨自并發(fā)執(zhí)行過程中的某這實際上都是一種合作進程在獨自并發(fā)執(zhí)行過程中的某些確定的時序點些確定的時序點( (協(xié)調(diào)點協(xié)調(diào)點) )上上“你等我,我也等你你等我,我也等你”的同步約的同步約束束321.1.資源共享關系資源共享關系 多個進程之間彼此無關,他們并不知道其它進程的存多個進程之間彼此無關,他們

30、并不知道其它進程的存在。例如在分時系統(tǒng)中,系統(tǒng)分別為每個用戶(終端)在。例如在分時系統(tǒng)中,系統(tǒng)分別為每個用戶(終端)建立一個進程。但這些進程既然同處于一個系統(tǒng)中,也建立一個進程。但這些進程既然同處于一個系統(tǒng)中,也就必然存在著資源共享的關系,如共享就必然存在著資源共享的關系,如共享CPUCPU和和I/OI/O設備等。設備等。此時,進程的主要任務,是保證各個進程能互斥地訪問此時,進程的主要任務,是保證各個進程能互斥地訪問臨界資源。所以,系統(tǒng)中的資源應該不允許用戶進程直臨界資源。所以,系統(tǒng)中的資源應該不允許用戶進程直接使用,而應該由系統(tǒng)同一分配。例如:在僅有一臺打接使用,而應該由系統(tǒng)同一分配。例如:

31、在僅有一臺打印機的系統(tǒng)中,兩個進程提出打印請求。印機的系統(tǒng)中,兩個進程提出打印請求。2.2.相互合作關系相互合作關系 例如輸入進程、計算進程、打印進程三者之間就是相例如輸入進程、計算進程、打印進程三者之間就是相互合作的關系。互合作的關系。 33一、同步的定義一、同步的定義 進程同步:進程同步:指的是兩個或多個進程為了合作完成同一個指的是兩個或多個進程為了合作完成同一個任務,在執(zhí)行速度或某些個確定的時序點上必須相互協(xié)任務,在執(zhí)行速度或某些個確定的時序點上必須相互協(xié)調(diào),即一個進程的執(zhí)行依賴于另一個進程調(diào),即一個進程的執(zhí)行依賴于另一個進程其合作伙其合作伙伴的消息,當一個進程到達了某一確定點而沒有得到

32、合伴的消息,當一個進程到達了某一確定點而沒有得到合作伙伴發(fā)來的作伙伴發(fā)來的“已完成某些操作已完成某些操作”的消息時必須等待,的消息時必須等待,直到該消息到達被喚醒后,才能繼續(xù)向前推進。直到該消息到達被喚醒后,才能繼續(xù)向前推進。v進程同步是多道程序系統(tǒng)中進程之間存在的一種主要源于進程同步是多道程序系統(tǒng)中進程之間存在的一種主要源于進程間合作的制約關系,也稱進程間合作的制約關系,也稱直接制約關系直接制約關系。 34 直接制約關系:進程間的相互聯(lián)系是有意進程間的相互聯(lián)系是有意識的安排的,直接作用只發(fā)生在相交進程間。識的安排的,直接作用只發(fā)生在相交進程間。 間接制約關系:進程間要通過某種中介發(fā)進程間要通

33、過某種中介發(fā)生聯(lián)系,是無意識安排的,可發(fā)生在相交進程生聯(lián)系,是無意識安排的,可發(fā)生在相交進程之間,也可發(fā)生在無關進程之間之間,也可發(fā)生在無關進程之間 。35二、互斥的定義二、互斥的定義 所謂所謂,指的是對某個系統(tǒng)資源,一個進,指的是對某個系統(tǒng)資源,一個進程正在使用它,另外一個想用它的進程就必須等程正在使用它,另外一個想用它的進程就必須等待,而不能同時使用待,而不能同時使用 。 進程互斥是多道程序系統(tǒng)中進程間存在的一種源進程互斥是多道程序系統(tǒng)中進程間存在的一種源于資源共享的制約關系,也稱于資源共享的制約關系,也稱間接制約關系間接制約關系,主,主要是由被共享資源的使用性質(zhì)所決定的。要是由被共享資源

34、的使用性質(zhì)所決定的。36 這種限定進程只能互斥地訪問它的資源叫這種限定進程只能互斥地訪問它的資源叫臨界資源(臨界資源(指一次僅允許一個進程使用的資源 )。 臨界資源限定了使用者只能互斥地使用它。臨界資源限定了使用者只能互斥地使用它。 操作系統(tǒng)也不能中途從搶先者手中把臨界資源搶來給其他操作系統(tǒng)也不能中途從搶先者手中把臨界資源搶來給其他進程用。因此,臨界資源也是不可剝奪性資源。進程用。因此,臨界資源也是不可剝奪性資源。例:例:計算機計算機系統(tǒng)中可剝奪性使用的資源主要有系統(tǒng)中可剝奪性使用的資源主要有CPUCPU、內(nèi)存內(nèi)存和和磁盤磁盤等。等。三、臨界資源和臨界區(qū)三、臨界資源和臨界區(qū)37程 序 段1程

35、序 段2程 序 段n共 享 變量38:進程中訪問臨界資源的那段程序代碼稱為臨界:進程中訪問臨界資源的那段程序代碼稱為臨界區(qū)或臨界段。區(qū)或臨界段。使用同一臨界資源的不同進程中的臨界區(qū)稱為使用同一臨界資源的不同進程中的臨界區(qū)稱為區(qū)區(qū)或或。為實現(xiàn)對臨界資源的互斥訪問,應保證諸進程為實現(xiàn)對臨界資源的互斥訪問,應保證諸進程地進地進入各自的臨界區(qū)。入各自的臨界區(qū)。 但無論采用何種方法,都應但無論采用何種方法,都應遵循臨界區(qū)的使用原則遵循臨界區(qū)的使用原則,即,即“空則讓進,忙則等待,等則有限,等則讓權(quán)空則讓進,忙則等待,等則有限,等則讓權(quán)”。 39進程同步和互斥間的關系:進程同步和互斥間的關系:相似處:相似

36、處:進程的互斥實際上是進程同步的一種特殊進程的互斥實際上是進程同步的一種特殊 情況;情況; 進程的互斥和同步統(tǒng)稱為進程同步。進程的互斥和同步統(tǒng)稱為進程同步。差別:差別:是進程間共享資源的使用權(quán)是進程間共享資源的使用權(quán) ,這種競爭沒,這種競爭沒有固定的必然聯(lián)系,哪個進程競爭到使用權(quán)就歸那個進程有固定的必然聯(lián)系,哪個進程競爭到使用權(quán)就歸那個進程使用,直到不需要使用時再歸還;而使用,直到不需要使用時再歸還;而則涉及共享則涉及共享資源的并發(fā)進程間有一種必然的聯(lián)系,當進程必須同步時,資源的并發(fā)進程間有一種必然的聯(lián)系,當進程必須同步時,即使無進程在使用共享資源時,那么尚未得到同步消息的即使無進程在使用共享

37、資源時,那么尚未得到同步消息的進程也不能去使用這個資源。進程也不能去使用這個資源。402.3.2 2.3.2 信號量機制信號量機制 荷蘭著名科學家,后來的計算機圖靈獎獲得荷蘭著名科學家,后來的計算機圖靈獎獲得者,者,E.W.DijkstraE.W.Dijkstra于于19651965年提出了用作進程同年提出了用作進程同步工具的步工具的信號量信號量(semaphoresemaphore)機制機制,這是一種,這是一種卓有成效的進程互斥同步工具,已被廣泛應用卓有成效的進程互斥同步工具,已被廣泛應用于現(xiàn)代計算機系統(tǒng)中。于現(xiàn)代計算機系統(tǒng)中。 兩個信號量操作原語,即兩個信號量操作原語,即P P,V V操作

38、。操作。 41信號量機制的基本原理是:信號量機制的基本原理是: v兩個或多個進程可以利用彼此間收發(fā)的簡單的信號來實兩個或多個進程可以利用彼此間收發(fā)的簡單的信號來實現(xiàn)現(xiàn)“正確的正確的”并發(fā)執(zhí)行,一個進程在收到一個指定信號并發(fā)執(zhí)行,一個進程在收到一個指定信號前,會被迫在一個確定的或者需要的地方停下來,從而前,會被迫在一個確定的或者需要的地方停下來,從而保持同步或互斥。保持同步或互斥。42一、信號量的概念一、信號量的概念 信號量信號量,也叫,也叫信號燈信號燈,一般是由兩個成員組成的數(shù)據(jù)結(jié),一般是由兩個成員組成的數(shù)據(jù)結(jié)構(gòu),是一個確定的二元組構(gòu),是一個確定的二元組(S S,Q Q)S S是個具有非負初值

39、的是個具有非負初值的整型變量整型變量,表示該信號量的值,表示該信號量的值,且且S S的值只能由定義在信號量上的的值只能由定義在信號量上的P P操作原語和操作原語和V V操作原操作原語來改變;語來改變;Q Q是個初始狀態(tài)為是個初始狀態(tài)為空的空的等待隊列指針等待隊列指針 (一個是指向(一個是指向PCBPCB的指針,當多個進程都等待同一信號量時,它們就排成的指針,當多個進程都等待同一信號量時,它們就排成一個隊列,由信號量的指針項指出該隊列的頭)。一個隊列,由信號量的指針項指出該隊列的頭)。43另一定義:另一定義:v信號量類型是個復合類型,其一個分量是個整型分量信號量類型是個復合類型,其一個分量是個整

40、型分量S S,另一個分量是個等待隊列指針另一個分量是個等待隊列指針Q Q (一個是指向(一個是指向PCBPCB的指的指針,當多個進程都等待同一信號量時,它們就排成一個針,當多個進程都等待同一信號量時,它們就排成一個隊列,由信號量的指針項指出該隊列的頭。)隊列,由信號量的指針項指出該隊列的頭。) 44* * *信號量整型分量信號量整型分量S S的值的物理含義:的值的物理含義: v當當S0S0時,表示某類可用資源的數(shù)目,或者說表示可以時,表示某類可用資源的數(shù)目,或者說表示可以執(zhí)行執(zhí)行P P操作而不會被阻塞的進程的數(shù)目;操作而不會被阻塞的進程的數(shù)目;v當當S S0 0時,其絕對值表示信號量時,其絕對

41、值表示信號量S S的阻塞隊列中的進程的阻塞隊列中的進程數(shù),即系統(tǒng)中因請求該類資源而被阻塞的進程的數(shù)目,數(shù),即系統(tǒng)中因請求該類資源而被阻塞的進程的數(shù)目,亦即被信號燈擋住的進程數(shù)目,這些進程需要別的進程亦即被信號燈擋住的進程數(shù)目,這些進程需要別的進程發(fā)出相應的信號燈來喚醒。發(fā)出相應的信號燈來喚醒。 v另外,另外,S S的值只能由的值只能由P P、V V操作來改變。操作來改變。 45二、二、P P、V V操作原語操作原語 通常通常P P操作意味著請求一個資源,在一定條件下,操作意味著請求一個資源,在一定條件下, P P操作代表掛起進程操作;操作代表掛起進程操作;通常通常V V操作意味著釋放一個資源,

42、在一定條件下,操作意味著釋放一個資源,在一定條件下, V V操作代表喚醒被掛起進程的操作;操作代表喚醒被掛起進程的操作; 原語是操作系統(tǒng)內(nèi)核中執(zhí)行時不可中斷的過程,即原語是操作系統(tǒng)內(nèi)核中執(zhí)行時不可中斷的過程,即原子操作。信號量機制中,除賦值外,信號量僅能由原子操作。信號量機制中,除賦值外,信號量僅能由原語對其進行操作。原語對其進行操作。 信號量通常可以簡單反映出相應資源的使用情況,它信號量通??梢院唵畏从吵鱿鄳Y源的使用情況,它與與P P,V V操作原語一起使用可實現(xiàn)進程的同步和互斥。操作原語一起使用可實現(xiàn)進程的同步和互斥。 461.1.定義在信號量定義在信號量S S上的上的P(S)P(S)原

43、語操作的算法描述為:原語操作的算法描述為: 1 1)S S減減1 1; 2 2)若)若S0S0,則調(diào)用,則調(diào)用P P(S S)的進)的進程返回,繼續(xù)執(zhí)行程返回,繼續(xù)執(zhí)行; ; 3 3)若)若S0SSS0 Block(Q) 返回YN472.2.定義在信號量定義在信號量S S上的上的V(S)V(S)原語操作的算法描述為:原語操作的算法描述為: (1 1)S S加加1 1;(2 2)若)若S0 S0 ,則調(diào)用,則調(diào)用V V(S S)的進程繼續(xù)執(zhí)行,返回;的進程繼續(xù)執(zhí)行,返回;(3 3)若)若S0 SS S0 Wakeup(Q) 返回YN48注意注意P P(S S)操作和)操作和V V(S S)操作的

44、物理含義:)操作的物理含義: P P(S S)操作表示)操作表示“等信號等信號”,即測試一個要等的信號是,即測試一個要等的信號是否到達;否到達;V V(S S)操作表示)操作表示“發(fā)信號發(fā)信號”。這個信號在實現(xiàn)同步時就。這個信號在實現(xiàn)同步時就是是“合作者的伙伴進程已完成前趨任務合作者的伙伴進程已完成前趨任務”,在實現(xiàn)互斥,在實現(xiàn)互斥時就是時就是“臨界資源可用臨界資源可用”。另外,在互斥問題中,每執(zhí)行一次另外,在互斥問題中,每執(zhí)行一次P P(S S)操作的含義,)操作的含義,也可理解為進程請求一個單位的也可理解為進程請求一個單位的S S類資源;每執(zhí)行一次類資源;每執(zhí)行一次V V(S S)操作的含

45、義,也可理解為進程釋放一個單位的)操作的含義,也可理解為進程釋放一個單位的S S類類資源。資源。 49 P,V操作是兩個過程,由他們兩個來控制一個信號S,假設S是紅燈的個數(shù)。 每個進程進入臨界區(qū)前都要先執(zhí)行P操作。退出臨界區(qū)時執(zhí)行V操作。用下面的比喻很容易理解: 臨界區(qū)門前有棵樹(S) 用來掛紅燈 進程想進CPU的門 先得上樹取盞燈(調(diào)用一次P操作) 取下一個去敲門(S=S-1) 如果樹上沒燈取(S0) 樹說欠你一盞燈(S為負時) 沒轍只好外邊排隊等( Wait (S) 得燈進程續(xù)運行 運行完了要出門(調(diào)用一次V操作) 馬上還回一盞燈(S=S+1) 若有進程在催債(S0) 放個進去事完成( R

46、elease (S)50 P、V操作也都是配對出現(xiàn),但對操作也都是配對出現(xiàn),但對同一個信號量同一個信號量的的P、V操作卻不是操作卻不是同時出現(xiàn)在每一個進程的程序里,而是分別出現(xiàn)在同時出現(xiàn)在每一個進程的程序里,而是分別出現(xiàn)在一個進程和它的合一個進程和它的合作伙伴的代碼中作伙伴的代碼中。 而且而且P、V操作的出現(xiàn)位置都在各個合作進程中確定的時序點,即操作的出現(xiàn)位置都在各個合作進程中確定的時序點,即一個生產(chǎn)者進程在完成了前趨的生產(chǎn)任務后,應立即給合作伙伴一個生產(chǎn)者進程在完成了前趨的生產(chǎn)任務后,應立即給合作伙伴消費者進程發(fā)送一條消費者進程發(fā)送一條“已完成前趨生產(chǎn)任務已完成前趨生產(chǎn)任務”的消息,這要執(zhí)行

47、的消息,這要執(zhí)行V操作;操作;而后繼的消費者進程在消費前,應該執(zhí)行對同一個信號量的而后繼的消費者進程在消費前,應該執(zhí)行對同一個信號量的P操作,以操作,以測試其合作伙伴測試其合作伙伴生產(chǎn)者進程生產(chǎn)者進程“已完成前趨生產(chǎn)任務已完成前趨生產(chǎn)任務”的消息是否的消息是否到來,如果到來就開始消費,否則就阻塞自己。到來,如果到來就開始消費,否則就阻塞自己。 三、用三、用P P、V V操作原語實現(xiàn)進程的同步操作原語實現(xiàn)進程的同步51解答這類進程同步問題的主要步驟也是三大步:解答這類進程同步問題的主要步驟也是三大步: (1)(1)分析清楚題目涉及的進程間的制約關系;分析清楚題目涉及的進程間的制約關系; (2)(

48、2)設置信號量(包括信號量的個數(shù)和初值及其物理含設置信號量(包括信號量的個數(shù)和初值及其物理含義),合作進程間需要收發(fā)幾條消息相應就設置幾個信義),合作進程間需要收發(fā)幾條消息相應就設置幾個信號量,同步信號量的初值一般為號量,同步信號量的初值一般為0 0; (3)(3)給出進程相應程序的算法描述或流程控制,并把給出進程相應程序的算法描述或流程控制,并把P P、V V操作加到程序的適當處。操作加到程序的適當處。 52例例3.13.1有兩個進程有兩個進程P1P1和和P2P2,P1P1的功能是計算的功能是計算x=a+bx=a+b的值,的值,a a和和b b是常量(在是常量(在P1P1的前面代碼中能得到)

49、;的前面代碼中能得到); P2P2的功能的功能是計算是計算y=x+1y=x+1的值。的值。P1 P2 x=a+b; y=x+1; P1 P2 P(S);x=a+b; y=x+1;V(S); 53例例3.23.2 生產(chǎn)者生產(chǎn)者消費者問題消費者問題 公用緩沖池,公用緩沖池,有有n個緩沖區(qū)個緩沖區(qū)一組生產(chǎn)者生產(chǎn)產(chǎn)品一組生產(chǎn)者生產(chǎn)產(chǎn)品一組消費者取走產(chǎn)品一組消費者取走產(chǎn)品54生產(chǎn)者消費者問題是相互合作進程關系生產(chǎn)者消費者問題是相互合作進程關系的一種抽象的一種抽象 輸入輸入計算計算打印打印 生產(chǎn)者生產(chǎn)者 消費者消費者 生產(chǎn)者生產(chǎn)者 消費者消費者系統(tǒng)中使用資源的進程系統(tǒng)中使用資源的進程消費者消費者系統(tǒng)中釋放

50、同類資源的進程系統(tǒng)中釋放同類資源的進程生產(chǎn)者生產(chǎn)者55問題分析: 生產(chǎn)者生產(chǎn)者消費者之間的同步關系表現(xiàn)為:消費者之間的同步關系表現(xiàn)為:一旦一旦緩沖池中所有緩沖區(qū)均裝滿產(chǎn)品時,生產(chǎn)者必須緩沖池中所有緩沖區(qū)均裝滿產(chǎn)品時,生產(chǎn)者必須等待消等待消費者提供空緩沖區(qū)費者提供空緩沖區(qū);一旦緩沖池中所有緩沖區(qū)全為空時,;一旦緩沖池中所有緩沖區(qū)全為空時,消費者必須消費者必須等待生產(chǎn)者提供滿緩沖區(qū)等待生產(chǎn)者提供滿緩沖區(qū)。 生產(chǎn)者生產(chǎn)者消費者之間還有互斥關系:消費者之間還有互斥關系:由于緩沖池由于緩沖池是臨界資源,所以任何進程在對緩沖區(qū)進行存取操作時是臨界資源,所以任何進程在對緩沖區(qū)進行存取操作時都必須和其他進程互

51、斥進行。都必須和其他進程互斥進行。 56問題解答: 所用信號量設置如下:所用信號量設置如下: )同步信號量同步信號量empty,初值為,初值為n,表示消費者已把緩,表示消費者已把緩沖池中全部產(chǎn)品取走,有沖池中全部產(chǎn)品取走,有n個空緩沖區(qū)可用。個空緩沖區(qū)可用。 )同步信號量同步信號量full,初值為,初值為0,表示生產(chǎn)者尚未把產(chǎn)品,表示生產(chǎn)者尚未把產(chǎn)品放入緩沖池,有放入緩沖池,有0個滿緩沖區(qū)可用。個滿緩沖區(qū)可用。 )互斥信號量互斥信號量mutex,初值為,初值為1,以保證同時只有一,以保證同時只有一個進程能夠進入臨界區(qū),訪問緩沖池。個進程能夠進入臨界區(qū),訪問緩沖池。 57用信號量機制解決生產(chǎn)者用

52、信號量機制解決生產(chǎn)者消費者問題的消費者問題的算法描述如下:算法描述如下: 生產(chǎn)出一產(chǎn)品; P(full); P(empty); P(mutex); P(mutex); 從緩沖區(qū)取出一產(chǎn)品; 將該產(chǎn)品放入緩沖區(qū); V(mutex); V(mutex); V(empty); V(full); 消費該產(chǎn)品; 58小結(jié):用信號量機制解這類題的三個步驟 (1)分析進程間的制約關系)分析進程間的制約關系 (2)設置信號量)設置信號量 (3)實施)實施P、V操作。操作。 第一步是基礎、關鍵,第三步是核心。第一步是基礎、關鍵,第三步是核心。 掌握實現(xiàn)進程互斥與進程同步的第三步在形式上差異:即掌握實現(xiàn)進程互斥與

53、進程同步的第三步在形式上差異:即P、V操作總是操作總是配對配對出現(xiàn)的。出現(xiàn)的。 但但P,VP,V在在互斥問題互斥問題中總是出現(xiàn)在同一個進程的代碼中,且緊中總是出現(xiàn)在同一個進程的代碼中,且緊緊夾著臨界區(qū);而在緊夾著臨界區(qū);而在同步問題同步問題中,卻是分別出現(xiàn)在兩個合中,卻是分別出現(xiàn)在兩個合作進程的代碼中,需要等消息的一方用作進程的代碼中,需要等消息的一方用P操作,相應的對同操作,相應的對同一信號量的一信號量的V操作則在發(fā)出此消息的另一方中。操作則在發(fā)出此消息的另一方中。 59三、用三、用P P、V V操作原語實現(xiàn)進程的互斥操作原語實現(xiàn)進程的互斥 用用P P、V V操作原語實現(xiàn)進程的互斥也一樣簡單

54、,只需在相關操作原語實現(xiàn)進程的互斥也一樣簡單,只需在相關進程的臨界區(qū)的前后分別施以進程的臨界區(qū)的前后分別施以P P操作和操作和V V操作即可,即在相操作即可,即在相關進程的程序里由關進程的程序里由P P操作和操作和V V操作原語緊夾著臨界區(qū),就能操作原語緊夾著臨界區(qū),就能保證這些進程互斥地進入各自的臨界區(qū)。保證這些進程互斥地進入各自的臨界區(qū)。這里所用信號量的初值一般為這里所用信號量的初值一般為1 1,表示臨界資源未被占用,表示臨界資源未被占用,且其可用數(shù)目為且其可用數(shù)目為1 1。 用用P P、V V操作原語實現(xiàn)進程互斥的效率更高一些,因為操作原語實現(xiàn)進程互斥的效率更高一些,因為P P操操作中引入了阻塞機制,所以消除了作

溫馨提示

  • 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

提交評論