版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級(jí)物理上冊(cè)《2.2聲音的特性》同步測(cè)試題及答案
- 環(huán)境因素對(duì)紙質(zhì)文獻(xiàn)保存影響分析
- 高一化學(xué)成長(zhǎng)訓(xùn)練:第二單元化學(xué)是社會(huì)可持續(xù)發(fā)展的基礎(chǔ)
- 加油站隱患自查自糾以及判定依據(jù)
- 2024高中地理第五章交通運(yùn)輸布局及其影響章末總結(jié)提升練含解析新人教版必修2
- 2024高中生物專題3植物的組織培養(yǎng)技術(shù)課題2月季的花藥培養(yǎng)課堂演練含解析新人教版選修1
- 2024高中語(yǔ)文第三單元現(xiàn)當(dāng)代散文第9課記梁任公先生的一次演講學(xué)案新人教版必修1
- 2024高考地理一輪復(fù)習(xí)第十九章第2講世界熱點(diǎn)國(guó)家教案含解析新人教版
- 2024高考地理一輪復(fù)習(xí)專練78南美洲與巴西含解析新人教版
- 2024秋季期末散學(xué)典禮上校長(zhǎng)講話:用自律、書香與實(shí)踐填滿你的寒假行囊
- 診斷課件診斷學(xué)咯血
- 高速公路項(xiàng)目施工安全標(biāo)準(zhǔn)化圖集(多圖)
- 第一節(jié)植物細(xì)胞的結(jié)構(gòu)和功能 (3)
- 蕪湖市教育高層次人才分層培養(yǎng)實(shí)施方案
- 電梯安全防護(hù)知識(shí)培訓(xùn)PPT課件:正確使用電梯
- 設(shè)計(jì)風(fēng)速、覆冰的基準(zhǔn)和應(yīng)用
- (完整版)金融市場(chǎng)學(xué)考試大綱
- 水果深加工項(xiàng)目商業(yè)計(jì)劃書范文參考
- 基于單片機(jī)的室內(nèi)環(huán)境檢測(cè)系統(tǒng)設(shè)計(jì)開(kāi)題報(bào)告
- 愛(ài)麗絲夢(mèng)游仙境話劇中英文劇本
- 優(yōu)秀團(tuán)隊(duì)評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論