資源描述:
《第3講進(jìn)程管理之進(jìn)程控制》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第三講進(jìn)程管理之進(jìn)程控制上一講,我們講了前趨圖和進(jìn)程的基本概念,包括進(jìn)程的定義,進(jìn)程的描述,其中有進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換,還有PCB及其組成和組織方式。上一講主要是一些基本概念的引入,這講我們來了解,具體怎樣對(duì)進(jìn)程控制和管理的。補(bǔ)充:n處理機(jī)的執(zhí)行狀態(tài)為防止OS及其關(guān)鍵數(shù)據(jù)(如PCB等)不被用戶有意或無意破壞,通常將處理機(jī)的執(zhí)行狀態(tài)分為兩種處理機(jī)狀態(tài)特權(quán)(執(zhí)行指令,訪問)程序系統(tǒng)態(tài)(核心態(tài))較高(一切指令,所有R及存儲(chǔ)區(qū))OS內(nèi)核用戶態(tài)較低(規(guī)定指令,指定R及存儲(chǔ)區(qū))用戶程序ncobegin和coend括起來表示這n個(gè)語句是可以并
2、發(fā)執(zhí)行的。co是concurrent的頭兩個(gè)字符。其他的語法就是PASCAL語法。進(jìn)程管理的一個(gè)重要任務(wù)就是進(jìn)程控制。一、什么是進(jìn)程控制?就是系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建、撤銷進(jìn)程以及完成各狀態(tài)間的轉(zhuǎn)換,從而達(dá)到多進(jìn)程高效率并發(fā)執(zhí)行和協(xié)調(diào)、實(shí)現(xiàn)資源共享的目的。這些具有特定功能的程序段,就是操作系統(tǒng)內(nèi)核。進(jìn)程控制一般是由操作系統(tǒng)的內(nèi)核來實(shí)現(xiàn),內(nèi)核在執(zhí)行操作時(shí),往往是通過執(zhí)行各種原語操作來實(shí)現(xiàn)的。操作系統(tǒng)內(nèi)核:是加在硬件上的第一層軟件,通過執(zhí)行各種原語操作來實(shí)現(xiàn)各種控制和管理功能,具有創(chuàng)建進(jìn)程、撤消進(jìn)程、進(jìn)程通信、資源管理的功能
3、。同時(shí)把它們常駐內(nèi)存,以提高OS的運(yùn)行效率,這部分功能模塊就稱OS的內(nèi)核。內(nèi)核是基于硬件的第一層軟件擴(kuò)充。二、進(jìn)程的創(chuàng)建一)一些概念1、進(jìn)程圖(ProcessGraph)進(jìn)程圖是用于描述進(jìn)程家族關(guān)系的有向樹。進(jìn)程圖說明:結(jié)點(diǎn)代表進(jìn)程,一棵樹表示一個(gè)家族,根結(jié)點(diǎn)為該家族的祖先。子進(jìn)程可以繼承父進(jìn)程擁有的資源,子進(jìn)程撤銷時(shí),還給父進(jìn)程這些資源。父進(jìn)程撤銷時(shí),同時(shí)要撤銷其所有的子進(jìn)程。注意:進(jìn)程圖和前趨圖之間的區(qū)別前趨圖描述的是任務(wù)(或進(jìn)程)之間的前趨關(guān)系;只有在前趨進(jìn)程完成后,其后繼進(jìn)程才能運(yùn)行;進(jìn)程圖中,描述的進(jìn)程的進(jìn)程關(guān)系。創(chuàng)建者和被
4、創(chuàng)建者可以并發(fā)執(zhí)行,也可以是父進(jìn)程等待其所有的子進(jìn)程結(jié)束后再執(zhí)行,這完全取決于創(chuàng)建原語和創(chuàng)建者的需要。2、原語:是由若干多機(jī)器指令構(gòu)成的完成某種特定功能的一段程序,具有不可分割性。即原語的執(zhí)行必須是連續(xù)的,在執(zhí)行過程中不允許被中斷,在操作系統(tǒng)中,它是不可分割的基本單位。原來就是程序段,別被新名字嚇倒了。二)進(jìn)程創(chuàng)建1、進(jìn)程創(chuàng)建原語:進(jìn)程創(chuàng)建是調(diào)用創(chuàng)建原語來實(shí)現(xiàn)。創(chuàng)建原語掃描系統(tǒng)的PCB鏈表,在找到一定PCB鏈表之后,填入調(diào)用者提供的有關(guān)參數(shù)(這些參數(shù)包括:進(jìn)程名、進(jìn)程優(yōu)先級(jí)P0、進(jìn)程正文段起始地址d0、資源清單R0等),最后形成代表進(jìn)
5、程的PCB結(jié)構(gòu)。2、從這個(gè)原理我們可以得到以下幾點(diǎn):1)創(chuàng)建原語功能:創(chuàng)建一個(gè)具有指定標(biāo)識(shí)符進(jìn)程2)入口信息:進(jìn)程標(biāo)識(shí)符、優(yōu)先級(jí)、進(jìn)程開始地址、初始CPU狀態(tài)、資源清單等3)實(shí)現(xiàn)過程:如下圖創(chuàng)建原語流圖三、進(jìn)程撤銷(終止)1、引起進(jìn)程撤銷的原因:???(1)正常終止:該進(jìn)程已完成所要求的功能而正常終止。?(2)異常結(jié)束:由于某種錯(cuò)誤導(dǎo)致非正常終止。?(3)外界干預(yù):祖先進(jìn)程要求撤消某個(gè)子進(jìn)程。2進(jìn)程撤銷過程:1)撤銷過程原語:撤消原語首先檢查PCB進(jìn)程鏈或進(jìn)程家族,尋找所要撤消的進(jìn)程是否存在。如果找到了所要撤消的進(jìn)程的PCB結(jié)構(gòu),則撤
6、消原語釋放該進(jìn)程所占有的資源之后,把對(duì)應(yīng)的PCB結(jié)構(gòu)從進(jìn)程鏈或進(jìn)程家族中摘下并返回給PCB空隊(duì)列。如果被撤消的進(jìn)程有自己的子進(jìn)程,則撤消原語先撤消其子進(jìn)程的PCB結(jié)構(gòu)并釋放子進(jìn)程所占用的資源之后,再撤消當(dāng)前進(jìn)程的PCB結(jié)構(gòu)和釋放其資源。2)入口信息:被撤消的進(jìn)程名、進(jìn)程標(biāo)識(shí)符。3)實(shí)現(xiàn)過程:撤銷原語流圖說明:進(jìn)程被撤消,進(jìn)程都必須釋放它所占用的各種資源和PCB結(jié)構(gòu)本身,以利于資源的有效利用。當(dāng)然,一個(gè)進(jìn)程所占有的某些資源在使用結(jié)束時(shí)可能早已釋放。四、進(jìn)程的阻塞和喚醒1、引入進(jìn)程的創(chuàng)建原語和撤消原語完成了進(jìn)程從無到有,從存在到消亡的變化
7、。被創(chuàng)建后的進(jìn)程最初處于就緒狀態(tài),然后經(jīng)調(diào)度程序選中后進(jìn)入執(zhí)行狀態(tài)。有關(guān)進(jìn)程調(diào)度部分將放在下一章中詳述,現(xiàn)在我們講實(shí)現(xiàn)進(jìn)程的執(zhí)行狀態(tài)到等待狀態(tài)的原語即阻塞原語,和由等待狀態(tài)到就緒狀態(tài)轉(zhuǎn)換的原語即喚醒原語。2、引起進(jìn)程阻塞和喚醒的事件1)請(qǐng)求系統(tǒng)服務(wù)當(dāng)正在執(zhí)行的進(jìn)程請(qǐng)求操作系統(tǒng)提供服務(wù)時(shí),由于某種原因,操作系統(tǒng)不立即滿足進(jìn)程的要求時(shí),該進(jìn)程只能轉(zhuǎn)變?yōu)樽枞麪顟B(tài)來等待。例,當(dāng)進(jìn)程申請(qǐng)打印機(jī)時(shí),打印機(jī)正被其他進(jìn)程占用,則該進(jìn)程轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。2)啟動(dòng)某種操作當(dāng)進(jìn)程啟動(dòng)某種操作后,如果該進(jìn)程必須在該操作完成之后才能繼續(xù)執(zhí)行,則必須先使進(jìn)程阻塞。
8、例如:進(jìn)程啟動(dòng)了某個(gè)I/O設(shè)備,如果只有在I/O設(shè)備完成了指定的任務(wù)后,進(jìn)程才能繼續(xù),則該進(jìn)程在啟動(dòng)I/O設(shè)備后,要進(jìn)入阻塞狀態(tài)。注意,這里強(qiáng)調(diào)的是只有I/O設(shè)備完成了指定的任務(wù),進(jìn)程才能繼續(xù)。3)新數(shù)據(jù)未到達(dá)對(duì)于相互合