版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第二章
進(jìn)程描述和控制
程序(Program)類似:建好的工廠,未開啟運(yùn)行2啟動(dòng),忙碌起來,才能反映效果。描述這個(gè)忙碌的過程---進(jìn)程(process)3協(xié)同完成一個(gè)任務(wù)進(jìn)程狀態(tài)4不能無休止運(yùn)動(dòng)下去,生命有終結(jié)時(shí)。添加“創(chuàng)建”和“終止”,變成5狀態(tài)的進(jìn)程5線程(threshold)房間里的具體的工作人員,多個(gè)人共享一個(gè)房間(資源)6進(jìn)程可包含多個(gè)線程7進(jìn)程和線程關(guān)系8進(jìn)程:資源擁有者,動(dòng)態(tài)的。(目標(biāo):協(xié)同完成同一個(gè)任務(wù)!)9線程一般不擁有資源,是受派遣者(只負(fù)責(zé):從這條線過的,必須繳費(fèi))10進(jìn)程的基本概念
2.1前趨圖程序執(zhí)行2.2
進(jìn)程的描述程序并發(fā)執(zhí)行時(shí),必會(huì)共享系統(tǒng)資源。進(jìn)程,是描述程序執(zhí)行時(shí)的動(dòng)態(tài)特征P3211
程序的順序執(zhí)行及其特征1.程序的順序執(zhí)行程序的執(zhí)行:順序執(zhí)行和并發(fā)執(zhí)行;一個(gè)應(yīng)用程序分成若干個(gè)程序段,各程序段之間,必須按照某種先后次序順序執(zhí)行。用結(jié)點(diǎn)(Node)代表各程序段的操作(I代表輸入操作,C代表計(jì)算操作,P代表打印操作),用箭頭指示操作的先后次序;一個(gè)程序段中的多條語句也有執(zhí)行順序問題12執(zhí)行順序問題對一個(gè)程序段中的多條語句來說,也有一個(gè)執(zhí)行順序問題,例如對于下述三條語句的程序段:S1:a:=x+y;S2:b:=a-5;S3:c:=b+1;
其中,語句S2必須在語句S1之后(即a被賦值)才能執(zhí)行;同樣,語句S3也只能在b被賦值后才能執(zhí)行。因此,這三條語句應(yīng)按圖所示的順序執(zhí)行。
13圖2程序的順序執(zhí)行
14三個(gè)程序間順序執(zhí)行考慮時(shí)間上關(guān)系,如下所示:t輸入:計(jì)算:輸出:I1C1P1I2C2P2I3C3P3
t0t1t2t3t4t5t6t7t8t9t10Δt程序1:I1C1P1程序2:程序3:I2C2P2I3C3P39個(gè)Δt
15順序執(zhí)行與并發(fā)執(zhí)行任意程序都存在著Ii→Ci→Pi
這樣的前驅(qū)關(guān)系,因而對一個(gè)用戶程序的輸入、計(jì)算和打印這三個(gè)操作,必須順序執(zhí)行。但在多道環(huán)境下并不存在或并不要求Pi→Ii+1
關(guān)系,即Ii、Cj
和Pk(i≠j≠k)之間并不存在前驅(qū)關(guān)系。因而在對一批程序處理時(shí),可使它們并發(fā)執(zhí)行,這就產(chǎn)生了并發(fā)操作。16三個(gè)程序并發(fā)執(zhí)行的前驅(qū)圖
輸入:計(jì)算:輸出:
t0t1t2t3t4t5t6ΔttI1I2I3C1C2C3P1P2P3時(shí)間:5個(gè)Δt并行并行并行17
2.程序順序執(zhí)行時(shí)的特征1.順序性
處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每一操作必須在上一個(gè)操作結(jié)束之后開始(可能有分支/循環(huán))2.封閉性程序封閉的環(huán)境下運(yùn)行(獨(dú)占全部資源,計(jì)算機(jī)的資源狀態(tài)只有該程序的執(zhí)行邏輯決定)。程序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響。3.可再現(xiàn)性程序執(zhí)行的初始條件相同,則結(jié)果相同(連續(xù)不停頓的執(zhí)行,或“停停走走”地執(zhí)行)P33182.1.3程序并發(fā)執(zhí)行并發(fā)(concurrency)?
并行(parallellism)
并行:兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生
并發(fā):兩個(gè)或多個(gè)事件在同一時(shí)間間隔發(fā)生并行:在不同實(shí)體上的多個(gè)事件
并發(fā):在同一實(shí)體上的多個(gè)事件并行:在多臺(tái)處理器上同時(shí)處理多個(gè)任務(wù)
并發(fā):在一臺(tái)處理器上“同時(shí)”處理多個(gè)任務(wù)并行:三個(gè)人同時(shí)吃三個(gè)饅頭并發(fā):一個(gè)人同時(shí)吃三個(gè)饅頭重點(diǎn)掌握!19處理機(jī)1處理機(jī)1處理機(jī)1處理機(jī)1處理機(jī)1處理機(jī)1處理機(jī)2處理機(jī)2處理機(jī)3處理機(jī)320212.1.3程序并發(fā)執(zhí)行1.程序的并發(fā)執(zhí)行
一個(gè)作業(yè)的輸入、計(jì)算和打印三個(gè)操作,必須順序執(zhí)行;并不存在Pi→Ii+1的關(guān)系,在對一批程序進(jìn)行處理時(shí),可使它們并發(fā)執(zhí)行22t輸入:計(jì)算:輸出:I1C1P1I2C2P2I3C3P3
t0t1t2t3t4t5t6t7t8t9t10Δt9個(gè)Δt
輸入:計(jì)算:輸出:
t0t1t2t3t4t5t6ΔttI1I2I3C1C2C3P1P2P3時(shí)間:5個(gè)Δt并行并行并行23對于具有下述四條語句的程序段:S1:a:=x+2S2:b:=y+4S3:c:=a+bS4:d:=c+b
圖2-4四條語句的前趨關(guān)系
242.程序并發(fā)執(zhí)行時(shí)的特征間斷性(異步性)程序并發(fā)執(zhí)行時(shí),由于共享系統(tǒng)資源和相互合作,形成了相互制約的關(guān)系,導(dǎo)致“執(zhí)行
暫停
執(zhí)行”這種間斷性的活動(dòng)252.程序并發(fā)執(zhí)行時(shí)的特征2.失去封閉性多個(gè)程序共享系統(tǒng)資源,因而資源的狀態(tài)將由多個(gè)程序來改變(不一個(gè)人所有,不能關(guān)門獨(dú)占)3.不可再現(xiàn)性失去了封閉性,也將導(dǎo)致其失去可再現(xiàn)性(不上鎖門,沒法保證明天再來時(shí),內(nèi)容不變)262.2進(jìn)程的描述1.
進(jìn)程的特征和定義2.
進(jìn)程的三種基本狀態(tài)3.
掛起狀態(tài)、創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)4.進(jìn)程管理的數(shù)據(jù)結(jié)構(gòu)P35271.進(jìn)程的特征和定義為使程序能并發(fā)執(zhí)行,且為了對并發(fā)執(zhí)行的程序加以描述和控制,引入了“進(jìn)程”?!斑M(jìn)程”!28進(jìn)程的特征與狀態(tài)進(jìn)程的特征結(jié)構(gòu)特征:程序段、相關(guān)數(shù)據(jù)段和PCB(進(jìn)程映像)1.動(dòng)態(tài)性:由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤消而消亡2.并發(fā)性:多進(jìn)程同存于內(nèi)存,在一段時(shí)間內(nèi)同時(shí)運(yùn)行3.獨(dú)立性:進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行、獨(dú)立分配資源和獨(dú)立接受調(diào)度的基本單位4.異步性:各自獨(dú)立的、不可預(yù)知的速度向前推迸(異步方式運(yùn)行)29
結(jié)構(gòu)特征早期的UNIX版本中,把這三部分總稱為“進(jìn)程映像”。在許多情況下所說的進(jìn)程,實(shí)際上是指進(jìn)程實(shí)體,例如,所謂創(chuàng)建進(jìn)程,實(shí)質(zhì)上是創(chuàng)建進(jìn)程實(shí)體中的PCB;而撤消進(jìn)程,實(shí)質(zhì)上是撤消進(jìn)程的PCB。
通常的程序是不能并發(fā)執(zhí)行的。為使程序(含數(shù)據(jù))能獨(dú)立運(yùn)行,應(yīng)為之配置一進(jìn)程控制塊,即PCB(ProcessControlBlock);進(jìn)程實(shí)體包含3部分:程序段、相關(guān)數(shù)據(jù)段和PCB30
1)動(dòng)態(tài)性進(jìn)程實(shí)體有一定的生命期,而程序則只是一組有序指令的集合,并存放于某種介質(zhì)上,其本身并不具有運(yùn)動(dòng)的含義,因而是靜態(tài)的。進(jìn)程的實(shí)質(zhì)是進(jìn)程實(shí)體的一次執(zhí)行過程,因此,動(dòng)態(tài)性是進(jìn)程的最基本的特征。動(dòng)態(tài)性還表現(xiàn)在:“它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤消而消亡”。31
2)并發(fā)性引入進(jìn)程的目的,正是為了使進(jìn)程實(shí)體能和其它進(jìn)程實(shí)體并發(fā)執(zhí)行;而程序(沒有建立PCB)是不能并發(fā)執(zhí)行的。
指多個(gè)進(jìn)程實(shí)體同存于內(nèi)存中,且能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。并發(fā)性是進(jìn)程的重要特征,同時(shí)也成為OS的重要特征。323)獨(dú)立性傳統(tǒng)OS中,獨(dú)立性是指進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行、獨(dú)立分配資源和獨(dú)立接受調(diào)度的基本單位。凡未建立PCB的程序都不能作為一個(gè)獨(dú)立的單位參與運(yùn)行。4)異步性進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn),或說進(jìn)程實(shí)體按異步方式運(yùn)行。
33進(jìn)程的定義許多人從不同的角度下過定義,較典型的進(jìn)程定義有:(1)進(jìn)程是程序的一次執(zhí)行。(2)進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)。(3)進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。34就緒(Ready)狀態(tài)進(jìn)程已分配到除CPU以外的所有必要資源的狀態(tài)稱為就緒狀態(tài)。處于就緒狀態(tài)的進(jìn)程可能有多個(gè),常排成一個(gè)隊(duì)列,稱為就緒隊(duì)列。執(zhí)行狀態(tài)進(jìn)程已獲得CPU,其程序正在執(zhí)行。阻塞狀態(tài)由于發(fā)生某事件而暫時(shí)無法繼續(xù)執(zhí)行,放棄處理機(jī)而處于暫停狀態(tài),把這種暫停狀態(tài)稱為阻塞狀態(tài)(也稱為等待/鎖狀態(tài))。2.進(jìn)程的三種基本狀態(tài)及轉(zhuǎn)換35進(jìn)程阻塞的典型事件有:請求I/O,申請緩沖空間等。處于阻塞狀態(tài)的進(jìn)程排成隊(duì)列。有的系統(tǒng)則根據(jù)阻塞原因的不同,把處于阻塞狀態(tài)的進(jìn)程排成多個(gè)隊(duì)列。進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換
重點(diǎn)掌握!36進(jìn)程掛起的原因(1)終端用戶的請求:
程序運(yùn)行有問題時(shí),希望暫時(shí)使程序靜止下來。進(jìn)程暫停執(zhí)行;進(jìn)程處于就緒狀態(tài),暫不調(diào)度。這種靜止?fàn)顟B(tài)稱為掛起狀態(tài)。
(2)父進(jìn)程請求:有時(shí)父進(jìn)程希望掛起自己的某個(gè)子進(jìn)程,以便考查和修改該子進(jìn)程,或協(xié)調(diào)各子進(jìn)程間的活動(dòng)。
(3)負(fù)荷調(diào)節(jié)的需要(4)操作系統(tǒng)的需要:操作系統(tǒng)有時(shí)希望掛起某些進(jìn)程,以便檢查運(yùn)行中的資源使用情況或進(jìn)行記賬。37進(jìn)程狀態(tài)的轉(zhuǎn)換在引入掛起狀態(tài)后,將增加從掛起狀態(tài)(靜止?fàn)顟B(tài))到非掛起狀態(tài)(活動(dòng)狀態(tài))的轉(zhuǎn)換;或者相反。有以下幾種情況:(1)活動(dòng)就緒
靜止就緒(Readys)[Suspend](2)活動(dòng)阻塞
靜止阻塞(Blockeds)[Suspend](3)靜止就緒
活動(dòng)就緒(Readya)[Active](4)靜止阻塞
活動(dòng)阻塞(Blockeda)[Active]38具有掛起狀態(tài)的進(jìn)程狀態(tài)圖391)創(chuàng)建狀態(tài)
3.創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)
創(chuàng)建一個(gè)進(jìn)程一般要通過兩個(gè)步驟:
①
為新進(jìn)程創(chuàng)建PCB,并填寫必要的管理信息。
②
進(jìn)程轉(zhuǎn)入就緒狀態(tài)并插入就緒隊(duì)列之中。
新進(jìn)程被創(chuàng)建時(shí),分配PCB并填寫進(jìn)程標(biāo)識(shí)等信息,但由于進(jìn)程所必需的資源或其它信息尚未得到,即創(chuàng)建工作尚未完成,進(jìn)程還不能被調(diào)度運(yùn)行,這時(shí)的狀態(tài)就是創(chuàng)建狀態(tài)。引入創(chuàng)建狀態(tài),是為了保證進(jìn)程調(diào)度必須在創(chuàng)建工作完成后進(jìn)行,以確保對進(jìn)程控制塊操作的完整性。402)終止?fàn)顟B(tài)導(dǎo)致進(jìn)程終止的3原因:(1)(自然死亡)進(jìn)程到達(dá)了自然結(jié)束點(diǎn)(2)(病死)出現(xiàn)了無法克服的錯(cuò)誤(3)(他殺)被操作系統(tǒng)所終結(jié),或被其他有終止權(quán)的進(jìn)程所終結(jié)
進(jìn)程的終止也要通過兩個(gè)步驟:
①
等待操作系統(tǒng)進(jìn)行善后處理。
②將其PCB清零,并將PCB空間返還系統(tǒng)。41
增加創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)后,進(jìn)程的三種基本狀態(tài)及轉(zhuǎn)換圖衍變?yōu)槲宸N狀態(tài)及轉(zhuǎn)換關(guān)系圖進(jìn)程的五種基本狀態(tài)及轉(zhuǎn)換
重點(diǎn)掌握!42圖2-8
具有創(chuàng)建、終止和掛起狀態(tài)的進(jìn)程狀態(tài)圖
(1)創(chuàng)建→活動(dòng)就緒:系統(tǒng)性能和內(nèi)存均允許的情況下,完成對進(jìn)程創(chuàng)建的必要操作后,系統(tǒng)進(jìn)程將進(jìn)程的狀態(tài)轉(zhuǎn)換為活動(dòng)就緒狀態(tài)。(2)創(chuàng)建→靜止就緒:并不分配給新建進(jìn)程所需資源(主要是主存),系統(tǒng)進(jìn)程將進(jìn)程狀態(tài)轉(zhuǎn)為靜止就緒狀態(tài),對換到外存,不再參與調(diào)度,此時(shí)進(jìn)程創(chuàng)建工作尚未完成。P39432.
進(jìn)程控制塊
(PCB,processcontrolblock)進(jìn)程控制塊的作用進(jìn)程控制塊中的信息進(jìn)程控制塊的組織方式P40441.進(jìn)程控制塊的作用為描述和控制進(jìn)程的運(yùn)行,系統(tǒng)為每個(gè)進(jìn)程定義一個(gè)數(shù)據(jù)結(jié)構(gòu)——進(jìn)程控制塊PCB(ProcessControlBlock),它是進(jìn)程實(shí)體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。PCB中記錄了操作系統(tǒng)所需的、用于描述進(jìn)程的當(dāng)前情況以及控制進(jìn)程運(yùn)行的全部信息。作用:使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程。系統(tǒng)利用PCB來控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志
,進(jìn)程與PCB是一一對應(yīng)45涉及PCB的操作:在進(jìn)程的整個(gè)生命期中,系統(tǒng)總是通過PCB對進(jìn)程進(jìn)行控制。所以PCB是進(jìn)程存在的唯一標(biāo)志。
1.OS要調(diào)度某進(jìn)程執(zhí)行時(shí),要從進(jìn)程的PCB中查出其現(xiàn)行狀態(tài)及優(yōu)先級(jí);2.調(diào)度到某進(jìn)程后,根據(jù)PCB中保存的處理機(jī)狀態(tài)信息,設(shè)置該進(jìn)程運(yùn)行現(xiàn)場,并根據(jù)其PCB中的程序和數(shù)據(jù)的內(nèi)存始址,找到程序和數(shù)據(jù);3.進(jìn)程執(zhí)行過程中,合作進(jìn)程間需要進(jìn)程同步、通信或訪問文件時(shí),也都要訪問PCB;4.進(jìn)程由于某種原因而暫停執(zhí)行時(shí),也要將斷點(diǎn)的處理機(jī)環(huán)境保存在PCB中。46當(dāng)系統(tǒng)創(chuàng)建一個(gè)新進(jìn)程時(shí),就為它建立了一個(gè)PCB;進(jìn)程結(jié)束時(shí)又回收其PCB,進(jìn)程于是也隨之消亡。PCB可被操作系統(tǒng)讀寫,如調(diào)度程序、資源分配程序、中斷處理程序以及監(jiān)督和分析程序等讀或修改。因?yàn)镻CB經(jīng)常被系統(tǒng)訪問,尤其是被運(yùn)行頻率很高的進(jìn)程及分派程序訪問,故PCB應(yīng)常駐內(nèi)存。PCB專區(qū):系統(tǒng)將所有的PCB組織成若干個(gè)鏈表(或隊(duì)列),存放在操作系統(tǒng)中專門開辟的PCB區(qū)內(nèi)。
如:在Linux系統(tǒng)中用task_struct來描述每個(gè)進(jìn)程的進(jìn)程控制塊,Windows操作系統(tǒng)中則使用一個(gè)執(zhí)行體進(jìn)程塊(EPROCESS)來表示進(jìn)程對象的基本屬性。
472.進(jìn)程控制塊中的信息進(jìn)程標(biāo)識(shí)符:進(jìn)程標(biāo)識(shí)符用于惟一地標(biāo)識(shí)一個(gè)進(jìn)程(內(nèi)部標(biāo)識(shí)符和外部標(biāo)識(shí)符)處理機(jī)狀態(tài):處理機(jī)的各種寄存器的內(nèi)容組成(通用寄存器、指令計(jì)數(shù)器、程序狀態(tài)字PSW、用戶棧指針)進(jìn)程調(diào)度信息:與進(jìn)程調(diào)度和進(jìn)程對換有關(guān)的信息,包括:①進(jìn)程狀態(tài);②進(jìn)程優(yōu)先級(jí);③進(jìn)程調(diào)度所需的其它信息;④事件等。進(jìn)程控制信息:①程序和數(shù)據(jù)的地址②進(jìn)程同步和通信機(jī)制,如消息隊(duì)列指針、信號(hào)量等③資源清單④鏈接指針482.3
進(jìn)程控制1進(jìn)程的創(chuàng)建2進(jìn)程的終止3進(jìn)程的阻塞和喚醒4進(jìn)程的掛起和激活進(jìn)程控制是進(jìn)程管理中最基本的功能(1)創(chuàng)建新進(jìn)程,(2)終止進(jìn)程(終止因出現(xiàn)某事件而無法運(yùn)行的進(jìn)程),(3)進(jìn)程運(yùn)行中的狀態(tài)轉(zhuǎn)換進(jìn)程控制一般是由OS的內(nèi)核中的原語來實(shí)現(xiàn)的492.3.2
進(jìn)程的創(chuàng)建1.進(jìn)程圖(ProcessGraph)用于描述一個(gè)進(jìn)程的家族關(guān)系的有向樹圖2-13
進(jìn)程樹
50
進(jìn)程的創(chuàng)建在進(jìn)程D創(chuàng)建了進(jìn)程I之后,稱D是I的父進(jìn)程(ParentProcess),I是D的子進(jìn)程(ProgenyProcess)。子進(jìn)程可以繼承父進(jìn)程的資源;在PCB中設(shè)置有家族關(guān)系表項(xiàng)來表示父子進(jìn)程關(guān)系512.引起進(jìn)程創(chuàng)建的事件為使程序能運(yùn)行,就必須為它創(chuàng)建進(jìn)程。導(dǎo)致進(jìn)程創(chuàng)建的典型事件有四類:1.用戶登錄:
分時(shí)系統(tǒng)中的合法用戶進(jìn)入系統(tǒng),將為該終端建立一個(gè)進(jìn)程,并把它放入就緒隊(duì)列。2.作業(yè)調(diào)度:
調(diào)度到某作業(yè)時(shí),將該作業(yè)裝入內(nèi)存,分配必要的資源,并立即為它創(chuàng)建進(jìn)程,放入就緒隊(duì)列中。3.提供服務(wù):
用戶程序提出某種請求后,系統(tǒng)將專門創(chuàng)建一個(gè)進(jìn)程來提供用戶所需要的服務(wù)(如打印請求)4.應(yīng)用請求:
應(yīng)用進(jìn)程自己創(chuàng)建一個(gè)新進(jìn)程,以便使新進(jìn)程以并發(fā)運(yùn)行方式完成特定任務(wù)52創(chuàng)建新進(jìn)程,調(diào)用進(jìn)程創(chuàng)建原語Creat(),有以下步驟:3.進(jìn)程的創(chuàng)建(CreationofProcess)1.申請空白PCB(申請唯一的標(biāo)識(shí)符)2.為新進(jìn)程分配資源為新進(jìn)程的程序和數(shù)據(jù)以及用戶棧分配必要的內(nèi)存空間3.初始化PCB(進(jìn)程控制塊)
初始化標(biāo)識(shí)信息;
初始化處理機(jī)狀態(tài)信息,使程序計(jì)數(shù)器指向程序的入口地址,使棧指針指向棧頂;
初始化處理機(jī)控制信息(狀態(tài),優(yōu)先級(jí))4.將新進(jìn)程插入就緒隊(duì)列532.3.3
進(jìn)程的終止1.引起進(jìn)程終止的事件正常結(jié)束(壽終正寢)異常結(jié)束(病死)外界干預(yù)(被殺)2.進(jìn)程的終止過程P4554異常結(jié)束運(yùn)行期間,出現(xiàn)錯(cuò)誤和故障,被迫終止。常見的異常事件:1.越界錯(cuò)誤:程序所訪問的存儲(chǔ)區(qū)已越出進(jìn)程的區(qū)域。2.保護(hù)錯(cuò):指進(jìn)程試圖去訪問一個(gè)不允許訪問的資源或文件,或者以不適當(dāng)?shù)姆绞竭M(jìn)行訪問,例如,進(jìn)程試圖去寫一個(gè)只讀文件。3.非法指令:指程序試圖去執(zhí)行一條不存在的指令。出現(xiàn)該錯(cuò)誤的原因,可能是程序錯(cuò)誤地轉(zhuǎn)移到數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)成了指令。554.特權(quán)指令錯(cuò):用戶進(jìn)程試圖去執(zhí)行一條只允許OS執(zhí)行的指令。5.運(yùn)行超時(shí):執(zhí)行時(shí)間超過指定的最大值。6.等待超時(shí):等待某事件的時(shí)間超過最大值。7.算術(shù)運(yùn)算錯(cuò):試圖去執(zhí)行一個(gè)被禁止的運(yùn)算(如被0除)。8.I/O故障:I/O過程中發(fā)生了錯(cuò)誤56外界干預(yù)1.OS/操作員干預(yù)如:發(fā)生了死鎖,OS/操作員終止該進(jìn)程。2.父進(jìn)程請求由于父進(jìn)程具有終止自己的任何子孫進(jìn)程的權(quán)力;當(dāng)父進(jìn)程提出請求時(shí),系統(tǒng)將終止該進(jìn)程。3.父進(jìn)程終止父進(jìn)程終止時(shí),OS也將它的所有子孫進(jìn)程終止。572.進(jìn)程的終止過程①
Terminatewho?根據(jù)進(jìn)程標(biāo)識(shí)符從PCB集合檢索出該進(jìn)程的PCB
②Excecute!進(jìn)程處于執(zhí)行狀態(tài),則立即終止執(zhí)行,并設(shè)置調(diào)度標(biāo)志為真(重新調(diào)度用)
③剪除羽翼:進(jìn)程若有子孫進(jìn)程,則將所有子孫進(jìn)程予以終止
④沒收財(cái)產(chǎn):進(jìn)程的所有資源歸還給系統(tǒng)/父進(jìn)程
⑤
重新投胎:進(jìn)程移出所在的PCB隊(duì)列,等待其他程序來搜集信息。582.2.4
進(jìn)程的阻塞和喚醒1.誰引起的?(引起進(jìn)程阻塞/喚醒的事件)2.如何阻塞?(阻塞過程)3.如何喚醒?(喚醒過程)P4659
1.誰引起的?
1.請求系統(tǒng)服務(wù),需等待!請求OS提供服務(wù)時(shí),OS在忙別的,不能滿足該進(jìn)程的要求,進(jìn)程只能轉(zhuǎn)變?yōu)樽枞麪顟B(tài),等!
2.啟動(dòng)過某操作,等它完成!進(jìn)程啟動(dòng)某種操作后,如果進(jìn)程必須在該操作完成之后才能繼續(xù)執(zhí)行,則進(jìn)程必須阻塞,以等待操作完成。
3.新數(shù)據(jù)尚未到達(dá),等!對相互合作的進(jìn)程,如果一個(gè)進(jìn)程需先獲得另一進(jìn)程提供的數(shù)據(jù)后才能對數(shù)據(jù)進(jìn)行處理,只要所需數(shù)據(jù)尚未到達(dá),該進(jìn)程只有(等待)阻塞。
4.無新工作可做,等!特定功能的系統(tǒng)進(jìn)程,每當(dāng)這種進(jìn)程完成任務(wù)后,便把自己阻塞起來以等待新任務(wù)到來602.進(jìn)程阻塞過程1.調(diào)用原語:進(jìn)程無法繼續(xù)執(zhí)行,調(diào)用阻塞原語block()把自己阻塞(進(jìn)程自身的一種主動(dòng)行為)2.更改狀態(tài):進(jìn)入block過程后,應(yīng)先立即停止執(zhí)行,把進(jìn)程控制塊中的現(xiàn)行狀態(tài)由“執(zhí)行”改為“阻塞”,并將其插入相應(yīng)的阻塞隊(duì)列
3.重新投胎:轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一就緒進(jìn)程并進(jìn)行切換,即:保留被阻塞進(jìn)程的處理機(jī)狀態(tài)(在PCB中),再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置CPU的環(huán)境。
613.進(jìn)程喚醒過程阻塞進(jìn)程所期待的事件出現(xiàn)時(shí),則由有關(guān)進(jìn)程調(diào)用喚醒原語wakeup(),將等待該事件的進(jìn)程喚醒①把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒
②將核PCB插入到就緒隊(duì)列中block原語和wakeup原語是一對作用相反的原語。某進(jìn)程調(diào)用了阻塞原語,則必須在與之相合作的另一進(jìn)程中/其他相關(guān)的進(jìn)程中安排喚醒原語,以能喚醒阻塞進(jìn)程;否則,被阻塞進(jìn)程將會(huì)因不能被喚醒而長久地處于阻塞狀態(tài),從而再無機(jī)會(huì)繼續(xù)運(yùn)行。622.3.5進(jìn)程的掛起與激活1.進(jìn)程的掛起檢查被掛起進(jìn)程的狀態(tài),活動(dòng)就緒→靜止就緒;活動(dòng)阻塞→靜止阻塞為了方便用戶或父進(jìn)程考查該進(jìn)程的運(yùn)行情況,把該進(jìn)程的PCB復(fù)制到某指定的內(nèi)存區(qū)域。若被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度。2.進(jìn)程的激活過程先將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài),改為相應(yīng)的活動(dòng)狀態(tài)。根據(jù)優(yōu)先級(jí)調(diào)度。632.4
進(jìn)程同步1進(jìn)程同步的基本概念2信號(hào)量機(jī)制3信號(hào)量的應(yīng)用4
管程機(jī)制異步性會(huì)造成混亂,尤其是在競爭臨界資源時(shí)(如多個(gè)進(jìn)程爭用共享變量、表格、鏈表時(shí),有可能致使數(shù)據(jù)處理出錯(cuò))。進(jìn)程同步的主要任務(wù)使并發(fā)執(zhí)行的諸進(jìn)程之間能有效共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。642.4.1進(jìn)程同步的基本概念1.兩種形式的制約關(guān)系2.臨界資源(CriticalResouce)3.臨界區(qū)4.同步應(yīng)遵循的規(guī)則P48651.兩種形式的制約關(guān)系在多道程序環(huán)境下,當(dāng)程序并發(fā)執(zhí)行時(shí),由于資源共享和進(jìn)程合作,使同處于一個(gè)系統(tǒng)中的諸進(jìn)程之間可能存在著兩種形式的制約關(guān)系。間接相互制約關(guān)系(互斥)
直接相互制約關(guān)系(同步)
重點(diǎn)掌握!66間接相互制約關(guān)系(互斥)
對硬件資源的共享,如CPU、I/O設(shè)備等例如:有兩個(gè)進(jìn)程A和B,在A進(jìn)程提出打印請求時(shí),系統(tǒng)已將惟一的一臺(tái)打印機(jī)分配給了進(jìn)程B,則此時(shí)進(jìn)程A只能阻塞;一旦進(jìn)程B將打印機(jī)釋放,則A進(jìn)程才能由阻塞改為就緒狀態(tài)。
67直接相互制約關(guān)系(同步)例如:
有一輸入進(jìn)程A通過單緩沖向進(jìn)程B提供數(shù)據(jù)。當(dāng)該緩沖空時(shí),進(jìn)程B因不能獲得所需數(shù)據(jù)而阻塞,而當(dāng)進(jìn)程A把數(shù)據(jù)輸入緩沖區(qū)后,便將進(jìn)程B喚醒;當(dāng)緩沖區(qū)已滿時(shí),進(jìn)程A因不能再向緩沖區(qū)投放數(shù)據(jù)而阻塞,當(dāng)進(jìn)程B將緩沖區(qū)數(shù)據(jù)取走后便可喚醒A。
進(jìn)程A進(jìn)程BBuffer682.
臨界資源(CriticalResouce)一次只能供一個(gè)進(jìn)程使用,使用完后歸還系統(tǒng),才能給其他進(jìn)程使用。692.
臨界資源(CriticalResouce)臨界資源(CriticalResouce):硬件資源,譬如打印機(jī)、磁帶機(jī)等,諸進(jìn)程間應(yīng)采取互斥方式,實(shí)現(xiàn)對這種資源的共享,特征:1.一次只能供一個(gè)進(jìn)程使用,使用完后歸還系統(tǒng),才能給其他進(jìn)程使用。2.進(jìn)程對臨界資源必須互斥使用,以實(shí)現(xiàn)對臨界資源的共享訪問。
703.
臨界區(qū)只要是臨界資源,進(jìn)程都必須互斥地對它進(jìn)行訪問。在每個(gè)進(jìn)程中,訪問臨界資源的那段代碼稱為臨界區(qū)若能保證諸進(jìn)程互斥地進(jìn)入自己的臨界區(qū),便可實(shí)現(xiàn)諸進(jìn)程對臨界資源的互斥訪問。71
臨界區(qū):進(jìn)程中訪問臨界資源的代碼段
進(jìn)入?yún)^(qū):臨界區(qū)前用于檢查臨界資源的代碼段
退出區(qū):臨界區(qū)后用于恢復(fù)未被訪問標(biāo)志的代碼段
repeat
entrysection
進(jìn)入?yún)^(qū)criticalsection;(臨界區(qū))
exitsection
退出區(qū)remaindersectionuntilfalse724.
同步應(yīng)遵循的規(guī)則
為實(shí)現(xiàn)進(jìn)程互斥地進(jìn)入自已的臨界區(qū),可用軟件方法,更多的是在系統(tǒng)中設(shè)置專門的同步機(jī)構(gòu)來協(xié)調(diào)各進(jìn)程間的運(yùn)行。所有同步機(jī)制都應(yīng)遵循下述4準(zhǔn)則:1.空閑讓進(jìn)2.忙則等待3.有限等待4.讓權(quán)等待
重點(diǎn)掌握!73同步應(yīng)遵循的規(guī)則(1)空閑讓進(jìn)當(dāng)無進(jìn)程處于臨界區(qū)時(shí),表明臨界資源處于空閑狀態(tài),應(yīng)允許一個(gè)請求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效地利用臨界資源。忙則等待當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),表明臨界資源正在被訪問,因而其它試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證對臨界資源的互斥訪問。74
同步應(yīng)遵循的規(guī)則(2)有限等待對要求訪問臨界資源的進(jìn)程,應(yīng)保證在有限時(shí)間內(nèi)能進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)。
讓權(quán)等待當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入“忙等”狀態(tài)。752.4.3信號(hào)量機(jī)制(進(jìn)程同步)1965年,荷蘭人Dijkstra首先提出信號(hào)量機(jī)制是一種卓有成效的進(jìn)程同步工具,被廣泛應(yīng)用于單處理機(jī)和多處理機(jī)系統(tǒng),以及計(jì)算機(jī)網(wǎng)絡(luò)中信號(hào)量(Semaphores)是僅能被兩個(gè)原語操作wait(S)和signal(S)修改的整型變量。P5376信號(hào)量的類型1.
整型信號(hào)量S為初值非負(fù)的整型變量,描述資源狀態(tài)/可用資源的數(shù)量。2.
記錄型信號(hào)量二元組(S,Q),Q初始狀態(tài)為空的隊(duì)列。3.AND型信號(hào)量一次需要多個(gè)共享資源,改進(jìn)wait-signal操作。4.
信號(hào)量集一次需要N個(gè)多類資源,改進(jìn)wait-signal操作。77整型信號(hào)量機(jī)制
最初由Dijkstra把整型信號(hào)量定義為一個(gè)用于表示資源數(shù)目的整型量與一般整型量不同,除初始化外,僅能通過兩個(gè)標(biāo)準(zhǔn)的原子操作(AtomicOperation)wait(S)和signal(S)來訪問。很長時(shí)間以來,這兩個(gè)操作一直被分別稱為P、V操作
wait(S)和signal(S)是兩個(gè)原子操作,在執(zhí)行時(shí)是不可中斷的。即當(dāng)一個(gè)進(jìn)程在修改某信號(hào)量時(shí),沒有其他進(jìn)程可同時(shí)對該信號(hào)量進(jìn)行修改。
在wait操作中,對S值的測試和做S:=S-1操作時(shí)都不可中斷。P操作:
wait(s):whiles<=0dono-op
s:=s-1;V操作:signal(s):s:=s+1;78記錄型信號(hào)量機(jī)制
整型量中,只要S≤0就不斷測試,未遵循“讓權(quán)等待”準(zhǔn)則,而是使進(jìn)程處于“忙等”的狀態(tài)。記錄型信號(hào)量機(jī)制是沒有“忙等”現(xiàn)象的同步機(jī)制,但出現(xiàn)多個(gè)進(jìn)程等待訪問同一個(gè)臨界資源的情況在信號(hào)量機(jī)制中,除需要用于代表資源數(shù)目的整型變量value外,還增加一個(gè)進(jìn)程鏈表指針L,用于鏈接所有的等待進(jìn)程。typesemaphore=recordvalue:integer;資源數(shù)量L:listofprocess;進(jìn)程等待end
79
wait(s)和signal(s)操作描述procedurewait(s)
請求一個(gè)資源
varS:semaphore;beginS.value=S.value-1;ifS.value<0thenblock(S.L);
資源分配完畢,
進(jìn)程阻塞endproceduresignal(s)釋放一個(gè)資源varS:semaphore;beginS.value=S.value+1;ifS.value≤0thenwakeup(S.L);有等待資源進(jìn)程從等待信號(hào)量S的阻塞隊(duì)列中喚醒一個(gè)進(jìn)程end80S.value的初值表示系統(tǒng)中某類資源的數(shù)目,因而又稱為資源信號(hào)量。每次wait操作,意味著進(jìn)程請求一個(gè)單位的資源,系統(tǒng)中可供分配的資源數(shù)減少一個(gè),描述為S.value:=S.value-1;當(dāng)S.value<0時(shí),表示資源已分配完畢,因此進(jìn)程調(diào)用block原語自我阻塞,放棄處理機(jī),并插入到信號(hào)量鏈表S.L中??梢?,該機(jī)制遵循了“讓權(quán)等待”準(zhǔn)則。此時(shí)S.value的絕對值表示在該信號(hào)量鏈表中已阻塞進(jìn)程的數(shù)目。81每次signal操作,表示執(zhí)行進(jìn)程釋放一個(gè)單位資源,系統(tǒng)中可供分配的資源數(shù)增加一個(gè),故S.value=S.value+1操作表示資源數(shù)目加1。若加1后仍是S.value≤0,則表示在該信號(hào)量鏈表中,有等待該資源的進(jìn)程被阻塞,還應(yīng)調(diào)用wakeup原語,將S.L鏈表中的第一個(gè)等待進(jìn)程喚醒。如果S.value的初值為1,表示只允許一個(gè)進(jìn)程訪問臨界資源,此時(shí)的信號(hào)量轉(zhuǎn)化為互斥信號(hào)量,用于進(jìn)程互斥。
82記錄型信號(hào)量是針對各進(jìn)程之間只共享一個(gè)臨界資源的情況,有些應(yīng)用場合,是一個(gè)進(jìn)程需要先獲得兩個(gè)或更多的共享資源后方能執(zhí)行其任務(wù)
AND型信號(hào)量機(jī)制對于生產(chǎn)者—消費(fèi)者問題,也可利用AND信號(hào)量來解決,即用:
Swait(empty,mutex)→wait(empty)和wait(mutex)
Ssignal(mutex,full)→signal(mutex)和signal(full)
Swait(full,mutex)→
wait(full)和wait(mutex)
Ssignal(mutex,empty)→Signal(mutex)和Signal(empty)
83AND型信號(hào)量集是指同時(shí)需要多種資源且每種占用一個(gè)時(shí)的信號(hào)量操作基本思想AND型信號(hào)量集wait原語為SwaitAND型信號(hào)量集signal原語為Ssignal
AND型信號(hào)量機(jī)制84AND型信號(hào)量機(jī)制的基本思想
將進(jìn)程在整個(gè)運(yùn)行過程中需要的所有資源,一次性全部地分配給進(jìn)程,待進(jìn)程使用完后再一起釋放。只要尚有一個(gè)資源未能分配給進(jìn)程,其它所有可能為之分配的資源也不分配給它。
85AND型信號(hào)量機(jī)制的基本思想對若干個(gè)臨界資源的分配,采取原子操作方式:要么把它所請求的資源全部分配到進(jìn)程,要么一個(gè)也不分配。由死鎖理論可知,這樣就可避免上述死鎖情況的發(fā)生。在wait操作中,增加一個(gè)“AND”條件,故稱為AND同步或同時(shí)wait操作86Swait(S1,S2,…,Sn)原語
Swait(S1,S2,…,Sn)ifS1≥1and…andSn≥1then所有資源都有fori=1tondoSi=Si-1;endforelse進(jìn)程放入第一個(gè)沒有資源的等待隊(duì)列
PlacetheprocessinthewaitingqueueassociatedwiththefirstSifoundwithSi<1,andsettheprogramcountofthisprocesstothebeginningofSwaitoperation.endif
87Ssignal(S1,S2,…,Sn)原語
Ssignal(S1,S2,…,Sn)釋放資源fori=1tondoSi=Si+1;RemovealltheprocesswaitinginthequeueassociatedwithSiintothereadyqueue.endfor88信號(hào)量集機(jī)制記錄型信號(hào)量機(jī)制中,wait(S)或signal(S)操作僅能對信號(hào)量施以加1或減1操作,意味著每次只能獲得或釋放一個(gè)單位的臨界資源。當(dāng)一次需要N個(gè)某類臨界資源時(shí),便要進(jìn)行N次wait(S)操作,顯然是低效的。在有些情況下,當(dāng)資源數(shù)量低于某一下限值時(shí),便不予以分配。因而,每次分配之前,都必須測試該資源的數(shù)量,看其是否大于其下限值?;谏鲜鰞牲c(diǎn),可以對AND信號(hào)量機(jī)制加以擴(kuò)充,形成一般化的“信號(hào)量集”機(jī)制。89
S為信號(hào)量,d為需求量,t為下限值Swait(S1,t1,d1,…,Sn,tn,dn)
ifSi>=t1and…andSn>=tn
thenfori=1tondoSi=Si-di;endforelse①Placetheprocessinthewaitingqueueassociatedwiththe
firstSi
foundwith
Si<ti
②settheprogramcountofthisprocesstothebeginningofSwaitoperation.endif90Ssignal(S1,d1S2,d2,…,Sn,dn)fori:=1tondo
Si:=Si+di;RemovealltheprocesswaitinginthequeueassociatedwithSi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年歷史教學(xué)個(gè)人年度工作總結(jié)(二篇)
- 企業(yè)安全生產(chǎn)風(fēng)險(xiǎn)管理制度
- 行政人事年終個(gè)人的工作總結(jié)
- 2025年商務(wù)策劃師三級(jí)模擬試題及答案
- GRC構(gòu)件安裝技術(shù)交底
- 計(jì)算機(jī)三級(jí)(信息安全技術(shù))考試題庫與答案
- 求職小面試技巧總結(jié)
- 建設(shè)工程施工合同糾紛要素式起訴狀模板合規(guī)版
- 建設(shè)工程施工合同糾紛要素式起訴狀模板避免訴訟彎路
- 地鐵工程糾紛專用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 我和我的祖國混聲四部合唱簡譜
- 宅基地兄弟贈(zèng)與協(xié)議書
- 影視文學(xué)劇本分析其文體特征
- (正式版)JTT 1218.6-2024 城市軌道交通運(yùn)營設(shè)備維修與更新技術(shù)規(guī)范 第6部分:站臺(tái)門
- 2023年美國專利法中文
- 電氣防火防爆培訓(xùn)課件
- 彝族文化和幼兒園課程結(jié)合的研究獲獎(jiǎng)科研報(bào)告
- 空調(diào)安裝免責(zé)協(xié)議
- 湖北省襄樊市樊城區(qū)2023-2024學(xué)年數(shù)學(xué)四年級(jí)第一學(xué)期期末質(zhì)量檢測試題含答案
- 新北師大版八年級(jí)數(shù)學(xué)下冊導(dǎo)學(xué)案(全冊)
- cimatron紫藤教程系列g(shù)pp2運(yùn)行邏輯及block說明
評論
0/150
提交評論