第7講 第三章 進程管理(二)_第1頁
第7講 第三章 進程管理(二)_第2頁
第7講 第三章 進程管理(二)_第3頁
第7講 第三章 進程管理(二)_第4頁
第7講 第三章 進程管理(二)_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

河北科技師范學院大專課程

操作系統(tǒng)第七講主講人:曾曉寧網(wǎng)絡班調課的事2023/2/113.1進程的引入

3.2進程結構

3.3進程控制3.4進程的同步與互斥3.5進程間通信3.6進程調度3.7死鎖3.8線程第3章進程管理2023/2/12 計算機系統(tǒng)中,最寶貴的資源是CPU。為了提高它的利用率,需要引入多道程序設計的概念。當內存儲器中同時有多個程序存在時,如果不對人們熟悉的“程序”概念加以擴充,就無法刻畫多個程序共同運行時系統(tǒng)呈現(xiàn)出的特征。因此,在本章將給出操作系統(tǒng)中的重要概念:“進程”。它將是在多道程序運行環(huán)境下,系統(tǒng)資源分配和獨立運行的基本單位?;貞洀土?023/2/13在計算機系統(tǒng)中只有一個程序在運行,這個程序獨占系統(tǒng)中所有資源,其執(zhí)行不受外界影響。一道程序執(zhí)行完后另一道才能開始。

3.1進程的引入

3.1.1順序程序與并發(fā)程序2023/2/141、程序的順序執(zhí)行在早期的單道程序系統(tǒng)中,編制一個程序時,通常是按順序進行設計:先安排輸入語句,然后是對輸入數(shù)據(jù)進行處理的語句,最后安排數(shù)據(jù)處理結果的輸出語句。這就是人們所習慣的傳統(tǒng)的順序程序設計方法。程序在執(zhí)行時也是按順序依次執(zhí)行各條語句,而不必考慮其他的用戶程序。2023/2/15程序的順序執(zhí)行的特征順序性封閉性可再現(xiàn)性2023/2/16順序性:處理機的操作嚴格按照程序所規(guī)定的順序執(zhí)行,一個程序開始執(zhí)行必須要等到前一個程序已執(zhí)行完成。絕對不可能出現(xiàn)在一個程序運行過程中,又夾雜進另一個程序執(zhí)行的現(xiàn)象存在。2023/2/17封閉性:程序一旦開始執(zhí)行,就在封閉的環(huán)境下執(zhí)行,其計算結果不受外界因素影響。任何時候,位于內存中的程序可以使用系統(tǒng)中的一切資源,不可能有其他程序與之競爭。2023/2/18可再現(xiàn)性:

程序的結果與它的執(zhí)行速度無關(即與時間無關),只要執(zhí)行環(huán)境和初始條件相同,當多次重復執(zhí)行一個程序時,無論不停的執(zhí)行還是“走走停?!?,一定會得到相同的結果。2023/2/192、程序的并發(fā)執(zhí)行 所謂程序的并發(fā)執(zhí)行是指:若干個程序同時在系統(tǒng)中執(zhí)行,這些程序的執(zhí)行在時間上是重疊的,一個程序的執(zhí)行尚未結束,另一個程序的執(zhí)行已經(jīng)開始。

2023/2/110一個有四條語句的程序段:S1:a:=x+2;S2:b:=y+4;S3:c:=a+b;S4:d:=c+b;

2023/2/111程序的并發(fā)執(zhí)行s4S1S2s32023/2/112輸入1輸入2輸入3計算1計算2計算3輸出1輸出2輸出3圖:程序的并發(fā)執(zhí)行2023/2/113I1輸入設備處理機打印機I2C1I3C2P1C3P2t1t2t3t4t7t5t6t8P3t92023/2/114I1P3輸入設備處理機打印機I2C1I3C2P1C3P2t1t2t3t4t52023/2/115間斷性:(共享、合作、制約導致)在程序并發(fā)執(zhí)行時,各個程序的執(zhí)行已經(jīng)不再可能完全依照自己的執(zhí)行次序執(zhí)行了;程序并發(fā)執(zhí)行的特點2023/2/116失去了程序的封閉性:系統(tǒng)資源不再由單個程序獨占,因此資源的狀態(tài)由多道程序的活動共同決定。程序在執(zhí)行的過程中必然會受到其他程序的影響。2023/2/117不可再現(xiàn)性:在多道環(huán)境中,即使初始條件相同,同一個程序多次執(zhí)行的結果也可能不同。2023/2/118實例兩個并發(fā)執(zhí)行的程序A和B,它們共享一個公共變量n,

A:n=7;

程序A和B并發(fā)執(zhí)行,可以出現(xiàn)以下3種情況:①print(n)在n=2和n=7之間執(zhí)行,則打印結果為2;②print(n)在n=2和n=7之后執(zhí)行,則打印結果為7;③print(n)在n=7和n=2之后執(zhí)行,則打印結果為2;B:n=2;

print(n);2023/2/119

綜上所述,在單道系統(tǒng)中可以用程序代表順序程序的執(zhí)行過程,但在多道系統(tǒng)中,程序的并行、制約等特征使得用程序這個靜態(tài)概念已不能描述系統(tǒng)中的運行情況了。為此,在操作系統(tǒng)設計中引入了一個新的概念—進程。

2023/2/1203.1.2進程的定義及特性進程的定義進程與程序的區(qū)別進程的特性2023/2/121進程的定義

進程是具有獨立功能的程序關于某個數(shù)據(jù)集合的一次執(zhí)行過程,是系統(tǒng)資源分配和調度的基本單位。2023/2/122C語言編譯程序PStartStartPause1End1P1Pause2End2P2進程實例實例:把兩個C語言的源程序f1.c和f2.c編譯成目標代碼文件f1.obj和f2.objf1.cf2.c2023/2/1232、進程的特征動態(tài)性并發(fā)性獨立性異步性結構性2023/2/124(1)動態(tài)性:(最基本特征)進程的實質是程序關于某個數(shù)據(jù)集合的一次執(zhí)行過程,因此動態(tài)性是進程的一個重要特征。進程有一定的生命周期,主要表現(xiàn)為它是由“創(chuàng)建”而產(chǎn)生,由系統(tǒng)“調度”運行,最后由系統(tǒng)“撤消”而消亡。2023/2/125(2)并發(fā)性:多個進程同在內存中,且能在一段時間內同時運行;這些進程輪流占用CPU和各種系統(tǒng)資源,同時在系統(tǒng)中運行。沒有建立進程的程序是無法并發(fā)運行的。2023/2/126(3)獨立性:

進程是一個能獨立運行、獨立分配資源、獨立接受調度的基本單位。進程在獲得其必需的一切資源后便可執(zhí)行,而當系統(tǒng)不能提供它所要求的資源時,它便暫停執(zhí)行。2023/2/127(4)異步性:由于進程間的相互制約,使進程具有執(zhí)行的間斷性,即進程按各自獨立的不可預知的速度向前推進。因此,系統(tǒng)必須提供某些設施,來保證程序之間能協(xié)調操作和共享資源。2023/2/128(5)結構特征:從結構上看,一個進程都是由程序、數(shù)據(jù)和進程控制塊PCB三部分組成。進程控制塊PCB是系統(tǒng)專門為進程設立的數(shù)據(jù)結構,用來記錄進程的狀態(tài)變化。2023/2/129動態(tài)特征的集中反映描述要完成的功能操作對象及工作區(qū)2023/2/130進程間由于共同協(xié)作和共享資源,導致生命期中的狀態(tài)不斷發(fā)生變化。比如一個正在運行的進程如果要等待輸入/輸出的完成,這時它就不能繼續(xù)運行。另一種情形是一個進程是可以運行的,但由于操作系統(tǒng)把處理機分配給了別的進程使用,于是它也只能處于等待。只有當前占有CPU的進程,才真正在處于運行。3.1.3進程的狀態(tài)及轉換開始啦2023/2/131從創(chuàng)建到撤消的過程中,具有執(zhí)行-暫停-再執(zhí)行的活動規(guī)律。于是,進程在其生命期內,可以處于下面3種基本狀態(tài)之一。2023/2/132就緒狀態(tài)運行狀態(tài)阻塞狀態(tài)1、進程的三種基本狀態(tài)2023/2/133進程已經(jīng)分配了除處理機以外的所有必要資源,只要再獲得處理機就能夠執(zhí)行的狀態(tài)。(但CPU正被其它進程占用,它暫時不能執(zhí)行。)這樣的進程可能有多個,通常排成一個隊列,稱就緒隊列。當CPU空閑時,從就緒隊列中選擇一個進程執(zhí)行。就緒狀態(tài)2023/2/134運行狀態(tài)進程已經(jīng)獲得CPU,正在運行。在單處理機系統(tǒng)只有一個進程處于執(zhí)行狀態(tài)。多處理機系統(tǒng)則有多個處于執(zhí)行狀態(tài)。2023/2/135阻塞狀態(tài)又叫等待狀態(tài)或睡眠狀態(tài)。正在執(zhí)行的進程由于等待I/O或某事件的完成而暫時無法繼續(xù)執(zhí)行時,這時便放棄CPU而進入的暫停狀態(tài),又稱等待狀態(tài)。引起阻塞的事件:請求I/O,申請緩存。根據(jù)進程阻塞的不同原因,把進程組織成多個隊列,稱為阻塞隊列。2023/2/136一個進程的狀態(tài),可以隨著自身的推進和外界環(huán)境的變化而變化,從而使其從一種狀態(tài)變遷到另一種狀態(tài)。下圖是進程狀態(tài)變遷圖,箭頭表示的是狀態(tài)變遷的方向,旁邊標識的文字是引起這種狀態(tài)變遷的原因(依據(jù)條件而轉換)。注:新創(chuàng)建的進程通常屬于就緒狀態(tài)2023/2/137就緒阻塞執(zhí)行進程調度等待某事件發(fā)生(如I/O請求)某事件發(fā)生(I/O完成)時間片用完或出現(xiàn)高優(yōu)先級進程進程基本狀態(tài)變遷圖2023/2/138對進程狀態(tài)的轉換過程,我們應注意如下4點:(1)進程從阻塞態(tài)到運行態(tài),必須經(jīng)過就緒態(tài)而不能直接轉換到運行態(tài)。

這是因為此進程阻塞原因解除具備可運行條件時,系統(tǒng)中可能有多個進程都處于邏輯上可運行狀態(tài),因此系統(tǒng)必須根據(jù)一定的算法選擇一個就緒進程占用CPU。這種選擇過程被稱為進程調度。2023/2/139(2)一個進程由運行態(tài)轉換為阻塞態(tài)一般是由運行進程自己主動提出的。

例如,進程在運行過程中需要某一條件而不能滿足時,就自己主動放棄CPU而進入阻塞態(tài)。2023/2/140(3)一個進程由阻塞態(tài)變?yōu)榫途w態(tài)總是由外界事件引起的,而不是由該進程自己引起的。當進程所等待的事件發(fā)生后,進程便由阻塞態(tài)變?yōu)榫途w態(tài)。

2023/2/141(4)處于就緒狀態(tài)與阻塞狀態(tài)的進程,雖然都“暫時無法運行”,但兩者有著本質上的區(qū)別。

前者已做好了運行的準備,只要獲得CPU就可以投入運行;而后者要等待某事件(比如輸入/輸出)完成后才能繼續(xù)運行,因此即使此時把CPU分配給它,它也無法運行。2023/2/142進程之間由于存在同步和資源的競爭等相互制約等關系,因此導致了各進程在其生命周期內存在狀態(tài)的變化。以上三種狀態(tài)是最基本的狀態(tài),在實際的操作系統(tǒng)中,往往不止這三種,不同的系統(tǒng),出于調度策略的考慮,有時把進程狀態(tài)做進一步的細化。2023/2/1432、進程的其它兩種狀態(tài)創(chuàng)建狀態(tài)

是進程剛被創(chuàng)建時的狀態(tài),此時該進程正在等待OS完成創(chuàng)建進程的必要操作。(為新進程分配進程標識符、創(chuàng)建管理進程所需的表格及PCB分配進程所需的資源。)當已完成創(chuàng)建進程的必要操作,且此時系統(tǒng)性能和內存容量均允許時,進程從創(chuàng)建狀態(tài)轉換為就緒狀態(tài),插入到就緒隊列中。2023/2/144終止狀態(tài)當一個正在執(zhí)行的進程執(zhí)行到結束語句,或出現(xiàn)了異常錯誤時,此進程將被停止執(zhí)行,并釋放其所占有的資源;但仍然駐留在內存中,直到其他進程讀取完該進程的有關信息后,才被刪除。2023/2/1453、掛起狀態(tài)(被調出內存的狀態(tài))引入原因:系統(tǒng)負荷調節(jié)的需要終端用戶的請求系統(tǒng)的需要父進程的需要2023/2/146就緒進程運行的需要內存中的所有進程均處于阻塞狀態(tài),且CPU空閑,沒有足夠空間來運行。為了有效地利用CPU,這時需要把一些阻塞進程掛起,即將它們從內存移出到外存,調入外存,以便騰出足夠的內存空間裝入就緒進程運行。2023/2/147系統(tǒng)負荷調節(jié)的需要當系統(tǒng)中進程數(shù)太多,資源相對不足,工作負荷較重時,系統(tǒng)希望暫時掛起一些進程(如優(yōu)先級較低的程序),以減輕負荷保證系統(tǒng)能正常運行。等負荷輕時再將掛起進程恢復運行。2023/2/148終端用戶的請求當終端用戶在運行自己的程序的發(fā)生錯誤時,希望自己的進程靜止下來,即掛起,以便進行檢查和修改。2023/2/149系統(tǒng)的需要當系統(tǒng)出現(xiàn)故障或某些功能受到破壞時,需要暫時將系統(tǒng)中的進程掛起,等系統(tǒng)把故障排除后,再恢復原來狀態(tài)。

2023/2/150父進程的需要有時父進程為了協(xié)調各子進程間的活動,或是檢查和修改子進程。希望掛起自己的子進程。2023/2/151被掛起的進程可能是就緒進程,也可能是阻塞進程。在五狀態(tài)基礎上再增加兩種新的進程狀態(tài):掛起就緒狀態(tài)和掛起阻塞狀態(tài)。掛起就緒狀態(tài)是指進程被存放在外存中,但已具備運行條件;掛起阻塞狀態(tài)是指進程被存放在外存中,正在等待某一事件發(fā)生。2023/2/152補:進程調度方式1、非搶占方式一旦把CPU分配給某進程后,便讓該進程一直運行下去,直到該進程完成或發(fā)生某事件(如提出I/O請求)而自動阻塞時,才把CPU分配給另一進程。優(yōu)點:簡單,系統(tǒng)開銷小。缺點:緊急任務到達時,不能立即投入運行,以致延誤時機。若干個后到的短作業(yè),須等待長作業(yè)運行完畢,致使短作業(yè)的時間增長。2023/2/153實例有三個進程P1,P2,P3先后(但又幾乎是同時)到達,它們分別需要20、4、2個單位時間即可運行完畢。若它們按P1,P2,P3的順序執(zhí)行,且不可搶占,則三個進程各自的周轉時間分別為20、24、26個單位時間,三者的平均周轉時間是23.3個單位時間。2023/2/1542、搶占方式當一個進程正在執(zhí)行時,系統(tǒng)可以基于某種原則,搶占已分配給它的處理機,并將處理機分配給其他進程。搶占原則有:優(yōu)先權原則:即優(yōu)先權高的進程可以搶占優(yōu)先權低的進程的處理機而運行;短作業(yè)優(yōu)先原則:當短作業(yè)到達時,可立即搶占長進程的處理機而運行;時間片原則:一個時間片完后重新調度。

2023/2/155對前例若采用基于時間片原則的搶占調度方式。由下圖可以看出P1、P2、P3的周轉時間分別為26、10、和6個單位時間,而平均周轉時間則已由非搶占方式的23.3降為14個單位時間。P1P2P1P3P2P1P1P12*2*2*2*2*2*2120246810121426基于時間片原則的搶占高度方式示例圖2023/2/156創(chuàng)建就緒阻塞終止掛起就緒

完成激活掛起掛起激活獲得資源或某事件完成獲得資源或某事件完成等待資源或某事件發(fā)生進程調度時間片用完或出現(xiàn)高優(yōu)先級進程允許不允許運行掛起掛起阻塞

圖:具有掛起狀態(tài)的進程狀態(tài)圖2023/2/1573.2進程的結構一個進程創(chuàng)建后,需要有自己對應的程序以及該程序運行時所需的數(shù)據(jù),但僅有程序和數(shù)據(jù)還不行,進程在其生命期內是走走停停,停停走走的,暫時停下來以后,至少應該要有一個屬于它專用的地方,來記錄它暫停時的運行現(xiàn)場。否則,它再次被投入運行時,就無法從上次被打斷的地方繼續(xù)運行下去。2023/2/158是對進程的靜態(tài)描述,它要由3個部分組成:程序段、數(shù)據(jù)段以及進程控制塊PCB。3.2.1進程的實體PCB……程序段數(shù)據(jù)段圖:進程的組成指針指針2023/2/159系統(tǒng)還必須為每個進程設立一個或多個堆棧,用于保存過程調用或系統(tǒng)調用時的現(xiàn)場信息和參數(shù)傳遞。程序段、數(shù)據(jù)段、PCB及堆棧統(tǒng)稱為進程映像。程序段描述了進程運行一次所要完成的功能,通常是純代碼,可以被多個進程共享;數(shù)據(jù)段是程序運行時加工處理的對象,通常只能為一個進程專用。2023/2/160PCB包含了進程的描述信息和控制信息,是在進程創(chuàng)建時所建立的,PCB標識了進程的存在,當進程撤消時,PCB也隨之撤消。PCB與進程一一對應。堆棧分為系統(tǒng)堆棧和用戶堆棧。系統(tǒng)堆棧是進程在核心態(tài)下運行時使用的堆棧,位于系統(tǒng)區(qū);而用戶堆棧是進程在用戶態(tài)下運行時使用的堆棧,位于用戶區(qū)。2023/2/161

3.2.2進程控制塊(ProcessControlBlock)為了描述一個進程和其它進程以及系統(tǒng)資源的關系,為了刻畫一個進程在各個不同時期所處的狀態(tài),采用了一個與進程相聯(lián)系的數(shù)據(jù)塊,稱為進程控制塊(PCB)。系統(tǒng)利用PCB來控制和管理進程,所以PCB是系統(tǒng)感知進程存在的唯一標志。PCB常駐內存;PCB與進程是一一對應的。2023/2/162通常將所有的PCB組織在一起,并集中存放在內存的系統(tǒng)表格區(qū),構成一個PCB表。OS專門開辟PCB區(qū)將所有的PCB組織成若干個鏈表或隊列。PCB表的大小決定了系統(tǒng)中最多可同時存在的進程個數(shù),稱為系統(tǒng)并發(fā)度。2023/2/163隨操作系統(tǒng)的不同,PCB

溫馨提示

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

評論

0/150

提交評論