It計(jì)算機(jī)課件 進(jìn)程管理_第1頁(yè)
It計(jì)算機(jī)課件 進(jìn)程管理_第2頁(yè)
It計(jì)算機(jī)課件 進(jìn)程管理_第3頁(yè)
It計(jì)算機(jī)課件 進(jìn)程管理_第4頁(yè)
It計(jì)算機(jī)課件 進(jìn)程管理_第5頁(yè)
已閱讀5頁(yè),還剩181頁(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)介

第二章

進(jìn)程管理

進(jìn)程

?2.1進(jìn)程

?2.1.1進(jìn)程的引入

-“程序”一詞大家都非常熟悉,接觸計(jì)算機(jī)的人、學(xué)

計(jì)算機(jī)的人,多少都需要會(huì)寫點(diǎn)程序代碼。程序的定

義是:指令的有序集合,由它規(guī)定計(jì)算機(jī)完成某一任

務(wù)時(shí)所需做的各種操作及操作順序。

-1.程序的順序執(zhí)行

程序的順序執(zhí)行

程序執(zhí)行的特點(diǎn)

■程序的順序執(zhí)行有如下特點(diǎn):

?(1)程序執(zhí)行的順序性。CPU的操作嚴(yán)格按照程序所規(guī)

定的順序執(zhí)行,即前一步操作完成后,才能進(jìn)入下一步操

作。

?(2)程序運(yùn)行時(shí)對(duì)資源的獨(dú)占性。程序運(yùn)行時(shí),運(yùn)行程

序獨(dú)占系統(tǒng)全部資遮,沒(méi)方其它程序與之爭(zhēng)奪,只有程序

本身的動(dòng)祚才能改變資源的狀態(tài)。

?(3)程序結(jié)果的可再現(xiàn)性。當(dāng)對(duì)某一程序重復(fù)執(zhí)行時(shí),

只要初始條件相同,必然獲得相同的結(jié)果,程序執(zhí)行的結(jié)

果與執(zhí)行速度、時(shí)間無(wú)關(guān)。

?(4)程序結(jié)果的封閉性。程序運(yùn)行時(shí)間的長(zhǎng)短和最終結(jié)

果,只由初始條件和程序本身來(lái)確定,不會(huì)受到來(lái)自它以

外的其它因素的影響,也就是說(shuō),單道程序的運(yùn)行自成一

襪,具有封閉性。

程序的并發(fā)執(zhí)行

?2.程序的并發(fā)執(zhí)行

并行執(zhí)行的特性

?苫然矍盤在甚就I成用了一些和程序順序執(zhí)行時(shí)不同的特

?7;)程庠執(zhí)行時(shí)的資源共享性

程序并發(fā)執(zhí)行時(shí),整個(gè)系統(tǒng)資源已經(jīng)不能被某一個(gè)程序所

獨(dú)占,"上_____工一算機(jī)系級(jí)中的蟄秋軟、人嫂行資速九

硬資源包括CPU、內(nèi)存、外設(shè)拿軟件禰源除指各種系統(tǒng)

軟件之外,還包括各種共享的數(shù)據(jù)等。

?(2)程序失去了封閉性和可再現(xiàn)性

?程序并發(fā)執(zhí)行時(shí),是多個(gè)程序共享系統(tǒng)中的各種資源,因

而這些資源的狀態(tài)將由多個(gè)程序來(lái)改變,即資源的狀態(tài)不

能反映出某一個(gè)程序執(zhí)行的情況,致使程序的結(jié)果失去封

閉性。這樣某程序在執(zhí)行時(shí),必然會(huì)受其它程序的影響。

程序在并發(fā)執(zhí)行時(shí)失去了封閉性,也將要導(dǎo)致其失去可再

現(xiàn)性。

程序?qū)嵗?/p>

/**ProgramA**/

intn=0;〃設(shè)置一個(gè)全局變量n初值為0

main()〃進(jìn)入并發(fā)執(zhí)行

(

while(1)〃無(wú)限循環(huán)

(

n++;〃程序A每次對(duì)n+1

}

)

/**ProgramB**/

main()〃進(jìn)入并發(fā)執(zhí)行

(

while(1)〃無(wú)限循環(huán)

(

printf("%d",n);〃程序B每次打印n的值

n=0;〃并將n置為0

)

)

并發(fā)程序的制約性

?(3)并發(fā)程序之間的相互制約性

?由于程序并發(fā)執(zhí)行,它們共享系統(tǒng)內(nèi)的各種資源,因此程

序之間的關(guān)系就要復(fù)雜得多,產(chǎn)生相互制約關(guān)系。例如在

圖2-2中P1、C2和I3是并行的程序段。但如果C1程序段未

完成,則不僅P1程序段無(wú)法執(zhí)行,而且C2程序段也不能

進(jìn)行。因?yàn)镃1和C2不能共用一個(gè)處理器完成計(jì)算操作,

使得C2處于暫時(shí)等待狀態(tài),只有C1完成后,C2才能恢復(fù)

執(zhí)行。所以程序并發(fā)執(zhí)行使本來(lái)相互無(wú)邏輯關(guān)系的用戶程

序之間產(chǎn)生了相互關(guān)系,使得并發(fā)執(zhí)行的程序具有了“執(zhí)

行一暫停一執(zhí)行”的活動(dòng)規(guī)律,產(chǎn)生了程序執(zhí)行的間斷性

特征。如果想要并發(fā)程序還能保證封閉性和可再現(xiàn)性,那

么幾段程序間就要保證無(wú)共享變量。

并發(fā)與順序的比較

順序程序并發(fā)程序

執(zhí)行過(guò)程順序執(zhí)行并發(fā)執(zhí)行

程序與執(zhí)行對(duì)應(yīng)對(duì)應(yīng)一個(gè)程序PJ對(duì)應(yīng)多個(gè)執(zhí)

封閉性獨(dú)占資源,具有封閉共享資源,不具有封閉

性性

確定性具有無(wú)

可再現(xiàn)性具有無(wú)

程序間關(guān)系無(wú)有直接或間接制約關(guān)系

進(jìn)程的概念

?4,進(jìn)程的概念

■進(jìn)程(Process)這個(gè)名詞最早是1960年在MIT的

MULTICS和舊M公司的TSS/360系統(tǒng)中提出的,直至U目

前對(duì)進(jìn)程的定義和名稱均不統(tǒng)一,不同的系統(tǒng)中采用不同

的術(shù)語(yǔ)名稱,例如,MIT稱進(jìn)程(Process),舊M公司稱

任務(wù)(Task)和Univac公司稱活動(dòng)(Active)□可以說(shuō)進(jìn)

程的定義多種多樣,國(guó)內(nèi)學(xué)術(shù)界較為一致的看法是:進(jìn)程

是一個(gè)可并發(fā)執(zhí)行的具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集

合的一次執(zhí)行過(guò)程,也是操作系統(tǒng)進(jìn)行資源分配和保護(hù)的

基本單位(1978年全國(guó)操作系統(tǒng)學(xué)術(shù)會(huì)議)。

進(jìn)程的屬性

-進(jìn)程具有如下屬性:

(1)結(jié)構(gòu)性:進(jìn)程包含了數(shù)據(jù)集合和運(yùn)行于其上的程序,

為了描述和記錄進(jìn)程的動(dòng)態(tài)變化過(guò)程使其能正確運(yùn)行,還

需配置一個(gè)進(jìn)程控制塊,所以,每個(gè)進(jìn)程至少有三要素組

成:程序、數(shù)搪和進(jìn)程控制塊。

(2)共享性:同一程序同時(shí)運(yùn)行于不同數(shù)據(jù)集合上時(shí),

…一__._o或者說(shuō)(多個(gè)不同的進(jìn)程可以共享相同

的程序,所以,進(jìn)程和程序不是一一對(duì)應(yīng)的。

(3)動(dòng)態(tài)性:進(jìn)程是程序在數(shù)據(jù)集合上的一次執(zhí)行過(guò)程,

是動(dòng)態(tài)概念,同時(shí),它還有生命周期,由創(chuàng)建而產(chǎn)生,由

調(diào)度而執(zhí)行,由一撤皿銷而逍亡;而程序是一組有序指令序列,

是黯態(tài),所以.,程岸作為一種系統(tǒng)資源是永久存在的。

進(jìn)程的并發(fā)性

(4)獨(dú)立性:進(jìn)程既是系統(tǒng)中資源分配和保護(hù)的基本單

位,也是系統(tǒng)調(diào)度的獨(dú)立單位(單線程進(jìn)程)。凡是未建

立進(jìn)程的程序,都不能作為獨(dú)立單位參與運(yùn)行。通常,每

個(gè)進(jìn)程都可以以各自獨(dú)立的速度在CPU上推進(jìn)(有的教

材稱之為異步性)。

(5)制約性:并發(fā)進(jìn)程之間存在著制約關(guān)系,進(jìn)程在進(jìn)

行的關(guān)鍵點(diǎn)上需要相互等待或互通消息,以保證程序執(zhí)行

的可再現(xiàn)性和計(jì)算結(jié)果的唯一性。

(6)并發(fā)性:進(jìn)程可以并發(fā)地執(zhí)行,進(jìn)程的并發(fā)性能改

進(jìn)資源利用率和提高系統(tǒng)效率。

進(jìn)程與程序的聯(lián)系與區(qū)別

?5.進(jìn)程和程序的聯(lián)系及區(qū)別

?從進(jìn)程的定義可以看出,進(jìn)程和程序是既有密切聯(lián)系又有

區(qū)別的兩個(gè)完全不同的拶撬羲齡理解進(jìn)程的含義,

下面進(jìn)一步分析進(jìn)程和住

?(1)進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的

?(2)進(jìn)程是暫時(shí)的,程序是永久的

?(3)進(jìn)程與程序的組成不同

?(4)進(jìn)程與程序的對(duì)應(yīng)關(guān)系

?進(jìn)程和程序之間不存在一一對(duì)應(yīng)關(guān)系。一個(gè)程序可以對(duì)應(yīng)

多個(gè)進(jìn)程;反之,一個(gè)進(jìn)程至少要對(duì)應(yīng)一個(gè)程序,或?qū)?yīng)

多不程序,多個(gè)進(jìn)程也可對(duì)應(yīng)相同的程序。

?(5)進(jìn)程具有并發(fā)特征(獨(dú)立性和異步性)

進(jìn)程的狀態(tài)

2.1.2進(jìn)程的狀態(tài)

?1.進(jìn)程的三狀態(tài)模型

?運(yùn)行(running)態(tài):進(jìn)程占有CPU正在運(yùn)行。進(jìn)程已獲

得必要的資源并占有CPU,正在執(zhí)行的狀態(tài)。在單CPU系

統(tǒng)中,只能有一個(gè)進(jìn)程處于運(yùn)行狀態(tài)。在多CPU系統(tǒng)中則

可能有多個(gè)進(jìn)程處于運(yùn)行狀態(tài)。

?就緒(ready)態(tài):進(jìn)程具備運(yùn)行條件,等待系統(tǒng)分配

CPU以便運(yùn)行。進(jìn)程已得到除CPU以外的全部資源,是一

旦獲得CPU就可以執(zhí)行的狀態(tài),此時(shí)的進(jìn)程是在就緒隊(duì)列

中。

?阻塞(blocked)態(tài):又稱為等待(wait)態(tài)或睡眠

(sleep)態(tài),指進(jìn)程不具備運(yùn)行條件,正在等待某個(gè)事

件的完成。

進(jìn)程的狀態(tài)圖

1.進(jìn)程調(diào)度

2.等待某個(gè)事件發(fā)生

3.某個(gè)事件已經(jīng)發(fā)生

4.時(shí)間片用完或有史

島優(yōu)先級(jí)的進(jìn)程到來(lái)

進(jìn)程狀態(tài)轉(zhuǎn)換

?引起進(jìn)程狀態(tài)轉(zhuǎn)換的具體原因如下:

?就緒態(tài)一一>運(yùn)行態(tài):CPU空閑時(shí),調(diào)度程序選中一個(gè)就緒

進(jìn)程來(lái)執(zhí)行,也就是說(shuō)處于就緒態(tài)的某進(jìn)程被進(jìn)程調(diào)度程

序的執(zhí)行選中;

?運(yùn)行態(tài)一一>阻塞態(tài):等待使用資源或某事件發(fā)生,如等待

外設(shè)數(shù)據(jù)、等待人工干預(yù)。它是由運(yùn)行進(jìn)程自己主動(dòng)改變

的,一個(gè)正在運(yùn)行的進(jìn)程啟動(dòng)了某一外圍設(shè)備后,等待該

外圍設(shè)備傳輸完成時(shí),使自己由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。

進(jìn)程狀態(tài)轉(zhuǎn)換

?阻塞態(tài)一一>就緒態(tài):資源得到滿足或某事件己經(jīng)發(fā)生,如

外設(shè)傳輸結(jié)束、人工干預(yù)完成。它是由外界事件引起的,

外圍設(shè)備傳輸已經(jīng)完成時(shí),請(qǐng)求中斷,由I/O中斷處理程

序把因等待這一I/O完成而阻塞的進(jìn)程變?yōu)榫途w態(tài)。

?運(yùn)行態(tài)一一>就緒態(tài):運(yùn)行時(shí)間片到、或出現(xiàn)有更高優(yōu)先級(jí)

的進(jìn)程到來(lái)。此時(shí),處于運(yùn)行態(tài)的進(jìn)程被剝奪CPU。采用

時(shí)間片輪轉(zhuǎn)法調(diào)度時(shí),當(dāng)前運(yùn)行進(jìn)程用完分給它的時(shí)間片

后,將由運(yùn)行態(tài)變?yōu)榫途w態(tài);或采用優(yōu)先級(jí)調(diào)度時(shí),若有

更高優(yōu)先級(jí)的進(jìn)程變?yōu)榫途w態(tài),當(dāng)前進(jìn)程被迫放棄CPU,

使自己由運(yùn)行態(tài)變?yōu)榫途w態(tài),之后轉(zhuǎn)進(jìn)程調(diào)度。

進(jìn)程的五狀態(tài)模型

?2.進(jìn)程的五狀態(tài)模型

■NULL-->創(chuàng)建態(tài):執(zhí)行一個(gè)程序,創(chuàng)建一個(gè)子進(jìn)程。

?創(chuàng)建態(tài)一一>就緒態(tài):操作系統(tǒng)完成了進(jìn)程創(chuàng)建的必要操作,

并且當(dāng)前系統(tǒng)的性能和內(nèi)存的容量均允許時(shí),提交執(zhí)行。

?運(yùn)行態(tài)一一>終止態(tài):當(dāng)一個(gè)進(jìn)程到達(dá)了自然結(jié)束點(diǎn)、或是

出現(xiàn)了無(wú)法克服的錯(cuò)誤、或是被操作系統(tǒng)所終結(jié)、或是被

苴他講稗級(jí)《士

?①止態(tài)一■^NULL:完成善后操作,回收資源,退出內(nèi)存。

?就緒態(tài)一一>終止態(tài):未在狀態(tài)轉(zhuǎn)換圖中顯示,但某些操作

系統(tǒng)允許父進(jìn)程終結(jié)子進(jìn)程。

?阻塞態(tài)一一>終止態(tài):未在狀態(tài)轉(zhuǎn)換圖中顯示,但某些操作

系統(tǒng)允許父進(jìn)程終結(jié)子進(jìn)程。

進(jìn)程的五種狀態(tài)模型

進(jìn)程七種狀態(tài)模型

?3.進(jìn)程的七狀態(tài)模型

?引起進(jìn)程掛起的原因是多樣的,主要有:

?(1)系統(tǒng)中的進(jìn)程均處于等待狀態(tài),CPU空閑,此時(shí)需

要把一些等待進(jìn)程對(duì)換出去,以騰出足夠的內(nèi)存裝入就緒

進(jìn)程運(yùn)行。

?(2)進(jìn)程競(jìng)爭(zhēng)資源,導(dǎo)致系統(tǒng)資源不足,負(fù)荷過(guò)重,此

時(shí)需要掛起部分進(jìn)程以調(diào)整系統(tǒng)負(fù)荷,保證系統(tǒng)的實(shí)時(shí)性

或讓系統(tǒng)正常運(yùn)行。

進(jìn)程的七種狀態(tài)模型

(3)把一些定期執(zhí)行的進(jìn)程(如審計(jì)程序、監(jiān)控程序、

記賬程序)對(duì)換出去,以減輕系統(tǒng)負(fù)荷。

(4)用戶要求掛起自己的進(jìn)程,以便根據(jù)中間執(zhí)行情況

和中間結(jié)果進(jìn)行某些調(diào)試、檢查和改正。

(5)父進(jìn)程要求掛起自己的后代進(jìn)程,以進(jìn)行某些檢查

和改正。

(6)操作系統(tǒng)需要掛起某些進(jìn)程,檢查運(yùn)行中資源使用

情況,以改善系統(tǒng)性能;或當(dāng)系統(tǒng)出現(xiàn)故障或某些功能受

到破壞時(shí),需要掛起某些進(jìn)程以排除故障。

七種狀態(tài)

進(jìn)程完成

扶起

七種狀態(tài)的轉(zhuǎn)換

?引起進(jìn)程狀態(tài)轉(zhuǎn)換的具體原因如下:

?阻塞態(tài)一一>掛起阻塞態(tài):如果當(dāng)前不存在就緒進(jìn)程,也就

是CPU目前處于空閑狀態(tài),那么,就必須將一個(gè)阻塞態(tài)進(jìn)

郎加翳出去成為掛起阻塞態(tài),以便騰出內(nèi)存,裝入新的就

-掛起阻星態(tài)一一>掛起就緒態(tài):引起進(jìn)程等待的事件發(fā)生之

后,相應(yīng)的掛起阻塞態(tài)進(jìn)程將轉(zhuǎn)換為掛起就緒態(tài)。

?掛起就緒態(tài)一一>就緒態(tài):當(dāng)內(nèi)存中沒(méi)有就緒態(tài)進(jìn)程,或者

掛起就緒態(tài)進(jìn)程具有比就韁態(tài)進(jìn)程更高的優(yōu)先級(jí),系統(tǒng)將

加掛翹就普態(tài)進(jìn)程調(diào)回內(nèi)存并轉(zhuǎn)換成就緒態(tài)。

?就緒態(tài)一一>掛起就緒態(tài):內(nèi)存中的進(jìn)程都處于就緒狀態(tài),

此時(shí)外存中有一個(gè)更高優(yōu)先級(jí)的任務(wù)需要運(yùn)行,但內(nèi)存的

空間不些,則必須把內(nèi)存中的就緒態(tài)進(jìn)程對(duì)換出去成為掛

起就緒

七種狀態(tài)轉(zhuǎn)換

?掛起阻塞態(tài)一一>阻塞態(tài):當(dāng)一個(gè)進(jìn)程等待一個(gè)事件時(shí),原

則上不需要把它調(diào)入內(nèi)存。但是在下面一種情況下,這一

狀態(tài)變化是可能的。當(dāng)一個(gè)進(jìn)程退出后,內(nèi)存已經(jīng)有了足

夠的自由空間,而某個(gè)掛起阻塞態(tài)進(jìn)程具有較高的優(yōu)先級(jí)

并且操作系統(tǒng)已經(jīng)得知導(dǎo)致它阻塞的事件即將結(jié)束,便可

能發(fā)生這一狀態(tài)變化。

?運(yùn)行態(tài)一一>掛起就緒態(tài):當(dāng)一個(gè)具有較高優(yōu)先級(jí)的掛起阻

塞態(tài)進(jìn)程的等待事件結(jié)束后,它需要搶占CPU,而此時(shí)內(nèi)

存空間不夠,從而,可能導(dǎo)致正在運(yùn)行的進(jìn)程轉(zhuǎn)化為掛起

就緒態(tài)。另外,處于運(yùn)行態(tài)的進(jìn)程也可以自己掛起自己。

■創(chuàng)建態(tài)一一>掛起就緒態(tài):考慮到系統(tǒng)當(dāng)前資源狀況和性能

要求,可以決定新建的進(jìn)程將被對(duì)換出去成為掛起就緒態(tài)。

掛起的進(jìn)程的特征

?不難看出,可以把一個(gè)掛起進(jìn)程等同于不在內(nèi)存的進(jìn)程,

因此,掛起的進(jìn)程將不參與低級(jí)調(diào)度直到它們被對(duì)換進(jìn)內(nèi)

存。一個(gè)掛起進(jìn)程具有如下特征:

?該進(jìn)程不能立即被執(zhí)行。

?掛起進(jìn)程可能會(huì)等待一個(gè)事件,但所等待的事件是獨(dú)立于

掛起條件的,事件結(jié)束并不能導(dǎo)致進(jìn)程具備執(zhí)行條件。

?進(jìn)程進(jìn)入掛起狀態(tài)是由于操作系統(tǒng)、父進(jìn)程或進(jìn)程本身阻

止它的運(yùn)行。

?結(jié)束進(jìn)程掛起狀態(tài)的命令只能通過(guò)操作系統(tǒng)或父進(jìn)程發(fā)出。

PCB

2.1.3進(jìn)程控制塊

?1.進(jìn)程控制塊PCB(ProcessControlBlock)

>進(jìn)程控制塊(PCB)是操作系統(tǒng)為了管理進(jìn)程設(shè)置的一個(gè)專

門的數(shù)據(jù)結(jié)構(gòu),用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的

運(yùn)動(dòng)變化過(guò)程。系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,一個(gè)進(jìn)

程只有一個(gè)PCB,PCB是進(jìn)程存在與否的唯一標(biāo)記,因?yàn)?/p>

操作系統(tǒng)只有依據(jù)PCB才能感知進(jìn)程、管理進(jìn)程與控制進(jìn)

程,所以PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。進(jìn)程與

PCB是——對(duì)應(yīng)的。

PCB中的信息

?在不同的操作系統(tǒng)中對(duì)進(jìn)程的控制和管理機(jī)制不同,PCB

中的信息多少也不一樣,通常PCB應(yīng)包含如下一些信息:

(1)描述信息

(2)管理信息

(3)資源清單

包括本譚程已裝得的外設(shè)類別、壑量、共賽段的始址與長(zhǎng)

度等各和資源秸息以及本進(jìn)程正在申請(qǐng)的底源名稱等。

(4)現(xiàn)場(chǎng)保存區(qū)

用于保留進(jìn)程暫停時(shí)的斷點(diǎn)信息以便重新運(yùn)行時(shí)恢復(fù),比

如CPU各個(gè)寄存器的值。

(5)其他

例如指向下一個(gè)PCB鏈接指針。

PID

Tindovs任務(wù)昔理器

文件但)選項(xiàng)地)查看9幫助⑥

應(yīng)用程序進(jìn)程1性能1聯(lián)網(wǎng)1用戶1

映像名稱IFID|用戶名|CPU|

QQ.exe4504Admin..23E

QQ.exe5364Admin..00

RavfflonD.exe1032SYSTEM00

RavTask.exe1844SYSTEM00

RavTask.exe2008SYSTEM00

RfwSrv.exe1000SYSTEM001

rsnetsvr.exe1088SYSTEM001

RSTray.exe3224Admin...001

RsTray.exe3300Admin..002

RsTray.exe3352Admin...001

ScaKFrm.exe2060SYSTEM00

services,exe464SYSTEM00

SMAgent.exe2068SYSTEM00

SMax4PNP.exe3108Admin...00

smss.exe336SYSTEM00

spoolsv.exe1484SYSTEM00

ssMgr_ccbexe3212Admin...00▼]

....7ioCVCTVIInn

打_________[2J

I7顯示所有用戶的進(jìn)程(S)結(jié)束進(jìn)程更)

進(jìn)程數(shù):「57-而礴;28%「內(nèi)存使用:910M/2659H

PCB

?2.PCB的組織方式

?(1)線性方式

???

PCB?PCB:PCB、PCBnlPCB”

PCB

(2)鏈接方式

PCB

(3)索引方式

優(yōu)用*川<B衣

I'tJH

氏1

PCIW

PCR7

F*,Kyl?Mi

附BI0

IIHII

RBI2

PTBI5

PCBI4

PCBI5

進(jìn)程上下文

2.1.4進(jìn)程的映像

操作窣/T也仕儀上王六少似乂3寸也4土心IJ口VI、"口wyy

進(jìn)程工卞又(ProcessContext3。當(dāng)系統(tǒng)調(diào)度新程占

有CPU時(shí),新老進(jìn)程隨之發(fā)生上下文切換。在操作系統(tǒng)中,

進(jìn)程上下文包括三個(gè)組成部分:

用戶級(jí)上下文(UserLevelContext):由用戶進(jìn)程的程

序塊、用戶數(shù)據(jù)塊(含共享數(shù)據(jù)塊)和用戶堆棧組成的進(jìn)

程地址空間。

系統(tǒng)級(jí)上下文(SystemLevelContext):包括進(jìn)程的

無(wú)朋宸盤X班場(chǎng)值息控制信息,進(jìn)程環(huán)境塊,以及系統(tǒng)

隹棧等組成的進(jìn)住空間。

寄存器上下文(RegisterContext):由程序狀態(tài)字寄存

器、餐類控制寄存器、地址寄存器、通用寄存器、用戶棧

指針琴組成。

進(jìn)程映像

-進(jìn)程的內(nèi)存映像可以很好地說(shuō)明進(jìn)程的組成。簡(jiǎn)單的說(shuō),

一個(gè)進(jìn)程映像(ProcessImage)(也稱為進(jìn)程的實(shí)體)

包括:

?程序塊,即被執(zhí)行的程序,是純代碼,作為一種系統(tǒng)資源

可被多個(gè)進(jìn)程共享。

?數(shù)據(jù)塊,即程序運(yùn)行時(shí)加工處理對(duì)象,包括全局變量、局

部變量和常量的存放區(qū)。

■系統(tǒng)/用戶堆棧,用來(lái)解決過(guò)程調(diào)用或系統(tǒng)調(diào)用時(shí)的信息

存儲(chǔ)和參數(shù)傳遞。

?進(jìn)程控制塊,用來(lái)存儲(chǔ)進(jìn)程的標(biāo)志信息、現(xiàn)場(chǎng)信息和控制

信息。

用戶進(jìn)程在虛擬內(nèi)存中的映像

扶享地址空間

多個(gè)進(jìn)程在虛擬內(nèi)存中的映像

進(jìn)程1進(jìn)程2道程n

進(jìn)理進(jìn)程進(jìn)程

標(biāo)識(shí)符標(biāo)識(shí)符標(biāo)識(shí)符

進(jìn)程進(jìn)程進(jìn)程進(jìn)程

控制塊,

伏態(tài)信息狀態(tài)信息狀態(tài)信息

進(jìn)程進(jìn)程進(jìn)程

?控制信息控制佶息控制信息

用戶比根用戶堆檎用戶址棧

私有的用私有的用私力的用

戶地址空戶地址空戶地址空

間(程問(wèn)(程間(程

序、數(shù)序、數(shù)序、數(shù)

據(jù))據(jù))據(jù))

共享的地址空間

操作系統(tǒng)的控制結(jié)構(gòu)

215OS的控制結(jié)構(gòu)

?操作系統(tǒng)的控制表分為四類:進(jìn)程控制表,存儲(chǔ)控制表,

I/O控制表和文彳牛控制表。

?進(jìn)程控制表用來(lái)管理進(jìn)程及其相關(guān)信息。

轆備解配信息、存儲(chǔ)保護(hù)和

區(qū)共享褶息、虛擬存心

?I/O控制表用來(lái)管理計(jì)算機(jī)系統(tǒng)的I/O設(shè)備和通道,主要內(nèi)

容包括:I/O設(shè)備和通道是否可用,I/O設(shè)備和通道的分配

信息,I/O操作的狀態(tài)和進(jìn)展,I/O操作傳輸數(shù)據(jù)所在的內(nèi)

存區(qū)。

?文件控制表用來(lái)管理文件,主要內(nèi)容包括:被打開(kāi)文件的

值息,文件在內(nèi)存和外存中的位置信息,被打開(kāi)文件的狀

態(tài)和其他信佳彳百息。

進(jìn)程與資源

操作系統(tǒng)控制表的通用結(jié)構(gòu)

進(jìn)程的控制

?2.1.6進(jìn)程的控制

?內(nèi)核應(yīng)該具有3個(gè)最基本的功能:

?(1)中斷處理

?中斷處理是內(nèi)核最基本的功能。操作系統(tǒng)的重要活動(dòng)最終

都將依賴于中斷(系統(tǒng)調(diào)用、鍵盤命令的輸入、進(jìn)程調(diào)

度)。通常內(nèi)核只對(duì)中斷進(jìn)行“有限的處理”,然后便轉(zhuǎn)

交給有關(guān)進(jìn)程繼續(xù)處理。

?(2)時(shí)鐘管理

?操作系統(tǒng)中的許多活動(dòng)都需要時(shí)鐘管理,例如:在時(shí)間片

輪轉(zhuǎn)調(diào)度中,每當(dāng)時(shí)間片用完時(shí),由時(shí)鐘管理產(chǎn)生一個(gè)中

斷信號(hào),促使調(diào)度程序重新調(diào)度。

?(3)原語(yǔ)操作

原語(yǔ)

?(3)原語(yǔ)操作

■在系統(tǒng)狀態(tài)下執(zhí)行的某些具有特定功能的程序段稱為原語(yǔ)。

原語(yǔ)也是由若干條指令構(gòu)成的,用于完成一定的功能,原

語(yǔ)有幾個(gè)特點(diǎn):

?原語(yǔ)是機(jī)器指令級(jí)的,執(zhí)行其間不允許中斷;

?原語(yǔ)是功能級(jí)的,作為原語(yǔ)的程序段不允許并發(fā)執(zhí)行;

?原語(yǔ)是原子級(jí)的,一個(gè)操作中的動(dòng)作要么全做,要么全不

做。

進(jìn)程創(chuàng)建原語(yǔ)

?1.創(chuàng)建原語(yǔ)

?一個(gè)進(jìn)程可借助于創(chuàng)建原語(yǔ)來(lái)創(chuàng)建一個(gè)新的進(jìn)程,在Unix

系統(tǒng)中,forkO函數(shù)是用來(lái)創(chuàng)建進(jìn)程的,在Win32位API

中,創(chuàng)建進(jìn)程是由CreateProcess()完成的。這實(shí)際上是

個(gè)宏定義,根據(jù)不同的情況定義成CreateProcessA()或

CreateProcessW()之一,這兩個(gè)函數(shù)都在kernel32.dll中。

兩個(gè)函數(shù)的區(qū)別僅在于字符串的表達(dá),前者采用ASCII字

符,而后者采用“寬字符",即Unicode。實(shí)際上

Windows的內(nèi)部都采用寬字符,所以前者只是把字符串轉(zhuǎn)

換成寬字符格式,然后調(diào)用后者。那么哪些事件會(huì)觸發(fā)進(jìn)

程的創(chuàng)建呢?

進(jìn)程創(chuàng)建的時(shí)機(jī)

?(1)進(jìn)程創(chuàng)建的時(shí)機(jī)

系統(tǒng)初始化時(shí)操作系統(tǒng)啟動(dòng)時(shí),不斷創(chuàng)建一些新的進(jìn)程,

成系統(tǒng)的初始化操隹,最后用戶在終騎舞入登錄命令…后,

刃、統(tǒng)將為該裝端用戶建立一進(jìn)程,并把管痛入就緒隊(duì)列。

系統(tǒng)調(diào)用時(shí)當(dāng)運(yùn)行中的用戶程序提出某種請(qǐng)求后,必須

通過(guò)系統(tǒng)調(diào)用來(lái)使用系統(tǒng)提供的服務(wù),系統(tǒng)將專門創(chuàng)建一

個(gè)進(jìn)程來(lái)提供用戶所需要的服務(wù)。

?用戶進(jìn)程創(chuàng)建基于應(yīng)用的需要,用戶進(jìn)程(父進(jìn)程)自

己創(chuàng)建一個(gè)新的進(jìn)程(子進(jìn)程),父進(jìn)程和子進(jìn)程可并發(fā)

執(zhí)行。

?批處理系統(tǒng)初始化在批處理系統(tǒng)中,將作業(yè)裝入內(nèi)存時(shí),

為它分配必要的資源,系統(tǒng)并立即為它創(chuàng)建進(jìn)程,再插入

就緒隊(duì)列。

進(jìn)程的創(chuàng)建

?(2)進(jìn)程的創(chuàng)建

■一旦OS發(fā)現(xiàn)了要求創(chuàng)建新進(jìn)程的事件后,便調(diào)用進(jìn)程創(chuàng)

建原語(yǔ)創(chuàng)建進(jìn)程,步驟如下:

?申請(qǐng)空白PCB。分配唯一的數(shù)字標(biāo)識(shí)符(PID)。

?為新進(jìn)程分配資源。為其程序和數(shù)據(jù),以及用戶棧分配必

要的內(nèi)存空間。

?初始化進(jìn)程控制塊。把調(diào)用者提供的參數(shù):進(jìn)程名、進(jìn)程

優(yōu)先級(jí)、實(shí)體所在內(nèi)存的起始地址、所需的資源清單、記

帳信息及進(jìn)程家族關(guān)系等填入PCB結(jié)構(gòu)中。

■將新進(jìn)程插入就緒隊(duì)列和家族隊(duì)列。將新進(jìn)程的PCB指針

連到就緒隊(duì)列和家族隊(duì)列中。

進(jìn)程創(chuàng)建流程

撤銷進(jìn)程

2語(yǔ)L

11現(xiàn)

)

動(dòng)

退

產(chǎn)

個(gè)中

運(yùn)

正<>

進(jìn)

:-

,,

計(jì)

。

球2

陽(yáng)

現(xiàn)

錯(cuò)

運(yùn)

進(jìn)

動(dòng)

進(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)論