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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第二章進程管理2.1前驅圖和程序執行

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

較典型的進程定義有:

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

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

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

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

掛起

激活

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

可中斷的睡眠狀態的進程會睡眠直到某個條件變為真,如產生一個硬件中斷、釋放進程正在等待的系統資源或是傳遞一個信號都可以是喚醒進程的條件。

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

進程控制塊的作用是使一個在多道程序環境下不能獨立運行的程序(含數據),成為一個能獨立運行的基本單位,一個能與其它進程并發執行的進程。或者說,OS是根據PCB來對并發執行的進程進行控制和管理的。系統為了管理進程設置的一個專門的數據結構,用它來記錄進程的外部特征,描述進程的運動變化過程

系統利用PCB來控制和管理進程,所以PCB是系統感知進程存在的唯一標志進程與PCB是一一對應的/include/linux/sched.h中structtask_struct15PCB的內容163.進程控制塊中的信息

1)進程標識符進程標識符用于唯一地標識一個進程。兩種標識符:(1)內部標識符。

在所有的操作系統中,都為每一個進程賦予一個唯一的數字標識符,它通常是一個進程的序號。設置內部標識符主要是為了方便系統使用。

(2)外部標識符。

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

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

①通用寄存器

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

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

③程序狀態字PSW,其中含有狀態信息,如條件碼(體現當前指令執行結果的各種狀態信息。如有無進位(CY位),有無溢出(OV位),結果正負(SF位),結果是否為零(ZF位),奇偶標志位(P位)等)、執行方式、中斷屏蔽標志等;

④用戶棧指針

指每個用戶進程都有一個或若干個與之相關的系統棧,用于存放過程和系統調用參數及調用地址。棧指針指向該棧的棧頂。18

3)進程調度信息在PCB中還存放一些與進程調度和進程對換有關的信息,包括:

①進程狀態;②進程優先級;③進程調度所需的其它信息;④事件,即阻塞原因。19

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

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

可執行特權指令,訪問所有的寄存器和存儲區用戶態(目態)

可執行非特權指令,訪問指定的寄存器和存儲區一般OS內核的功能:支撐功能

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

進程管理、存儲器管理、設備管理272.3.2進程的創建1.進程的層次結構

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

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

(1)申請空白PCB。

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

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

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

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

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

②保護錯。進程試圖去訪問一個不允許訪問的資源或文件,或者以不適當的方式進行訪問,例如,進程試圖去寫一個只讀文件;③非法指令。程序試圖去執行一條不存在的指令。出現該錯誤的原因,可能是程序錯誤地轉移到數據區,把數據當成了指令;

④特權指令錯。用戶進程試圖去執行一條只允許OS執行的指令;

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

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

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

①操作員或操作系統干預。由于某種原因,例如,發生了死鎖,由操作員或操作系統終止該進程;

②父進程請求。由于父進程具有終止自己的任何子孫進程的權利,因而當父進程提出請求時,系統將終止該進程;

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

(1)根據被終止進程的標識符,從PCB集合中找出該進程的PCB,從中讀出該進程的狀態。

(2)若被終止進程正處于執行狀態,應立即終止該進程的執行,并置調度標志為真,用于指示該進程被終止后應重新進行調度。

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

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

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

正在執行的進程,當發現上述某事件時,由于無法繼續執行,于是進程便通過調用阻塞原語block把自己阻塞。可見,進程的阻塞是進程自身的一種主動行為。

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

溫馨提示

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

評論

0/150

提交評論