版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、進程管理概要課件進程管理概要課件第二章 進程管理教學目的:本課為描述程序并發(fā)執(zhí)行引入進程的概念,描述進程的特征、狀態(tài)、狀態(tài)的轉(zhuǎn)換、進程控制塊等基本概念。描述控制進程狀態(tài)轉(zhuǎn)換的OS內(nèi)核和進程控制原語的功能。并發(fā)性是OS最重要的特征,進程是OS最基本最重要的概念,進程管理是OS的重點和難點。在進程的控制的基礎(chǔ)上這課引入進程同步和進程同步機制的概念,它對并發(fā)執(zhí)行進程的推進序列加以限制以保證互斥使用臨界資源或協(xié)同完成任務(wù),解決程序并發(fā)執(zhí)行時帶來結(jié)果不可再現(xiàn)問題。這課介紹了用軟件、硬件、信號量機制、AND型信號量集、一般信號量集、管程等各種解決進程互斥同步問題的方法,重點介紹了信號量機制的概念和用信號量
2、機制解決進程互斥同步問題的方法 2第二章 進程管理教學目的:4教學要求:熟悉進程引入的必要性;熟練掌握進程的定義和特征,熟練掌握進程的三個基本狀態(tài)和狀態(tài)的轉(zhuǎn)換,熟練掌握進程存在的唯一實體-進程控制塊,熟悉進程上下文。熟悉內(nèi)核的功能,掌握增加“掛起”、 “激活”操作的五個狀態(tài)圖和狀態(tài)的轉(zhuǎn)換,熟悉創(chuàng)建、撤消、阻塞、喚醒、掛起和激活進程控制原語的功能,一般了解線程的概念。3教學要求:熟悉進程引入的必要性;熟練掌握進程的定義和特征,熟熟悉進程間制約關(guān)系,掌握臨界資源和臨界區(qū)概念,掌握進程同步和進程同步機制,熟悉利用軟件方法和硬件技術(shù)解決進程同步機制。熟練掌握信號量和P、V操作的概念、定義和實質(zhì),熟練掌
3、握利用信號量實現(xiàn)進程互斥和同步,熟悉用信號量描述前趨關(guān)系。掌握利用信號量解生產(chǎn)者-消費者問題、熟悉利用信號量解讀者-寫者問題等經(jīng)典同步問題,掌握進程同步分析方法。了解用AND型信號集機制、一般信號集機制和管程解經(jīng)典同步問題。熟悉進程通訊的概念和共享存儲器系統(tǒng)、消息傳送系統(tǒng)、管道通信系統(tǒng)三類高級通訊機制,掌握消息緩沖隊列通信機制。 4熟悉進程間制約關(guān)系,掌握臨界資源和臨界區(qū)概念,掌握進程同步和進程的的基本概念程序順序執(zhí)行與特征程序并發(fā)執(zhí)行與特征進程的引入進程狀態(tài)及其轉(zhuǎn)換進程控制塊PCB進程上下文進程控制進程創(chuàng)建進程終止進程阻塞與喚醒進程的掛起與激活進程的互斥與同步軟件方法硬件方法信號量方法管程方
4、法進程通信共享存儲器消息傳遞管道通信線程5進程的的基本概念進程的互斥與同步7(一)進程的的基本概念(1) 程序順序執(zhí)行與特征一個較大的程序通常都由若干個程序段組成,程序在執(zhí)行時,各程序段必須按照先后次序逐個執(zhí)行。程序各程序段先后執(zhí)行次序關(guān)系可用前趨圖表示。前趨圖是一個有向無循環(huán)圖,圖由結(jié)點和結(jié)點間有向邊組成,結(jié)點代表各程序段操作,而結(jié)點間的有向邊表示兩程序段操作之間存在的前趨關(guān)系(“-”)。兩程序段Pi和Pj的前趨關(guān)系表示成Pi-Pj,Pi是Pj的前趨,Pj是Pi的后繼。 P1C1I1 I2C2P26(一)進程的的基本概念(1) 程序順序執(zhí)行與特征 P1C1I程序順序執(zhí)行與特征程序順序執(zhí)行特征
5、: 順序性:程序各程序段嚴格按照規(guī)定的順序執(zhí)行。 封閉性:程序執(zhí)行時機內(nèi)各資源只受該程序控制而改變,執(zhí)行結(jié)果不受外界因素影響。 可再現(xiàn)性:只要程序執(zhí)行環(huán)境和初始條件相同,程序多次執(zhí)行,可獲得相同結(jié)果。7程序順序執(zhí)行與特征程序順序執(zhí)行特征:9(2)程序并發(fā)執(zhí)行與特征 在計算機系統(tǒng)支持并行操作時,如采用多道程序設(shè)計技術(shù),則內(nèi)存中多道程序處于并發(fā)執(zhí)行狀態(tài)。如上述有三個程序段的作業(yè)類,雖然每個作業(yè)有前趨關(guān)系的各程序段不能在系統(tǒng)CPU和輸入輸出各部件并行執(zhí)行,但一個作業(yè)沒有前趨關(guān)系的程序段或不同作業(yè)的程序段可以分別在CPU和各輸入輸出部件上并行執(zhí)行。8(2)程序并發(fā)執(zhí)行與特征 在計算機系統(tǒng)支持并行操作程
6、序并發(fā)執(zhí)行與特征 四個上述三個程序段類的作業(yè)并發(fā)執(zhí)行的前趨圖如下圖所示:C3I1I2I3I4C1C2C4P1P2P3P49程序并發(fā)執(zhí)行與特征 四個上述三個程序段類的作業(yè)并發(fā)執(zhí)行的前程序并發(fā)執(zhí)行與特征程序并發(fā)執(zhí)行特征:間斷性:程序在并發(fā)執(zhí)行時,由于它們共享資源或為完成同一項任務(wù)而相互合作,使在并發(fā)程序之間形成了相互制約的關(guān)系。相互制約將導致并發(fā)程序具有“執(zhí)行-暫仃-執(zhí)行”這種間斷性活動規(guī)律。失去封閉性:程序在并發(fā)執(zhí)行時,是多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的執(zhí)行已失去了封閉性。10程序并發(fā)執(zhí)行與特征程序并發(fā)執(zhí)行特征:12程序并發(fā)執(zhí)行與特征不可再現(xiàn)性:程序
7、在并發(fā)執(zhí)行時,由于失去了封閉性,也將導致失去結(jié)果的可再現(xiàn)性。即程序經(jīng)過多次執(zhí)行,雖然其各次的環(huán)境和初始條件相同,但得到的結(jié)果卻各不相同。例1:觀察者/報告者11程序并發(fā)執(zhí)行與特征不可再現(xiàn)性:程序在并發(fā)執(zhí)行時,由于失去了封程序并發(fā)執(zhí)行與特征觀察者: 報告者:begin begin repeat repeat wait a car go through deley a time N=N+1; Print N ; N=0 ; until untilend end初始N=n時不同執(zhí)行序列: N=N+1; Print N; Print N ; Print N ; N=0 ; N=N+1 ; N=0 ;
8、N=N+1 ; N=0 ;結(jié)果各不相同: 打印n+1,N=0; 打印n,N=1; 打印n,N=0;與執(zhí)行速度有關(guān)12程序并發(fā)執(zhí)行與特征觀察者: 例2 與時間有關(guān)的錯誤:一飛機訂票系統(tǒng),兩個終端,執(zhí)行T1、T2進程T1 : T2:. .Read(x); Read(x);if x=1 then if x=1 then x:=x-1; x:=x-1;write(x); write(x);. .程序并發(fā)執(zhí)行與特征中斷13例2 與時間有關(guān)的錯誤:一飛機訂票系統(tǒng),兩個終端,執(zhí)行T1例3銀行的聯(lián)網(wǎng)儲蓄業(yè)務(wù)允許儲戶同時用儲蓄卡和存折對同一帳戶進行存取款操作,如果某儲戶同時(ATM,柜臺)辦理兩筆存款業(yè)務(wù)(10
9、00,2000)從系統(tǒng)的角度看,有兩個進程將同時對儲戶余額等數(shù)據(jù)進行修改。如果兩個進程將同時對儲戶余額等數(shù)據(jù)進行修改。如果兩個進程同時讀出原余額(假設(shè)為5000),兩個進程分別將最新余額修改為6000和700014例316分析及措施最后,儲戶余額可能為6000,或7000,顯然都不正確。原因:兩個進程同時修改同一數(shù)據(jù),而沒有進行有效控制。正確方法:如果有多個進程需要同時修改某一數(shù)據(jù),系統(tǒng)必須控制,一次僅允許一個進程完成讀數(shù)據(jù),并修改數(shù)據(jù)兩件事以后,才允許別的進程對同一數(shù)據(jù)的讀和修改操作。15分析及措施17通過上述例子可見,采用多道程序并發(fā) 設(shè)計技術(shù)的操作系統(tǒng)對諸進程的并發(fā)控制是非常重要和必須的
10、。16通過上述例子可見,采用多道程序并發(fā) 設(shè)計技術(shù)的操作系統(tǒng)對諸進(3)進程的引入 由于程序在并發(fā)執(zhí)行時,各次執(zhí)行的結(jié)果不同,所以用“程序”這個概念已無法描述程序的并發(fā)執(zhí)行,所以必須引入新的概念-進程來描述程序的并發(fā)執(zhí)行。進程這一術(shù)語最早由麻省理工學院著名的操作系統(tǒng)MULTICS中提出。 進程定義:“進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位”。17(3)進程的引入 由于程序在并發(fā)執(zhí)行時,各次執(zhí)行的結(jié)果不同進程的引入進程的特征:結(jié)構(gòu)特征:從結(jié)構(gòu)上,進程實體由程序段、數(shù)據(jù)段和進程控制塊三部分組成,UNIX中稱為“進程映象”。進程描述進程控制塊PCB程序段數(shù)據(jù)結(jié)構(gòu)集18進程的
11、引入進程的特征:進程描述進程控制塊PCB程序段數(shù)據(jù)結(jié)構(gòu)動態(tài)性:動態(tài)性是進程的最基本特征,它是程序執(zhí)行過程,它是有一定的生命期。它由創(chuàng)建而產(chǎn)生、由調(diào)度而執(zhí)行,因得不到資源而暫仃,并由撤消而死亡。而程序是靜態(tài)的,它是存放在介質(zhì)上一組有序指令的集合,無運動的含義。并發(fā)性:并發(fā)性是進程的重要特征,同時也是OS的重要特征。并發(fā)性指多個進程實體同存于內(nèi)存中,能在一段時間內(nèi)同時執(zhí)行。而程序是不能并發(fā)執(zhí)行。19動態(tài)性:動態(tài)性是進程的最基本特征,它是程序執(zhí)行過程,它是有一進程的引入獨立性:進程是一個能獨立執(zhí)行的基本單位,即是一個獨立獲得資源和獨立調(diào)度的單位,而程序不作為獨立單位參加執(zhí)行。異步性:進程按各自獨立的
12、不可預(yù)知的速度向前推進,即進程按異步方式進行,正是這一特征,將導致程序執(zhí)行的不可再現(xiàn)性,因此OS必須采用某種措施來限制各進程推進序列以保證各程序間正常協(xié)調(diào)執(zhí)行。20進程的引入22程序與進程的區(qū)別與聯(lián)系進程是程序的一次執(zhí)行,是一個動態(tài)的概念,程序是完成某個特定功能的指令的有序序列,是一個靜態(tài)的概念 一個進程可以執(zhí)行一個或幾個程序,同一程序也可能由多個進程同時執(zhí)行進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位,程序則不是 程序可以作為一種軟件資源長期保存,而進程是程序的一次執(zhí)行過程,它是臨時的,有生命期的 21程序與進程的區(qū)別與聯(lián)系進程是程序的一次執(zhí)行,是一個動態(tài)的概念(4)進程狀態(tài)及其轉(zhuǎn)換1. 進程
13、的三個基本狀態(tài)執(zhí)行態(tài)(Running):當一個進程在處理機上執(zhí)行時,則稱該進程處于執(zhí)行狀態(tài)。就緒態(tài)(Ready):一個進程獲得了除處理機外的一切所需資源,一旦得到處理機即可執(zhí)行,則稱此進程處于就緒狀態(tài)。阻塞態(tài)(Blocked):(又稱掛起狀態(tài)、等待狀態(tài)):一個進程正在等待某一事件發(fā)生(例如請求IO而等待IO完成等)而暫時仃止執(zhí)行,這時即使把處理機分配給進程也無法執(zhí)行,故稱該進程處于阻塞狀態(tài)。22(4)進程狀態(tài)及其轉(zhuǎn)換1. 進程的三個基本狀態(tài)24執(zhí)行就緒阻塞進程的狀態(tài)及其轉(zhuǎn)換調(diào)度時間片完I/O請求I/O完成進程狀態(tài)及其轉(zhuǎn)換23執(zhí)行就緒阻塞進程的狀態(tài)及其轉(zhuǎn)換調(diào)度時間片完I/O請求I/O完進程狀態(tài)及
14、其轉(zhuǎn)換 三個基本狀態(tài)之間可能轉(zhuǎn)換和轉(zhuǎn)換原因如下:就緒態(tài)執(zhí)行態(tài):當處理機空閑時,進程調(diào)度程序必將處理機分配給一個處于就緒態(tài)的進程 ,該進程便由就緒態(tài)轉(zhuǎn)換為執(zhí)行態(tài)。執(zhí)行態(tài)阻塞態(tài):處于執(zhí)行態(tài)的進程在執(zhí)行過程中需要等待某一事件發(fā)生后(例如因IO請求等待IO完成后),才能繼續(xù)執(zhí)行,則該進程放棄處理機,從執(zhí)行態(tài)轉(zhuǎn)換為阻塞態(tài)。24進程狀態(tài)及其轉(zhuǎn)換 26進程狀態(tài)及其轉(zhuǎn)換阻塞態(tài)就緒態(tài):處于阻塞態(tài)的進程,若其等待的事件已經(jīng)發(fā)生,于是進程由阻塞態(tài)轉(zhuǎn)換為就緒態(tài)。執(zhí)行態(tài)就緒態(tài):處于執(zhí)行狀態(tài)的進程在其執(zhí)行過程中,因分給它的處理機時間片已用完,而不得不讓出(被搶占)處理機,于是進程由執(zhí)行態(tài)轉(zhuǎn)換為就緒態(tài)。 而阻塞態(tài)執(zhí)行態(tài)和就
15、緒態(tài)阻塞態(tài)這二種狀態(tài)轉(zhuǎn)換不可能發(fā)生。25進程狀態(tài)及其轉(zhuǎn)換阻塞態(tài)就緒態(tài):處于阻塞態(tài)的進程,若其等備菜完成開炒炒另一個菜時落選沒有醬油買來醬油就緒炒菜阻塞炒菜的三態(tài)模型26備菜完成開炒炒另一個菜時落選沒有醬油買來醬油就緒炒菜阻塞炒菜系統(tǒng)中各進程狀態(tài)的分布和管理處于執(zhí)行態(tài)進程:如系統(tǒng)有一個處理機,則在任何一時刻,最多只有一個進程處于執(zhí)行態(tài)。處于就緒態(tài)進程:一般處于就緒態(tài)的進程按照一定的算法(如先來的進程排在前面,或采用優(yōu)先權(quán)高的進程排在前面)排成一個就緒隊列。處于阻塞態(tài)進程:處于阻塞態(tài)的進程排在阻塞隊列中。由于等待事件原因不同,阻塞隊列也按事件分成幾個隊列。27系統(tǒng)中各進程狀態(tài)的分布和管理處于執(zhí)行態(tài)
16、進程:如系統(tǒng)有一個處理例例:一個只有一個處理機的系統(tǒng)中,OS的進程有執(zhí)行、就緒、阻塞三個基本狀態(tài)。假如某時刻該系統(tǒng)中有10個進程并發(fā)執(zhí)行,在略去調(diào)度程序所占用時間情況下試問:這時刻系統(tǒng)中處于執(zhí)行態(tài)的進程數(shù)最多有幾個?最少有幾個?這時刻系統(tǒng)中處于就緒態(tài)的進程數(shù)最多有幾個?最少有幾個?這時刻系統(tǒng)中處于阻塞態(tài)的進程數(shù)最多有幾個?最少有幾個?28例例:一個只有一個處理機的系統(tǒng)中,OS的進程有執(zhí)行、就緒、阻解解:因為系統(tǒng)中只有一個處理機,所以某時刻處于執(zhí)行態(tài)的進程數(shù)最多只有一個。而最少可能為0,此時其它10個進程一定全部排在各阻塞隊列中,在就緒隊列中沒有進程。而某時刻處于就緒態(tài)的進程數(shù)最多只有9個,不可
17、能出現(xiàn)10個情況,因為一旦CPU有空,調(diào)度程序馬上調(diào)度,當然這是在略去調(diào)度程序調(diào)度時間時考慮。處于阻塞態(tài)的進程數(shù)最少是0個。29解解:因為系統(tǒng)中只有一個處理機,所以某時刻處于執(zhí)行態(tài)的進程數(shù)4。系統(tǒng)中各進程狀態(tài)轉(zhuǎn)換影響執(zhí)行 阻塞就緒執(zhí)行 阻塞就緒 A進程 B進程 C進程 D進程執(zhí)行 執(zhí)行 阻塞就緒阻塞就緒進程狀態(tài)及其轉(zhuǎn)換304。系統(tǒng)中各進程狀態(tài)轉(zhuǎn)換影響執(zhí)行 阻塞就緒執(zhí)行 阻塞就緒進程狀態(tài)及其轉(zhuǎn)換 在一個多道程序設(shè)計的系統(tǒng)中,各進程狀態(tài)轉(zhuǎn)換會互相影響。例如系統(tǒng)中一個執(zhí)行態(tài)的進程A發(fā)生I/O請求后要等待I/O完成,它的狀態(tài)也由執(zhí)行態(tài)轉(zhuǎn)換為阻塞態(tài),此時進程調(diào)度程序就會按照一定的算法,在就緒隊列中選一個
18、進程B,將處理機分給它,該B進程的狀態(tài)也由就緒態(tài)轉(zhuǎn)換為執(zhí)行態(tài)。如一個進程C等待的事件完成,則它的狀態(tài)由阻塞態(tài)轉(zhuǎn)換為就緒態(tài),它也從阻塞隊列中抽出插入就緒隊列中。如進程 C從阻塞態(tài)轉(zhuǎn)換為就緒態(tài)時,有一個進程D在CPU上執(zhí)行。而系統(tǒng)采用搶占式調(diào)度算法,進程C的優(yōu)先級又高于正在CPU上執(zhí)行的進程D的優(yōu)先級,則要發(fā)行搶占調(diào)度。即接下去的操作時由進程調(diào)度程序?qū)⒄趫?zhí)行的進程D由執(zhí)行態(tài)轉(zhuǎn)換為就緒態(tài),插入就緒隊列。31進程狀態(tài)及其轉(zhuǎn)換 在一個多道程序設(shè)計的系統(tǒng)中,各進程狀 除此之外,在實際的系統(tǒng)中,將進程的狀態(tài)進一步細分為五個狀態(tài),除了上述三個狀態(tài)之外,增加了創(chuàng)建和退出兩個狀態(tài)。新建狀態(tài)(New):進程還在創(chuàng)
19、建過程中,還不能運行。這時,操作系統(tǒng)要建立PCB、建立資源表、分配資源、建立地址空間表。終止狀態(tài)(Exit):進程運行結(jié)束,系統(tǒng)回收所占用資源。2、五態(tài)模型32 除此之外,在實際的系統(tǒng)中,將進程的狀態(tài)進一步細分為五五態(tài)模型創(chuàng)建新建提交就緒調(diào)度執(zhí)行釋放終止等待事件阻塞事件出現(xiàn)落選33五態(tài)模型創(chuàng)建新建提交就緒調(diào)度執(zhí)行釋放終止等待事件阻塞事件出現(xiàn)問題:多個進程競爭系統(tǒng)資源內(nèi)存資源緊張無就緒進程,處理機空閑:I/O的速度比處理機的速度慢的多,可能出現(xiàn)所有進程阻塞等待I/O34問題:多個進程競爭系統(tǒng)資源內(nèi)存資源緊張36解決辦法 把某些進程掛起(suspend),對換到磁盤鏡像區(qū)中,暫時不參與進程調(diào)度,起
20、到平滑系統(tǒng)操作負荷的目的。35解決辦法 把某些進程掛起(suspend),對換到磁盤鏡像3、七態(tài)模型進程增加了兩個新狀態(tài):掛起就緒態(tài)(ready suspend)表明進程具備運行條件但目前在二級存儲器中,當它被對換到主存才能被調(diào)度執(zhí)行。掛起等待態(tài)(blocked suspend) 表明進程正在等待某一個事件且在二級存儲器中。363、七態(tài)模型進程增加了兩個新狀態(tài):38掛起原因引入原因終端用戶請求父進程請求(考察、修改、協(xié)調(diào))負荷調(diào)節(jié)需要操作系統(tǒng)需要(監(jiān)察資源使用情況或記賬)37掛起原因引入原因39掛起等待事件結(jié)束出現(xiàn)等待事件解除掛起掛起落選選中運行態(tài)就緒態(tài)等待事件結(jié)束終止態(tài)新建態(tài)掛起就緒態(tài)解除掛
21、起掛起掛起等待態(tài)等待態(tài)提交提交七狀態(tài)進程狀態(tài)及其轉(zhuǎn)換如果當前不存在就緒進程,那么至少有一個等待態(tài)進程將被對換出去成為掛起等待態(tài);操作系統(tǒng)根據(jù)當前資源狀況和性能要求,可以決定把等待態(tài)進程對換出去成為掛起等待態(tài) 引起進程等待的事件發(fā)生之后,相應(yīng)的掛起等待態(tài)進程將轉(zhuǎn)換為掛起就緒態(tài) 當內(nèi)存中沒有就緒態(tài)進程,或者掛起就緒態(tài)進程具有比就緒態(tài)進程更高的優(yōu)先級,系統(tǒng)將把掛起就緒態(tài)進程轉(zhuǎn)換成就緒態(tài)。 操作系統(tǒng)根據(jù)當前資源狀況和性能要求,也可以決定把就緒態(tài)進程對換出去成為掛起就緒態(tài) 當一個進程等待一個事件時,原則上不需要把它調(diào)入內(nèi)存。但是在下面一種情況下,這一狀態(tài)變化是可能的。當一個進程退出后,主存已經(jīng)有了一大塊
22、自由空間,而某個掛起等待態(tài)進程具有較高的優(yōu)先級并且操作系統(tǒng)已經(jīng)得知導致它阻塞的事件即將結(jié)束,此時便發(fā)生了這一狀態(tài)變化 掛起當一個具有較高優(yōu)先級的掛起等待態(tài)進程的等待事件結(jié)束后,它需要搶占CPU,而此時主存空間不夠,從而可能導致正在運行的進程轉(zhuǎn)化為掛起就緒態(tài)。另外處于運行態(tài)的進程也可以自己掛起自己 提交考慮到系統(tǒng)當前資源狀況和性能要求,可以決定新建的進程將被對換出去成為掛起就緒態(tài) 38掛起等待事件結(jié)束出現(xiàn)等待事件解除掛起掛起落選選中運行態(tài)就緒態(tài)七狀態(tài)進程狀態(tài)及其轉(zhuǎn)換活動就緒 靜止就緒活動阻塞 靜止阻塞靜止就緒 活動就緒靜止阻塞 活動阻塞39七狀態(tài)進程狀態(tài)及其轉(zhuǎn)換活動就緒 靜止就緒41(5)進程控
23、制模塊PCB 1進程控制塊的作用進程存在的唯一實體 由于進程控制塊中記錄進程存在和特性信息;PCB與進程同生死,創(chuàng)建一個進程就是為其建立一個PCB,當進程被撤消時,系統(tǒng)就回收它的PCB;OS對進程的控制要是根據(jù)PCB來進行,對進程管理也通過對PCB管理來實現(xiàn),所以進程控制塊是進程存在的唯一實體。 PCB常駐內(nèi)存,系統(tǒng)將所有的PCB組織成若干個鏈表(或隊列),存放在操作系統(tǒng)中專門開辟的PCB區(qū)內(nèi)。40(5)進程控制模塊PCB 1進程控制塊的作用進程存在的唯進程控制塊包含四類信息標識信息現(xiàn)場信息調(diào)度信息控制信息41進程控制塊包含四類信息標識信息43標識信息 用于唯一地標識一個進程,分由用戶使用的外
24、部標識符和被系統(tǒng)使用的內(nèi)部標識號。 常用的標識信息有數(shù)字標識符、進程標識符、父進程的標識符、用戶進程名、用戶組名等。 “我是誰”進程控制模塊(PCB)42標識信息 用于唯一地標識一個進程,分由用戶使用的外部標現(xiàn)場信息(處理機狀態(tài)) 保留進程運行時存放在處理器現(xiàn)場中的各種信息,進程讓出處理器時必須把處理器現(xiàn)場信息保存到PCB中,當該進程重新恢復(fù)運行時也應(yīng)恢復(fù)處理器現(xiàn)場。 現(xiàn)場信息包括通用寄存器內(nèi)容、控制寄存器內(nèi)容、指令計數(shù)器、程序狀態(tài)字、用戶堆棧指針、系統(tǒng)堆棧指針等。 “我周圍是什么,我在干什么”進程控制模塊(PCB)43現(xiàn)場信息(處理機狀態(tài)) 保留進程運行時存放在處理器現(xiàn)場中進程調(diào)度信息 包括
25、進程狀態(tài)(running、ready、blacked)、隊列指針(就緒、阻塞隊列),調(diào)度參數(shù):進程優(yōu)先級、進程已執(zhí)行時間和已等待時間、等待事件和等待原因等。進程控制模塊(PCB)44進程調(diào)度信息進程控制模塊(PCB)46進程控制模塊(PCB)進程控制信息 它包括程序和數(shù)據(jù)的地址、保證進程正常執(zhí)行的同步和通信機制,如消息隊列指針、信號量等互斥和同步機制等、 IO資源清單、鏈接指針(本進程pcb所在對列的下一個進程的pcb的首地址)。45進程控制模塊(PCB)進程控制信息47 UNIX的PCB由Proc和user兩個結(jié)構(gòu)組成,proc常駐主存的系統(tǒng)區(qū),是PCB中最基本和常用信息,而user可根據(jù)需
26、要換進換出。進程控制模塊(PCB)46 UNIX的PCB由Proc和user兩個結(jié)構(gòu)組成進程控制模塊(PCB)3、進程控制塊的組織方式 在一個系統(tǒng)中,通??蓳碛袛?shù)十個、數(shù)百個乃至數(shù)千個PCB。為了能對它們加以有效的管理,應(yīng)該用適當?shù)姆绞綄⑦@些PCB組織起來。目前常用的組織方式有以下兩種:鏈接方式索引方式47進程控制模塊(PCB)3、進程控制塊的組織方式49進程控制模塊(PCB)48進程控制模塊(PCB)50進程控制模塊(PCB)49進程控制模塊(PCB)51進程控制模塊(PCB)PCB1PCB2PCB3PCB4PCB5PCB6PCB7執(zhí)行指針就緒表指針阻塞表指針就緒索引表阻塞索引表50進程控制
27、模塊(PCB)PCB1PCB2PCB3PCB4PCB5153(6) 進程上下文 進程是由程序、數(shù)據(jù)和進程控制塊組成。進程上下文實際上是執(zhí)行活動全過程的靜態(tài)描述。具體說,進程上下文包括系統(tǒng)中與執(zhí)行該進程有關(guān)的各種寄存器(例如:通用寄存器、程序計數(shù)器PC、程序狀態(tài)寄存器PS等)的值,程序段在經(jīng)編譯之后形成的機器指令代碼集(或稱正文段)、數(shù)據(jù)集及各種堆棧值和PCB結(jié)構(gòu),如下圖所示。 P C B 各種控制表指針 各種寄存器正文集數(shù)據(jù)集棧區(qū)52(6) 進程上下文 進程是由程序、數(shù)據(jù)和進程控制塊組成。進所謂原語,是由若干條指令所組成的個指令序列用來實現(xiàn)某個特定的操作功能。這個指令序列的執(zhí)行是連續(xù)的,具有不
28、可分割性在執(zhí)行時也不可間斷,直至該指令序列執(zhí)行結(jié)束。 原語是操作系統(tǒng)核心(由一組程序模塊所組成的、完成操作系統(tǒng)中基本功能)的一個組成部分。原語必須在管態(tài)下執(zhí)行,并且常駐內(nèi)存。 (二)進程控制(Process Control )原語53所謂原語,是由若干條指令所組成的個指令序列用來實現(xiàn)某個原語 原語是一種特殊的廣義指令,它的功能是由系統(tǒng)通過一段不可分割的指令操作來完成,它又稱原子操作,原語在核心態(tài)下完成。進程控制操作(創(chuàng)建、撤消、阻塞)大都為原語操作。54原語 原語是一種特殊的廣義指令,它的功能是由系統(tǒng)通procedure block begin i:=EP; stop (i); i.statu
29、s:=“blockeda”; i.sdata:=WQ (r); insert (WQ (r), i); scheduler end 55procedure block57核心態(tài)和用戶態(tài) Intel公司的80386及更高級的CPU可以提供程序代碼4層不同等級的權(quán)力,包括有Ring0-3。Ring0擁有最高的運行優(yōu)先權(quán),它訪問所有系統(tǒng)內(nèi)存和所有的CPU指令,而Ring1-3訪問權(quán)限受到不同限制。Windows 98/NT為了與基于RISC的結(jié)構(gòu)上兼容只使用兩個特權(quán)級別:Ring0和Ring3 為了防止用戶應(yīng)用程序訪問或更改重要的操作系統(tǒng)數(shù)據(jù),Windows98/NT、UNIX使用兩種處理器訪問模式
30、:核心態(tài)和用戶態(tài)。操作系統(tǒng)代碼在核心態(tài)下執(zhí)行,即在X86處理器Ring0執(zhí)行,它有著最高的特權(quán)。而用戶應(yīng)用程序代碼在用戶態(tài)下執(zhí)行,即在X86處理器Ring3中執(zhí)行。56核心態(tài)和用戶態(tài) Intel公司的803用戶應(yīng)用程序(在Windows98/NT中以用戶線程方式出現(xiàn))運行用戶程序一般代碼時,它是在用戶態(tài)下執(zhí)行。但當程序要調(diào)用系統(tǒng)服務(wù),例如要調(diào)用OS中負責從磁盤文件中讀取數(shù)據(jù)的NT執(zhí)行體例程時,它就要通過一條專門的指令(系統(tǒng)調(diào)用)來完成從用戶態(tài)切換到核心態(tài),OS根據(jù)該指令及有關(guān)參數(shù),執(zhí)行用戶的請求服務(wù)。在服務(wù)完成后將處理器模式切換回用戶態(tài),并將控制返回用戶線程。因此用戶線程有時在核心態(tài)下執(zhí)行,在
31、核心態(tài)下執(zhí)行的是調(diào)用操作系統(tǒng)有關(guān)功能模塊的代碼。 57用戶應(yīng)用程序(在Windows98/NT中以用戶線程方式出現(xiàn)進程切換與模式切換 模式切換不同于進程切換,它并不引起進程狀態(tài)的變化,在大多數(shù)操作系統(tǒng)中,它也不一定引起進程的切換,在完成了中斷調(diào)用之后,完全可以再通過一次逆向的模式切換來繼續(xù)執(zhí)行用戶進程。 58進程切換與模式切換 模式切換不同于進程切換,它5961進程切換的步驟如下: 保存被中斷進程的處理器現(xiàn)場信息。 修改被中斷進程的進程控制塊的有關(guān)信息,如進程狀態(tài)等。 把被中斷進程的進程控制塊加入有關(guān)隊列。 選擇下一個占有處理器運行的進程。 修改被選中進程的進程控制塊的有關(guān)信息。 根據(jù)被選中進
32、程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲保護信息。 根據(jù)被選中進程恢復(fù)處理器現(xiàn)場。60進程切換的步驟如下:62模式切換的步驟如下: 保存被中斷進程的處理器現(xiàn)場信息。 根據(jù)中斷號置程序計數(shù)器。 把用戶狀態(tài)切換到內(nèi)核狀態(tài),以便執(zhí)行中斷處理程序。61模式切換的步驟如下:63有效合理地使用模式切換和進程切換有利于操作系統(tǒng)效率的提高。為此,大多數(shù)現(xiàn)代操作系統(tǒng)存在兩個名詞:系統(tǒng)進程(線程)和用戶進程(線程)。它們并不是指兩個具體的進程實體,而是指一個進程的兩個側(cè)面,系統(tǒng)進程是在核心態(tài)下執(zhí)行操作系統(tǒng)代碼的進程,用戶進程在用戶態(tài)下執(zhí)行用戶程序的進程。用戶進程因中斷和系統(tǒng)調(diào)用進入內(nèi)核態(tài),系統(tǒng)進程就開始執(zhí)行,這兩個進程
33、(用戶進程和系統(tǒng)進程)使用同一個PCB,所以實質(zhì)上是一個進程實體。但是這兩個進程所執(zhí)行的程序不同,映射到不同物理地址空間、使用不同堆棧。一個系統(tǒng)進程的地址空間中包含所有的系統(tǒng)核心程序和各進程的進程數(shù)據(jù)區(qū),所以,各進程的系統(tǒng)進程除數(shù)據(jù)區(qū)不同外,其余部分全相同,但各進程的用戶進程部分則各不相同。 62有效合理地使用模式切換和進程切換有利于操作系統(tǒng)效率的提高。為 63 65思考PCB和進程的代碼數(shù)據(jù)放在一起嗎?系統(tǒng)態(tài)和用戶態(tài)系統(tǒng)空間和用戶空間系統(tǒng)調(diào)用和普通調(diào)用的區(qū)別?系統(tǒng)調(diào)用會引起從用戶態(tài)進入核心態(tài)64思考PCB和進程的代碼數(shù)據(jù)放在一起嗎?661、進程的創(chuàng)建 引起進程創(chuàng)建的事件在終端上交互式的登錄(
34、合法則建立)為終端用戶建立一進程作業(yè)調(diào)度。為被調(diào)度的作業(yè)建立進程操作系統(tǒng)創(chuàng)建一個服務(wù)進程。如要打印時建立打印進程應(yīng)用請求由應(yīng)用程序建立多個進程(二)進程控制(Process Control )651、進程的創(chuàng)建 引起進程創(chuàng)建的事件(二)進程控制(Proce進程創(chuàng)建的過程 在主進程表中增加一項,并從PCB池中取一個空白PCB。為新進程所有成分分配地址空間。為新進程分配資源,內(nèi)存空間及其它各種資源。查找輔助存儲器,找到進程正文段并裝到正文區(qū)。初始化進程控制塊,為新進程分配唯一進程標識符,初始化PSW。把進程加入某一就緒進程隊列。通知操作系統(tǒng)的某些模塊,如記賬程序、性能監(jiān)控程序。進程的創(chuàng)建 66進程
35、創(chuàng)建的過程進程的創(chuàng)建 682、進程的終止引起進程終止的事件正常結(jié)束 如Holt、logoff異常結(jié)束 如Protect error、overtime外界干預(yù)a.系統(tǒng)員kill進程;b.父進程終止;c.父進程請求。672、進程的終止引起進程終止的事件69進程終止的過程(1)檢查進程狀態(tài);(2)若為執(zhí)行態(tài)中止,且置調(diào)度標志為真。(3)有無子孫需終止。(4)歸還資源給其父進程或系統(tǒng)。(5)從PCB隊列中移出PCB,等待其他程序來搜集信息.68進程終止的過程703、進程的阻塞與喚醒引起進程阻塞和喚醒的事件1.請求系統(tǒng)服務(wù)而得不到滿足時,如問系統(tǒng)請求打印。2.啟動某種操作而需同步時:如該操作和請求該操作
36、的進程需同步運行(即非異步操作)。3.新數(shù)據(jù)尚未到達:如進程A寫,進程B讀,則A未寫,完B不能讀。4.無新工作可做。693、進程的阻塞與喚醒引起進程阻塞和喚醒的事件71進程阻塞過程:是進程自身的一種主動行為a.調(diào)block原語b.停止執(zhí)行,修改PCB入阻塞隊列(一個或多個),并轉(zhuǎn)調(diào)度。喚醒過程其它相關(guān)進程完成。a.wakeup原語b.修改PCB,入就緒隊列可見,有block原語,在其它進程中就應(yīng)有wakeup原語。70進程阻塞過程:是進程自身的一種主動行為724、進程的掛起與激活一、進程的掛起過程由進程自己或其父進程調(diào)suspend原語完成,將該進程PCB移到指定區(qū)域,注意狀態(tài)的改變,有可能要
37、重新調(diào)度。二、進程的激活過程。active原語(如在外存,調(diào)入內(nèi)存,改變狀態(tài),根據(jù)情況看是否調(diào)度,如搶先或非搶先)。阻塞、喚醒一般由OS實現(xiàn),而掛起與激活可由用戶干預(yù)。714、進程的掛起與激活一、進程的掛起過程73討論 搶占式調(diào)度 假如采用搶占式調(diào)度策略,則每當有新進程進入就緒隊列時,例如執(zhí)行喚醒原語,被喚醒進程從活動阻塞態(tài)轉(zhuǎn)為活動就緒態(tài)時,或者執(zhí)行激活原語,被激活進程從靜止就緒態(tài)轉(zhuǎn)為活動就緒態(tài)時,應(yīng)檢查是否要進行重新調(diào)度。即由調(diào)度程序?qū)⒓せ畹倪M程(或喚醒的進程)與當前執(zhí)行進程進行優(yōu)先級比較,如果被激活的進程的優(yōu)先級更高,則剝奪當前進程的執(zhí)行,把處理機分配給剛激活的進程,否則就不必重新調(diào)度。
38、72討論 搶占式調(diào)度74(三)進程同步(Synchronization of multiple processes)(1)進程同步的基本概念1。進程間制約關(guān)系 在多道程序環(huán)境下,系統(tǒng)中各進程以不可預(yù)測的速度向前推進,進程的異步性會造成了結(jié)果的不可再現(xiàn)性。為防止這種現(xiàn)象,異步的進程間推進受到二種限制:73(三)進程同步(Synchronization of mul資源共享關(guān)系(Cooperation Among Processes by Sharing)(間接相互制約) 多進程共享資源相互合作關(guān)系 (Cooperation Among Processes by Communication)(直接
39、相互制約) 在某些進程之間還存在合作關(guān)系,例如一個程序的輸入、計算、打印三個程序段作為三個進程并發(fā)執(zhí)行,由于這三個進程間存在著相互合作的關(guān)系,即先輸入再計算、最后再打印的關(guān)系,所以這三個進程在并發(fā)執(zhí)行時推進序列受到限制,要保證其合作關(guān)系正確,進程間這種關(guān)系稱為同步關(guān)系。 74資源共享關(guān)系(Cooperation Among Proce 并發(fā)進程之間的競爭關(guān)系 進程的互斥 并發(fā)進程之間的協(xié)作關(guān)系 進程的同步進程的交往:競爭與協(xié)作75 并發(fā)進程之間的競爭關(guān)系進程的交往:競爭與協(xié)作77第一種是競爭關(guān)系 系統(tǒng)中的多個進程之間彼此無關(guān),它們并不知道其它進程的存在,并且也不受其它進程的影響。但是,由于這些
40、進程共用了一套計算機系統(tǒng)資源,因而,必然要出現(xiàn)多個進程競爭資源的問題。進程資源進程競爭關(guān)系(間接制約關(guān)系)76第一種是競爭關(guān)系 系統(tǒng)中的多個進程之間彼此無關(guān),它們并不2、進程之間競爭資源面臨三個控制問題: 互斥( mutual exclusion ) 死鎖( deadlock ) 饑餓( starvation ) 多進程共享資源,例如各進程爭用一臺打印機,這時各進程使用這臺打印機時有一定的限制。每次只允許一個進程使用一段時間打印機,等該進程使用完畢后再將打印機分配給其它進程。這種使用原則稱為互斥使用。772、進程之間競爭資源面臨三個控制問題:79競爭資源饑餓假設(shè)有3個進程P1,P2 ,P3,每
41、個進程都需要周期性的使用資源R如果當前P1正在使用臨界資源R,P2和P3因為等待R而阻塞。當P1退出臨界區(qū)時,P2立即進入臨界區(qū)執(zhí)行,若P2還未退出臨界區(qū)時,P1又申請使用臨界資源R.假設(shè)P2退出臨界區(qū)后,系統(tǒng)將R分給了P1,然后,當R空閑時,又將其分給P2,如此反復(fù)。 78競爭資源饑餓80競爭資源死鎖當并發(fā)進程競爭使用同一資源時,它們之間就會發(fā)生沖突。如果操作系統(tǒng)將資源分配給其中的某一個進程使用,另一個進程就必須等待,直到申請的資源可用時,由操作系統(tǒng)分配給它。如果競爭某資源的進程太多,這些進程還必須等待在一個隊列中,如就緒隊列,阻塞隊列等。一種極端的情況是,被阻塞進程永久得不到申請的資源,而
42、死鎖。79競爭資源死鎖當并發(fā)進程競爭使用同一資源時,它們之間就會發(fā)生P1P2R1R280P1P2R1R282第二種是協(xié)作關(guān)系某些進程為完成同一任務(wù)需要分工協(xié)作。比如:輸入進程、加工處理、輸出進程進程進程進程的同步是解決進程間協(xié)作關(guān)系(直接制約關(guān)系)的手段。81第二種是協(xié)作關(guān)系某些進程為完成同一任務(wù)需要分工協(xié)作。83進程同步指兩個以上進程基于某個條件來協(xié)調(diào)它們的活動。一個進程的執(zhí)行依賴于協(xié)作進程的消息或信號,當一個進程沒有得到來自于協(xié)作進程的消息或信號時需等待,直到消息或信號到達才被喚醒。 82進程同步指兩個以上進程基于某個條件來協(xié)調(diào)它們的活動。一個進程進程互斥關(guān)系是一種特殊的進程同步關(guān)系,即逐
43、次使用互斥共享資源,是對進程使用資源次序上的一種協(xié)調(diào)。83進程互斥關(guān)系是一種特殊的進程同步關(guān)系,即逐次使用互斥共享資源進程競爭資源首先必須解決“互斥”問題。某些資源必須互斥使用。如打印機,共享變量等。這類資源又稱為臨界資源,訪臨界資源的那段代碼稱為臨界區(qū)。任何時刻,只允許一個進程進入臨界區(qū),以此實現(xiàn)進程對臨界資源的互斥訪問。3、臨界資源和臨界區(qū)84進程競爭資源首先必須解決“互斥”問題。某些資源必須互斥使用。臨界資源 象打印機這類資源一次只允許一個進程使用的資源稱為臨界資源。屬于臨界資源有硬件打印機、磁帶機等,軟件有消息緩沖隊列、變量、數(shù)組、緩沖區(qū)等。當然還有一類象磁盤等資源,它允許進程間共享,
44、即可交替使用,所以它稱為共享資源,而臨界資源又稱獨享資源。引起不可再現(xiàn)性是因為臨界資源沒有互斥訪問。85臨界資源87進程同步的概念臨界區(qū)(critical sections) 多個進程共享臨界資源時必須互斥使用,例如A和B兩個進程都需要使用打印機,它們必須互斥使用。如果為了保證結(jié)果的正確性限制A、B二進程推進序列,規(guī)定進程A執(zhí)行好再執(zhí)行進程B,這樣的限制就顯得過死,因為它已不能保證進程A、B能并發(fā)執(zhí)行,所以必須把限制減少到最少,以盡可能支持并發(fā)執(zhí)行。為此把各進程分解,把訪問臨界資源的那段代碼(稱為臨界區(qū))與其它段代碼分割開來,只對各種進程進入自己的臨界區(qū)加以限制,即各進程互斥地進入自己的臨界區(qū)
45、。 86進程同步的概念臨界區(qū)(critical sections)8臨界區(qū)定義:進程訪問臨界資源的那段代碼。訪問臨界資源的描述:進入?yún)^(qū):檢查有無進程進入臨界區(qū):退出區(qū):將訪問標志復(fù)位RepeatEntry sectionCritical sectionExit sectionUntil false87臨界區(qū)定義:進程訪問臨界資源的那段代碼。89進程進入?yún)^(qū)臨界區(qū)退出區(qū)阻塞隊列喚醒88進程進入?yún)^(qū)臨界區(qū)退出區(qū)阻塞隊列喚醒90互斥使用臨界資源當進程需要使用臨界資源時,通過獲得臨界區(qū)的使用權(quán)實現(xiàn)的。首先,在“進入?yún)^(qū)”判斷是否可以進入臨界區(qū),如果可以進入,則必須設(shè)置臨界區(qū)使用標志,阻止其它后來的進程進入臨
46、界區(qū)。后來的進程同過查看臨界區(qū)使用標志,知道自己不能進入臨界區(qū),就進入阻塞隊列,將自己阻塞。89互斥使用臨界資源當進程需要使用臨界資源時,通過獲得臨界區(qū)的使當臨界區(qū)內(nèi)的進程使用完畢,退出臨界區(qū)時,即在“退出區(qū)”修改臨界區(qū)使用標志,并負責喚醒阻塞隊列中的一個進程,讓其進入臨界區(qū)。由于同一個臨界資源在多個共享它的進程中將對應(yīng)多個臨界區(qū),那么怎樣才能保證諸進程間互斥地執(zhí)行臨界區(qū)呢?這就必須保證“臨界區(qū)使用標志”是可被系統(tǒng)中所有進程共享的全局變量,而且諸進程對該標志的修改操作必須互斥進行。90當臨界區(qū)內(nèi)的進程使用完畢,退出臨界區(qū)時,即在“退出區(qū)”修改臨空閑讓進。 當無進程進入臨界區(qū)時,相應(yīng)的臨界資源處
47、于空閑狀態(tài),因而允許一個請 求進入臨界區(qū)的進程立即進入自己的臨界區(qū)。忙則等待。 當已有進程進入自己的臨界區(qū)時,即相應(yīng)的臨界資源正被訪問,因而其它試圖進入臨界區(qū)的進程必須等待,以保證進程互斥地訪問臨界資源。 臨界區(qū)使用原則也稱為互斥條件91空閑讓進。臨界區(qū)使用原則也稱為互斥條件93有限等待。 對要求訪問臨界資源的進程,應(yīng)保證進程能在有限時間進入臨界區(qū),以免陷入“饑餓”狀態(tài)。讓權(quán)等待。 當進程不能進入自己的臨界區(qū)時,應(yīng)立即釋放處理機,以免進程陷入忙等。臨界區(qū)使用原則也稱互斥條件92有限等待。臨界區(qū)使用原則也稱互斥條件94(四)進程互斥和同步方法軟件方法硬件指令方法信號量機制管程等消息傳遞方法93(
48、四)進程互斥和同步方法軟件方法95軟件方法是指由進程自己,通過執(zhí)行相應(yīng)的程序指令,實現(xiàn)與別的進程的同步與互斥,無須專門的程序設(shè)計語言或操作系統(tǒng)的支持。實踐證明,該方法很難正確控制進程間的同步與互斥,而且可能會大大地增加系統(tǒng)的額外開銷,94軟件方法是指由進程自己,通過執(zhí)行相應(yīng)的程序指令,實現(xiàn)與別的進硬件方法為了解決軟件方法存在的不足,有人提出了硬件解決方法,通過屏蔽中斷或采用專門的機器指令控制同步與互斥。與軟件解決方法比較,這種方法減少了系統(tǒng)額外開銷,但由于需要太強的硬件約束條件,以及可能導致進程饑餓與死鎖現(xiàn)象,一直沒有成為通用的解決方法。95硬件方法為了解決軟件方法存在的不足,有人提出了硬件解
49、決方法,軟件解決方法有很多種,為了說明設(shè)計并發(fā)程序時可能出現(xiàn)的典型錯誤,下面以Dekker算法為例,分析如何設(shè)計并改進一個互斥算法的過程96軟件解決方法有很多種,為了說明設(shè)計并發(fā)程序時可能出現(xiàn)的典型錯互斥與同步解決方法之一軟件方法初步設(shè)想為了控制兩個進程互斥進入臨界區(qū),可以讓兩個進程輪流進入臨界區(qū)。當一個進程正在臨界區(qū)執(zhí)行時,另一個進程就不能進入臨界區(qū),而在臨界區(qū)外等待。程序?qū)崿F(xiàn)偽代碼如下:97互斥與同步解決方法之一軟件方法初步設(shè)想為了控制兩個進程該算法設(shè)置一個公用整型變量turn,用于指示被允許進入臨界區(qū)的進程編號,即若turn=0,表示允許P0進程進入臨界區(qū),若turn=1,表示允許P1進
50、程進入臨界區(qū)Var turn:0.1;/*共享的全局變量*/ P0While turn0 do nothing;Turn:=1;P1While turn1 do nothing;Turn:=0;98該算法設(shè)置一個公用整型變量turn,用于指示被允許進入臨界區(qū)保證了互斥問題1:“忙等”現(xiàn)象問題2:進程嚴格交替進入臨界區(qū),如果進程需要多次使用臨界區(qū),那么,使用臨界區(qū)頻率低的進程嚴重制約著使用臨界區(qū)頻率高的進程的執(zhí)行速度。違背了”空閑讓進 ”99保證了互斥101例如P0需要每10分鐘使用一次臨界區(qū),P1需要每一分鐘使用一次臨界區(qū)假設(shè)trun 的初值為0,進程p0正好先請求進入臨界區(qū),并成功進入臨界區(qū)
51、執(zhí)行,這時,如果P1申請進入臨界區(qū),循環(huán)檢測turn=0,不可以進入,只能“空”循環(huán),等待。當P0退出臨界區(qū)時,修改turn的值為1,P1循環(huán)檢測到turn=1時,就可以進入臨界區(qū)執(zhí)行,退出臨界區(qū)時,修改 turn=0100例如P0需要每10分鐘使用一次臨界區(qū),P1需要每一分鐘使用一例(續(xù))根據(jù)假設(shè),P1很快又需要進入臨界區(qū),但是P0卻只能在分鐘之后,按照turn 規(guī)定的順序,進入臨界區(qū)執(zhí)行,退出時修改turn即,P1必須在臨界區(qū)空閑情況下,等待分鐘,才能使用臨界區(qū),這不符合互斥原則,降低了系統(tǒng)性能。101例(續(xù))根據(jù)假設(shè),P1很快又需要進入臨界區(qū),但是P0卻只能在互斥與同步解決方法之一軟件方
52、法第一次改進可以為臨界區(qū)設(shè)置一個狀態(tài)標志,標明臨界區(qū)是否可用,當臨界區(qū)空閑時,任何一個進程都能進入,但此時必須修改臨界區(qū)標志為“被占用”,別的進程就不能進入臨界區(qū),當臨界區(qū)使用完畢,必須修改該標志為“空閑”這樣就不再使諸進程嚴格交替使用臨界區(qū),算法如下:102互斥與同步解決方法之一軟件方法第一次改進可以為臨界區(qū)設(shè)103105分析:第一次改進問題“忙等”問題2不能保證進程互斥進入臨界區(qū)。問題出在檢查、修改有間隔,不能連續(xù)操作。104分析:第一次改進問題出在檢查、修改有間隔,不能連續(xù)操作。10互斥與同步解決方法之一軟件方法第二次改進互斥算法的第一次改進不能實現(xiàn)“互斥”因為,進程首先檢測臨界區(qū)狀態(tài),
53、若“被占用”,則“忙等”,否則就直接進入臨界區(qū),從而,可能出現(xiàn)同時進入臨界區(qū)的現(xiàn)象。能否讓進程預(yù)先表明“希望進入臨界區(qū)的態(tài)度”,然后,再檢測臨界區(qū)狀態(tài),算法如下:105互斥與同步解決方法之一軟件方法第二次改進互斥算法的第一106108分析:第二次改進假設(shè)P0需要進入臨界區(qū),首先執(zhí)行flag0:=true,再執(zhí)行while flag1,若P1正在占用臨界區(qū),則P0忙等;否則,P0進入臨界區(qū)。但是,如果此時P1未占用臨界區(qū),而與P0幾乎同時需要使用臨界區(qū),則死鎖107分析:第二次改進假設(shè)P0需要進入臨界區(qū),首先執(zhí)行flag0互斥算法的第二次改進可能導致死鎖,因為P0,P1”堅持自己的權(quán)利,執(zhí)意進入
54、臨界區(qū),且互不謙讓”.可以考慮,允許進程即表明需要進入臨界區(qū)的”態(tài)度”,又能互相”謙讓”.即首先表示自己需要使用臨界區(qū),再檢測臨界區(qū)的狀態(tài),若臨界區(qū)被占用,可以等一小段時間再申請互斥與同步解決方法之一軟件方法第三次改進108互斥算法的第二次改進可能導致死鎖,因為P0,P1”堅持自己的flag1,flag2:boolean;flag1 := false; /* P1不在其臨界區(qū)內(nèi) */flag2 := false; /* P2不在其臨界區(qū)內(nèi) */process P1 beginflag1 := true;while flag2 do begin flag1:=false; isside1:=tr
55、ue; end;臨界區(qū);flag1 := false; end;process P2 beginflag2 := true;while flag1 do begin flag2:=false; isside2:=true; end;臨界區(qū);flag2 := false; end;算法3和算法2類似,它們的區(qū)別在于進入?yún)^(qū)操作是先修改后檢查。這時標志flagI表示進程Pi想進入臨界區(qū),而不再表示進程Pi在臨界區(qū)。109flag1,flag2:boolean;process P2flag1,flag2:boolean;flag1 := false; /* P1不在其臨界區(qū)內(nèi) */flag2 := f
56、alse; /* P2不在其臨界區(qū)內(nèi) */process P1 begin(1)flag1 := true;(3)while flag2 do begin (5) flag1:=false; (7) isside1:=true; end;臨界區(qū);flag1 := false; end;算法3和算法2類似,它們的區(qū)別在于進入?yún)^(qū)操作是先修改后檢查。這時標志flagI表示進程Pi想進入臨界區(qū),而不再表示進程Pi在臨界區(qū)。process P2 begin(2)flag2 := true;(4)while flag1 do begin (6)flag2:=false; (8)isside2:=true; end;臨界區(qū);flag2 := false; end;110flag1,flag2:boolean;算法3和算法2類似,分析-第三次改進P0,P1的”謙讓”可能使它們都不能進入臨界區(qū).這種現(xiàn)象不是死鎖,因為這種僵局不會是永久行為,某一時刻可能會自動解除.但是,這種現(xiàn)象也是不希望出現(xiàn)的.111分析-第三次改進P0,P1的”謙讓”可能使它們都不
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金華2024年浙江金華武義縣政務(wù)服務(wù)管理辦公室招聘編外工作人員筆試歷年典型考點(頻考版試卷)附帶答案詳解版
- 園藝生態(tài)旅游開發(fā)-洞察分析
- 橋梁工程的施工方案、方法及其措施
- 物聯(lián)網(wǎng)協(xié)議標準化路徑-洞察分析
- 2024年員工三級安全培訓考試題及答案【必刷】
- 2023年-2024年安全管理人員安全教育培訓試題附答案【完整版】
- 2023-2024年員工三級安全培訓考試題(匯編)
- 施工節(jié)能減排技術(shù)措施
- 行政科崗位職責
- 安全文明施工保證措施計劃
- 產(chǎn)業(yè)園運營合作協(xié)議
- 16J607-建筑節(jié)能門窗
- 理解詞語句子的方法PPT
- 作文開頭與結(jié)尾PPT課件ppt(共42張PPT)
- 重癥醫(yī)學科運用PDCA循環(huán)提高消毒棉簽開啟時間標注的執(zhí)行率品管圈成果匯報
- 云南面向東南亞、南亞區(qū)域物流系統(tǒng)優(yōu)化研究的開題報告
- 高效課堂教學流程和課堂常規(guī)公開課一等獎市賽課獲獎?wù)n件
- 浙江寧波廣播電視集團發(fā)射中心招考聘用筆試參考題庫答案解析
- 2024年航天知識總結(jié)
- 公立醫(yī)院章程范本(中國醫(yī)院協(xié)會2019版)
- 江蘇小高考(物理化學生物)真題及答案
評論
0/150
提交評論