2.21、2.22
一些概念:
進(jìn)程控制是進(jìn)程管理中最基本的功能。創(chuàng)建、終止、可負(fù)責(zé)進(jìn)程運(yùn)行中的狀態(tài)轉(zhuǎn)換。
進(jìn)程控制一般是由OS的內(nèi)核中的原語(yǔ)來(lái)實(shí)現(xiàn)的。
原語(yǔ)(Primitive)是由若干條指令組成的,用于完成一定功能的一個(gè)過(guò)程。
它與一般過(guò)程的區(qū)別在于:它們是“原子操作(Action Operation)”。即不可分割、不允許中斷、常駐內(nèi)存。
•進(jìn)程圖(Process Graph) 進(jìn)程圖是用于描述一個(gè)進(jìn)程的家族關(guān)系的有向樹(shù)。
2.2.3 進(jìn)程的阻塞與喚醒
1. 引起進(jìn)程阻塞和喚醒的事件
有下述幾類事件會(huì)引起進(jìn)程阻塞或被喚醒!
•請(qǐng)求系統(tǒng)服務(wù)(如請(qǐng)求打印服務(wù))
•啟動(dòng)某種操作(如I/O操作)
•新數(shù)據(jù)尚未到達(dá)
•無(wú)新工作可做(某些特定功能的系統(tǒng)進(jìn)程、如發(fā)送進(jìn)程)
2.進(jìn)程阻塞過(guò)程
無(wú)法繼續(xù)執(zhí)行,調(diào)用阻塞原語(yǔ)block把自己阻塞,是主動(dòng)行為。
•立即停止執(zhí)行
•PCB中的現(xiàn)行狀態(tài)由“執(zhí)行”改為“阻塞” 并將PCB插入相應(yīng)阻塞隊(duì)列
•轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一就緒進(jìn)程并進(jìn)行切換
。ūA舯蛔枞M(jìn)程的處理機(jī)狀態(tài)(在PCB中),再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置CPU的環(huán)境)。
3.進(jìn)程喚醒過(guò)程
當(dāng)被阻塞進(jìn)程所期待的事件出現(xiàn)時(shí),將等待該事件的進(jìn)程喚醒。(如I/O完成)
喚醒原語(yǔ)執(zhí)行的過(guò)程是:
•把被阻塞的進(jìn)程移出阻塞隊(duì)列
•將PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。
應(yīng)當(dāng)指出,block原語(yǔ)和wakeup原語(yǔ)是一對(duì)作用剛好相反的原語(yǔ)。
故在某進(jìn)程中調(diào)用了阻塞原語(yǔ),則必須在與之相合作的另一進(jìn)程中或其他相關(guān)的進(jìn)程中安排喚醒原語(yǔ),以能喚醒阻塞進(jìn)程;
否則,其將長(zhǎng)久地處于阻塞狀態(tài),從而再無(wú)機(jī)會(huì)繼續(xù)運(yùn)行。
2.2.4 進(jìn)程的掛起與激活
1.進(jìn)程的掛起
當(dāng)出現(xiàn)了引起進(jìn)程掛起的事件時(shí)(比如,用戶進(jìn)程請(qǐng)求將自己掛起,或父進(jìn)程請(qǐng)求掛起某子進(jìn)程)。
掛起原語(yǔ)suspend( )的執(zhí)行過(guò)程是:
•首先檢查被掛起進(jìn)程的狀態(tài)并進(jìn)行相應(yīng)操作(執(zhí)行態(tài)、活動(dòng)就緒 - 靜止就緒; 活動(dòng)阻塞 - 靜止阻塞)。
•為便于用戶或父進(jìn)程考查該進(jìn)程的運(yùn)行情況,把該進(jìn)程的PCB復(fù)制到某指定的內(nèi)存區(qū)域。
•最后,若被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度,從而將處理機(jī)重新分配。
2.進(jìn)程的激活過(guò)程
當(dāng)發(fā)生激活進(jìn)程的事件時(shí)(如父進(jìn)程或用戶進(jìn)程請(qǐng)求激活指定進(jìn)程)
激活原語(yǔ)active( )激活過(guò)程:
•激活原語(yǔ)將進(jìn)程從外存調(diào)入內(nèi)存
•檢查該進(jìn)程的現(xiàn)行狀態(tài)并進(jìn)行相應(yīng)操作(靜止就緒-活動(dòng)就緒; 靜止阻塞 - 活動(dòng)阻塞)。
假如采用的是搶占調(diào)度策略,則每當(dāng)有新進(jìn)程進(jìn)入就緒隊(duì)列時(shí),
檢查是否要進(jìn)行重新調(diào)度,即比較被激活進(jìn)程與當(dāng)前進(jìn)程的優(yōu)先級(jí),決定處理機(jī)歸屬。