計(jì)算機(jī)三級(jí)進(jìn)程管理_第1頁(yè)
計(jì)算機(jī)三級(jí)進(jìn)程管理_第2頁(yè)
計(jì)算機(jī)三級(jí)進(jìn)程管理_第3頁(yè)
計(jì)算機(jī)三級(jí)進(jìn)程管理_第4頁(yè)
計(jì)算機(jī)三級(jí)進(jìn)程管理_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

53、沖池與消費(fèi)者通信。應(yīng)當(dāng)指出,信號(hào)量機(jī)制作為同步工具是卓有成效通信。應(yīng)當(dāng)指出,信號(hào)量機(jī)制作為同步工具是卓有成效的,但作為通信工具則不夠理想,因?yàn)槠湫噬醯?,因的,但作為通信工具則不夠理想,因?yàn)槠湫噬醯?,因此,稱為低級(jí)通信方式。此,稱為低級(jí)通信方式。 1 低級(jí)進(jìn)程通信低級(jí)進(jìn)程通信 進(jìn)程的互斥和同步可歸結(jié)為低級(jí)進(jìn)程進(jìn)程的互斥和同步可歸結(jié)為低級(jí)進(jìn)程通信。在進(jìn)程互斥中進(jìn)程通過(guò)修改信號(hào)量,向其他進(jìn)程通信。在進(jìn)程互斥中進(jìn)程通過(guò)修改信號(hào)量,向其他進(jìn)程表明臨界資源是否可用;在生產(chǎn)者消費(fèi)者問(wèn)題中,生表明臨界資源是否可用;在生產(chǎn)者消費(fèi)者問(wèn)題中,生產(chǎn)者通過(guò)緩沖池與消費(fèi)者通信。應(yīng)當(dāng)指出,信號(hào)量機(jī)制產(chǎn)者通過(guò)緩沖池與消費(fèi)

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論