進程的描述與控制(part2)_第1頁
進程的描述與控制(part2)_第2頁
進程的描述與控制(part2)_第3頁
進程的描述與控制(part2)_第4頁
進程的描述與控制(part2)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第二章進程管理2.1前驅(qū)圖和程序執(zhí)行

2.2進程的描述2.3進程控制2.4進程同步2.5經(jīng)典進程的同步問題2.6進程通信2.7線程的基本概念2.8線程的實現(xiàn)21.程序順序執(zhí)行時的特征順序性:(2)封閉性:(3)可再現(xiàn)性:2.程序并發(fā)執(zhí)行時的特征間斷性2)失去封閉性3)不可再現(xiàn)性簡單回顧3程序與進程之間的區(qū)別進程更能真實地描述并發(fā),而程序不能進程是由程序,數(shù)據(jù)和控制塊三部分組成的程序是靜態(tài)的,進程是動態(tài)的進程有生命周期,有誕生有消亡,短暫的;而程序是相對長久的一個程序可對應(yīng)多個進程,反之亦然進程具有創(chuàng)建其他進程的功能,而程序沒有4

較典型的進程定義有:

(1)進程是程序的一次執(zhí)行。

(2)進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時所發(fā)生的活動。

(3)進程是程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。在引入了進程實體的概念后,我們可以把傳統(tǒng)OS中的進程定義為:“進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位”。52.進程的三種基本狀態(tài)執(zhí)行(Running)狀態(tài)進程占有CPU,并在CPU上運行2)就緒狀態(tài)一個進程已經(jīng)具備運行條件,但由于無CPU暫時不能運行的狀態(tài)(當(dāng)調(diào)度給其CPU時,立即可以運行)3)阻塞狀態(tài)又叫等待態(tài)、封鎖態(tài)、睡眠態(tài)指進程因等待某種事件的發(fā)生而暫時不能運行的狀態(tài)(即使CPU空閑,該進程也不可運行)圖2-5進程的三種基本狀態(tài)及其轉(zhuǎn)換就緒就緒阻塞執(zhí)行I/O完成I/O請求進程調(diào)度時間片完6增加:創(chuàng)建狀態(tài),終止?fàn)顟B(tài)三種進程狀態(tài)->五狀態(tài)進程模型創(chuàng)建(新new)狀態(tài)OS已完成為創(chuàng)建一進程所必要的工作已構(gòu)造了進程標(biāo)識符已創(chuàng)建了管理進程所需的表格但還沒有允許執(zhí)行該進程(尚未同意)

因為資源有限終止(退出exit)狀態(tài)中止后進程移入該狀態(tài)它不再有執(zhí)行資格表格和其它信息暫時由輔助程序保留一旦其他進程完成了對終止態(tài)進程的信息抽取之后,系統(tǒng)將刪除該進程。71.掛起操作的引入由于進程的不斷創(chuàng)建,系統(tǒng)資源已不能滿足進程運行的要求,就必須把某些進程掛起(suspend),對換到磁盤鏡像區(qū)中,暫時不參與進程調(diào)度,起到平滑系統(tǒng)操作負(fù)荷的目的。原因:(1)終端用戶的請求:修改程序(2)父進程請求:對子進程的修改等(3)負(fù)荷調(diào)節(jié)的需要:資源不足(4)操作系統(tǒng)的需要:檢查資源利用情況2.2.3.掛起操作和進程狀態(tài)的轉(zhuǎn)換82.進程狀態(tài)的轉(zhuǎn)換活動就緒→靜止就緒。(2)活動阻塞→靜止阻塞。(3)靜止就緒→活動就緒。(4)靜止阻塞→活動阻塞。圖2-7具有掛起狀態(tài)的進程狀態(tài)圖執(zhí)行→靜止就緒。

掛起

激活

就緒狀態(tài)(Ready):進程在內(nèi)存且可立即進入運行狀態(tài)阻塞狀態(tài)(Blocked):進程在內(nèi)存并等待某事件的出現(xiàn)靜止阻塞/阻塞掛起狀態(tài)(Blocked,suspend):進程在外存并等待某事件的出現(xiàn)靜止就緒/就緒掛起狀態(tài)(Ready,suspend):進程在外存,但只要進入內(nèi)存,即可運行9七狀態(tài)進程模型活動掛起事件發(fā)生事件發(fā)生等待事件掛起調(diào)度超時釋放活動掛起掛起(Suspend):把一個進程從內(nèi)存轉(zhuǎn)到外存可能有以下幾種情況活動阻塞→靜止阻塞:沒有進程處于就緒狀態(tài)或就緒進程要求更多內(nèi)存資源時,發(fā)生這種轉(zhuǎn)換,以提交新進程或運行就緒進程活動就緒→靜止就緒:當(dāng)有高優(yōu)先級阻塞(系統(tǒng)認(rèn)為會很快就緒的)進程和低優(yōu)先級就緒進程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進程運行→靜止就緒:對搶占式系統(tǒng),當(dāng)有高優(yōu)先級靜止阻塞進程因事件出現(xiàn)而進入靜止就緒時,系統(tǒng)可能會把運行進程轉(zhuǎn)到靜止就緒狀態(tài)10七狀態(tài)進程模型活動掛起事件發(fā)生事件發(fā)生等待事件掛起調(diào)度超時釋放活動掛起激活(Activate):把一個進程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:靜止就緒→活動就緒:沒有就緒進程或掛起就緒進程優(yōu)先級高于就緒進程時,發(fā)生轉(zhuǎn)換靜止阻塞→活動阻塞:當(dāng)一個進程釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻塞掛起進程(系統(tǒng)認(rèn)為會很快出現(xiàn)所等待的事件)轉(zhuǎn)換為阻塞狀態(tài)。11可中斷的睡眠狀態(tài)的進程會睡眠直到某個條件變?yōu)檎?,如產(chǎn)生一個硬件中斷、釋放進程正在等待的系統(tǒng)資源或是傳遞一個信號都可以是喚醒進程的條件??芍袛嗟乃郀顟B(tài)的進程會睡眠直到某個條件變?yōu)檎?,如產(chǎn)生一個硬件中斷、釋放進程正在等待的系統(tǒng)資源或是傳遞一個信號都可以是喚醒進程的條件。

可中斷的睡眠狀態(tài)的進程會睡眠直到某個條件變?yōu)檎?,如產(chǎn)生一個硬件中斷、釋放進程正在等待的系統(tǒng)資源或是傳遞一個信號都可以是喚醒進程的條件。

只能被如硬件中斷、正在等待的系統(tǒng)資源被釋放等喚醒,對其他進程傳遞的信號不響應(yīng)。12進程程序用戶所要執(zhí)行的語句序列,必須有進程數(shù)據(jù)用戶程序所要處理的數(shù)據(jù)數(shù)據(jù)量可大可小,也可以沒有棧用于過程調(diào)用和參數(shù)傳遞進程控制塊PCB(進程屬性)處于核心段用戶進程不能直接訪問、修改自己的PCB*進程要素132.1.4進程管理中的數(shù)據(jù)結(jié)構(gòu)1.操作系統(tǒng)中用于管理控制的數(shù)據(jù)結(jié)構(gòu)內(nèi)存設(shè)備文件進程內(nèi)存表設(shè)備表文件表進程1進程2進程n…進程1…進程n進程實體及所用資源列表圖2-9操作系統(tǒng)控制表的一般結(jié)構(gòu)142.進程控制塊PCB的作用

進程控制塊的作用是使一個在多道程序環(huán)境下不能獨立運行的程序(含數(shù)據(jù)),成為一個能獨立運行的基本單位,一個能與其它進程并發(fā)執(zhí)行的進程?;蛘哒f,OS是根據(jù)PCB來對并發(fā)執(zhí)行的進程進行控制和管理的。系統(tǒng)為了管理進程設(shè)置的一個專門的數(shù)據(jù)結(jié)構(gòu),用它來記錄進程的外部特征,描述進程的運動變化過程

系統(tǒng)利用PCB來控制和管理進程,所以PCB是系統(tǒng)感知進程存在的唯一標(biāo)志進程與PCB是一一對應(yīng)的/include/linux/sched.h中structtask_struct15PCB的內(nèi)容163.進程控制塊中的信息

1)進程標(biāo)識符進程標(biāo)識符用于唯一地標(biāo)識一個進程。兩種標(biāo)識符:(1)內(nèi)部標(biāo)識符。

在所有的操作系統(tǒng)中,都為每一個進程賦予一個唯一的數(shù)字標(biāo)識符,它通常是一個進程的序號。設(shè)置內(nèi)部標(biāo)識符主要是為了方便系統(tǒng)使用。

(2)外部標(biāo)識符。

它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(進程)在訪問該進程時使用。為了描述進程的家族關(guān)系,還應(yīng)設(shè)置父進程標(biāo)識及子進程標(biāo)識。此外,還可設(shè)置用戶標(biāo)識,以指示擁有該進程的用戶。PCB中的信息包含:進程標(biāo)識符,處理機狀態(tài),進程調(diào)度信息,進程控制信息。17

2)處理機狀態(tài)處理機狀態(tài)信息主要是由處理機的各種寄存器中的內(nèi)容組成的。

①通用寄存器

用戶可視寄存器,它們是用戶程序可以訪問的,用于暫存信息;

②指令計數(shù)器,存放了要訪問的下一條指令的地址;

③程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼(體現(xiàn)當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息。如有無進位(CY位),有無溢出(OV位),結(jié)果正負(fù)(SF位),結(jié)果是否為零(ZF位),奇偶標(biāo)志位(P位)等)、執(zhí)行方式、中斷屏蔽標(biāo)志等;

④用戶棧指針

指每個用戶進程都有一個或若干個與之相關(guān)的系統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。18

3)進程調(diào)度信息在PCB中還存放一些與進程調(diào)度和進程對換有關(guān)的信息,包括:

①進程狀態(tài);②進程優(yōu)先級;③進程調(diào)度所需的其它信息;④事件,即阻塞原因。19

4)進程控制信息進程控制信息包括:①程序和數(shù)據(jù)的地址;②進程同步和通信機制;③資源清單;④鏈接指針。是指進程的程序和數(shù)據(jù)所在的內(nèi)存或外存地(首)址,以便再調(diào)度到該進程執(zhí)行時,能從PCB中找到其程序和數(shù)據(jù)指實現(xiàn)進程同步和進程通信時必需的機制,如消息隊列指針、信號量等,它們可能全部或部分地放在PCB中是一張列出了除CPU以外的、進程所需的全部資源及已經(jīng)分配到該進程的資源的清單它給出了本進程(PCB)所在隊列中的下一個進程的PCB的首地址20PCB的內(nèi)容進程描述信息進程控制信息CPU現(xiàn)場保護信息注意:不同操作系統(tǒng)中對進程的控制和管理機制不一樣,PCB中的信息多少也不一樣213.進程控制塊的組織方式1)鏈接方式(Linux采用)圖2-11PCB鏈接隊列示意圖鏈接方式,索引方式222)索引方式圖2-12按索引方式組織PCB2324第二章進程管理2.1前驅(qū)圖和程序執(zhí)行

2.2進程的描述2.3進程控制2.4進程同步2.5經(jīng)典進程的同步問題2.6進程通信2.7線程的基本概念2.8線程的實現(xiàn)252.3進程控制2.3.1操作系統(tǒng)內(nèi)核處理器管理的一個主要工作是對進程的控制,包括:創(chuàng)建進程、阻塞進程、喚醒進程、掛起進程、激活進程、終止進程和撤銷進程等現(xiàn)代OS一般采用分層結(jié)構(gòu)與硬件緊密相關(guān)的模塊常用設(shè)備的驅(qū)動程序運行頻率較高的模塊硬件A0A1?AnOS內(nèi)核保護軟件;提高OS效率26處理機的執(zhí)行狀態(tài):系統(tǒng)態(tài)(管態(tài)),內(nèi)核態(tài)

可執(zhí)行特權(quán)指令,訪問所有的寄存器和存儲區(qū)用戶態(tài)(目態(tài))

可執(zhí)行非特權(quán)指令,訪問指定的寄存器和存儲區(qū)一般OS內(nèi)核的功能:支撐功能

中斷處理、時鐘管理、原語操作資源管理功能

進程管理、存儲器管理、設(shè)備管理272.3.2進程的創(chuàng)建1.進程的層次結(jié)構(gòu)

圖2-13進程樹2.進程圖(ProcessGraph)父進程:創(chuàng)建進程的進程。子進程:被創(chuàng)建的進程。各自工作區(qū),僅共享父進程打開的文件283.引起創(chuàng)建進程的事件用戶登錄。(2)作業(yè)調(diào)度。(3)提供服務(wù)。(4)應(yīng)用請求。在終端上交互式的登錄。系統(tǒng)為用戶創(chuàng)建一個進程,并插入就緒隊列

提交一個批處理作業(yè)。操作系統(tǒng)為用戶請求創(chuàng)建一個服務(wù)進程。存在的進程孵化(spawn)新的進程。用戶進程自己創(chuàng)建進程294.進程的創(chuàng)建(CreationofProgress)

(1)申請空白PCB。

(2)為新進程分配資源。

(3)初始化進程控制塊。

(4)將新進程插入就緒隊列,或直接投入運行。302.3.3進程的終止1.引起進程終止(TerminationofProcess)的事件

1)正常結(jié)束在任何計算機系統(tǒng)中,都應(yīng)有一個用于表示進程已經(jīng)運行完成的指示。例如,在批處理系統(tǒng)中,通常在程序的最后安排一條Holt指令或終止的系統(tǒng)調(diào)用。當(dāng)程序運行到Holt指令時,將產(chǎn)生一個中斷,去通知OS本進程已經(jīng)完成。在分時系統(tǒng)中,用戶可利用Logsoff去表示進程運行完畢,此時同樣可產(chǎn)生一個中斷,去通知OS進程已運行完畢。312)異常結(jié)束在進程運行期間,由于出現(xiàn)某些錯誤和故障而迫使進程終止。這類異常事件很多,常見的有:

①越界錯誤。程序所訪問的存儲區(qū),已越出該進程的區(qū)域;

②保護錯。進程試圖去訪問一個不允許訪問的資源或文件,或者以不適當(dāng)?shù)姆绞竭M行訪問,例如,進程試圖去寫一個只讀文件;③非法指令。程序試圖去執(zhí)行一條不存在的指令。出現(xiàn)該錯誤的原因,可能是程序錯誤地轉(zhuǎn)移到數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)成了指令;

④特權(quán)指令錯。用戶進程試圖去執(zhí)行一條只允許OS執(zhí)行的指令;

⑤運行超時。進程的執(zhí)行時間超過了指定的最大值;⑥等待超時。進程等待某事件的時間,超過了規(guī)定的最大值;

⑦算術(shù)運算錯。進程試圖去執(zhí)行一個被禁止的運算,例如,被0除;

⑧I/O故障。指在I/O過程中發(fā)生了錯誤等。323)外界干預(yù)外界干預(yù)并非指在本進程運行中出現(xiàn)了異常事件,而是指進程應(yīng)外界的請求而終止運行。這些干預(yù)有:

①操作員或操作系統(tǒng)干預(yù)。由于某種原因,例如,發(fā)生了死鎖,由操作員或操作系統(tǒng)終止該進程;

②父進程請求。由于父進程具有終止自己的任何子孫進程的權(quán)利,因而當(dāng)父進程提出請求時,系統(tǒng)將終止該進程;

③父進程終止。當(dāng)父進程終止時,OS也將他的所有子孫進程終止。332.進程的終止過程

(1)根據(jù)被終止進程的標(biāo)識符,從PCB集合中找出該進程的PCB,從中讀出該進程的狀態(tài)。

(2)若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,并置調(diào)度標(biāo)志為真,用于指示該進程被終止后應(yīng)重新進行調(diào)度。

(3)若該進程還有子孫進程,還應(yīng)將其所有子孫進程予以終止,以防他們成為不可控的進程。

(4)將被終止進程所擁有的全部資源,或者歸還給其父進程,或者歸還給系統(tǒng)。

(5)將被終止進程(它的PCB)從所在隊列(或鏈表)中移出,將它的PCB歸還到PCB池。342.3.4進程的阻塞與喚醒1.引起進程阻塞和喚醒的事件請求系統(tǒng)服務(wù)2)啟動某種操作3)新數(shù)據(jù)尚未到達4)無新工作可做352.進程阻塞過程

正在執(zhí)行的進程,當(dāng)發(fā)現(xiàn)上述某事件時,由于無法繼續(xù)執(zhí)行,于是進程便通過調(diào)用阻塞原語block把自己阻塞??梢?,進程的阻塞是進程自身的一種主動行為。

進入block過程后,由于此時該進程還處于執(zhí)行狀態(tài),所以應(yīng)①立即停止執(zhí)行,保存現(xiàn)場信息到PSW;②把進程控制塊中的現(xiàn)行狀態(tài)由“執(zhí)行”改為阻塞,③將PCB插入阻塞隊列。如果系統(tǒng)中設(shè)置了因不同事件而阻塞的多個阻塞隊列,則應(yīng)將本進程插入到具有相同事件的阻塞(等待)隊列。最后,轉(zhuǎn)調(diào)度程序進行重新調(diào)度,將處理機分配給另一就緒進程,并進行切換,亦即,保留被阻塞進程的處理機狀態(tài)(在PCB中),再按新進程的PCB中的處理機狀態(tài)設(shè)置CPU的環(huán)境。363.進程喚醒過程當(dāng)被阻塞進程所期待的事件出現(xiàn)時,如I/O完成或其所期待的數(shù)據(jù)已經(jīng)到達,則由有關(guān)進程(比如,用完并釋放了該I/O設(shè)備的進程)調(diào)用喚醒原語wakeup(),將等待該

溫馨提示

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

最新文檔

評論

0/150

提交評論