版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第二章第二章 進程管理進程管理內(nèi)容提要內(nèi)容提要l 基礎(chǔ):進程的描述和控制基礎(chǔ):進程的描述和控制l 實現(xiàn):進程的同步和互斥實現(xiàn):進程的同步和互斥l 解決:幾個經(jīng)典問題解決:幾個經(jīng)典問題l 關(guān)于:進程通信、管程機制、線程關(guān)于:進程通信、管程機制、線程進程的引入進程的引入程序順序執(zhí)行程序順序執(zhí)行p早期的單道批處理系統(tǒng)中,程序的執(zhí)行方式是順早期的單道批處理系統(tǒng)中,程序的執(zhí)行方式是順序執(zhí)行:在任何時刻,機器只執(zhí)行一個操作,只序執(zhí)行:在任何時刻,機器只執(zhí)行一個操作,只有在前一個操作執(zhí)行完后,才能執(zhí)行后繼操作有在前一個操作執(zhí)行完后,才能執(zhí)行后繼操作p例:程序例:程序i i的輸入操作、計算操作和打印操作分別的
2、輸入操作、計算操作和打印操作分別用用 I Ii i、C Ci i、P Pi i表示。則順序執(zhí)行過程為:表示。則順序執(zhí)行過程為:程序順序執(zhí)行程序順序執(zhí)行p程序順序執(zhí)行的特性:程序順序執(zhí)行的特性:順序性:順序性:CPU嚴(yán)格按照程序所規(guī)定的順序執(zhí)嚴(yán)格按照程序所規(guī)定的順序執(zhí)行行封閉性:程序運行時獨占所有系統(tǒng)資源,程封閉性:程序運行時獨占所有系統(tǒng)資源,程序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響影響可再現(xiàn)性:只要程序執(zhí)行時的環(huán)境和初始條可再現(xiàn)性:只要程序執(zhí)行時的環(huán)境和初始條件相同,都將獲得相同結(jié)果。件相同,都將獲得相同結(jié)果。程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行n多道程序設(shè)計技術(shù)
3、引入后,程序在系統(tǒng)中的執(zhí)行是多道程序設(shè)計技術(shù)引入后,程序在系統(tǒng)中的執(zhí)行是并發(fā)執(zhí)行并發(fā)執(zhí)行n并發(fā)執(zhí)行是指多個程序在一個處理器上的交替執(zhí)行,并發(fā)執(zhí)行是指多個程序在一個處理器上的交替執(zhí)行,這種交替執(zhí)行在宏觀上表現(xiàn)為同時執(zhí)行。這種交替執(zhí)行在宏觀上表現(xiàn)為同時執(zhí)行。并發(fā)前:當(dāng)程序在執(zhí)行并發(fā)前:當(dāng)程序在執(zhí)行I/O時,時,CPU處于空閑狀處于空閑狀態(tài)態(tài)并發(fā)后:當(dāng)一個程序(進程)在執(zhí)行并發(fā)后:當(dāng)一個程序(進程)在執(zhí)行I/O時,時,CPU運行另一個程序(進程)。運行另一個程序(進程)。PD與與PX執(zhí)行過程的主要不同之處執(zhí)行過程的主要不同之處程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行作業(yè)作業(yè)A作業(yè)作業(yè)B開開始始開開始始輸入輸入輸入輸
4、入輸入輸入輸入輸入停停止止停停止止多道技術(shù)下作業(yè)執(zhí)行過程多道技術(shù)下作業(yè)執(zhí)行過程程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行p程序并發(fā)執(zhí)行時的特征程序并發(fā)執(zhí)行時的特征 間斷(異步)性:處理器交替執(zhí)行多個程序,間斷(異步)性:處理器交替執(zhí)行多個程序,每個程序都以走走停停的方式執(zhí)行,可能走到每個程序都以走走停停的方式執(zhí)行,可能走到中途停下來,并且程序無法預(yù)知每次執(zhí)行和暫中途停下來,并且程序無法預(yù)知每次執(zhí)行和暫停的時間長度。停的時間長度。 失去封閉性:共享資源會受其它程序的控制邏失去封閉性:共享資源會受其它程序的控制邏輯的影響輯的影響 失去可再現(xiàn)性,出現(xiàn)相互制約關(guān)系失去可再現(xiàn)性,出現(xiàn)相互制約關(guān)系程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行n
5、:=0.n:=n+1.Print n.程序程序A程序程序BK1K2S兩個程序共用變量兩個程序共用變量n程序并發(fā)執(zhí)行引發(fā)的問題程序并發(fā)執(zhí)行引發(fā)的問題n協(xié)調(diào)各程序的執(zhí)行順序協(xié)調(diào)各程序的執(zhí)行順序n多個執(zhí)行程序共享系統(tǒng)資源,程序之間可能會多個執(zhí)行程序共享系統(tǒng)資源,程序之間可能會相互影響,甚至影響輸出結(jié)果相互影響,甚至影響輸出結(jié)果n選擇哪些、多少個程序進入內(nèi)存執(zhí)行?選擇哪些、多少個程序進入內(nèi)存執(zhí)行?n內(nèi)存中的執(zhí)行程序誰先執(zhí)行,誰后執(zhí)行?內(nèi)存中的執(zhí)行程序誰先執(zhí)行,誰后執(zhí)行?n內(nèi)存如何有效分配?內(nèi)存如何有效分配?進程的引入進程的引入 多道程序設(shè)計技術(shù)引入后,程序在系統(tǒng)中的執(zhí)多道程序設(shè)計技術(shù)引入后,程序在系統(tǒng)
6、中的執(zhí)行是并發(fā)執(zhí)行。并發(fā)程序在系統(tǒng)中執(zhí)行時,和行是并發(fā)執(zhí)行。并發(fā)程序在系統(tǒng)中執(zhí)行時,和順序程序相比,失去了封閉性,并具有間斷性順序程序相比,失去了封閉性,并具有間斷性和不可再現(xiàn)性的的特征,這樣就使通常的程序和不可再現(xiàn)性的的特征,這樣就使通常的程序不能參與并發(fā)執(zhí)行(因為并發(fā)執(zhí)行的程序其結(jié)不能參與并發(fā)執(zhí)行(因為并發(fā)執(zhí)行的程序其結(jié)果是不可再現(xiàn)的),從而程序這個靜態(tài)的概念果是不可再現(xiàn)的),從而程序這個靜態(tài)的概念已不能如實地反映系統(tǒng)中的活動情況,為此,已不能如實地反映系統(tǒng)中的活動情況,為此,現(xiàn)代操作系統(tǒng)引入進程概念?,F(xiàn)代操作系統(tǒng)引入進程概念。進程的概念進程的概念l可并發(fā)執(zhí)行的程序,在一個數(shù)據(jù)集合上的運行
7、可并發(fā)執(zhí)行的程序,在一個數(shù)據(jù)集合上的運行過程過程l是申請是申請/擁有資源的基本單位擁有資源的基本單位l是處理機調(diào)度的基本單位是處理機調(diào)度的基本單位如何理解進程如何理解進程n操作級操作級:圖形窗口界面圖形窗口界面:一個窗口就是一個進程一個窗口就是一個進程n打開窗口:建立一個進程打開窗口:建立一個進程n關(guān)閉窗口:一個進程結(jié)束關(guān)閉窗口:一個進程結(jié)束字符命令界面字符命令界面:一條命令一般就是一個進程一條命令一般就是一個進程n命令行尾回車命令行尾回車:一個進程開始一個進程開始n命令執(zhí)行結(jié)束命令執(zhí)行結(jié)束(下一命令提示符出現(xiàn)下一命令提示符出現(xiàn)):一個進程結(jié)束一個進程結(jié)束n編程級:編程級:進程建立:進程建立:
8、“建立進程建立進程”函數(shù)或系統(tǒng)調(diào)用函數(shù)或系統(tǒng)調(diào)用 例如:例如:CreateProcess 創(chuàng)建一個新進程創(chuàng)建一個新進程 進程結(jié)束:進程結(jié)束:“撤消進程撤消進程”函數(shù)或系統(tǒng)調(diào)用,或者程序函數(shù)或系統(tǒng)調(diào)用,或者程序的正?;蚍钦=Y(jié)束。的正?;蚍钦=Y(jié)束。例如:例如:ExitProcess 中止一個進程中止一個進程 進程的特征進程的特征l結(jié)構(gòu)性:由程序段、相關(guān)的數(shù)據(jù)段和結(jié)構(gòu)性:由程序段、相關(guān)的數(shù)據(jù)段和PCB(進程控制塊)(進程控制塊)三部分構(gòu)成了進程的實體,三部分構(gòu)成了進程的實體,PCB是進程存在的唯一標(biāo)志是進程存在的唯一標(biāo)志l動態(tài)性:進程是進程實體的一次執(zhí)行過程;進程的動態(tài)動態(tài)性:進程是進程實體的一
9、次執(zhí)行過程;進程的動態(tài)性還表現(xiàn)在性還表現(xiàn)在“它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷而消亡而消亡”。動態(tài)性是進程最基本的特征。動態(tài)性是進程最基本的特征。l并發(fā)性:多個進程實體共存于內(nèi)存中,且能在一段時間并發(fā)性:多個進程實體共存于內(nèi)存中,且能在一段時間內(nèi)同時運行。并發(fā)性是進程最重要的特征。內(nèi)同時運行。并發(fā)性是進程最重要的特征。l獨立性:進程實體是一個能獨立運行、獨立分配資源和獨立性:進程實體是一個能獨立運行、獨立分配資源和獨立接受調(diào)度的基本單位獨立接受調(diào)度的基本單位l異步性:進程實體按異步方式運行。異步性:進程實體按異步方式運行。進程和程序的比較進程和程序的比較進
10、程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼進程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進程是程序的執(zhí)行。通常進程不可在計的集合;進程是程序的執(zhí)行。通常進程不可在計算機之間遷移;而程序通常對應(yīng)著文件、靜態(tài)和算機之間遷移;而程序通常對應(yīng)著文件、靜態(tài)和可以復(fù)制??梢詮?fù)制。進程是暫時的,程序是永久的:進程是一個狀態(tài)進程是暫時的,程序是永久的:進程是一個狀態(tài)變化的過程,程序可長久保存。變化的過程,程序可長久保存。進程與程序的組成不同:進程的組成包括程序、進程與程序的組成不同:進程的組成包括程序、數(shù)據(jù)和進程控制塊。數(shù)據(jù)和進程控制塊。進程和程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程進程和程序的對應(yīng)關(guān)系:通過多
11、次執(zhí)行,一個程序可對應(yīng)多個進程;通過調(diào)用關(guān)系,一個進程可序可對應(yīng)多個進程;通過調(diào)用關(guān)系,一個進程可被多個程序調(diào)用。被多個程序調(diào)用。引入進程帶來的問題引入進程帶來的問題l增加了空間開銷:為進程建立數(shù)據(jù)結(jié)構(gòu)增加了空間開銷:為進程建立數(shù)據(jù)結(jié)構(gòu)l額外的時間開銷:管理和協(xié)調(diào)、跟蹤、填寫和額外的時間開銷:管理和協(xié)調(diào)、跟蹤、填寫和更新有關(guān)數(shù)據(jù)結(jié)構(gòu)、切換進程、保護現(xiàn)場更新有關(guān)數(shù)據(jù)結(jié)構(gòu)、切換進程、保護現(xiàn)場l更難控制:更難控制:協(xié)調(diào)多個進程競爭和共享資源?協(xié)調(diào)多個進程競爭和共享資源?如何預(yù)防和解決多個進程因為競爭資源而出現(xiàn)故障?如何預(yù)防和解決多個進程因為競爭資源而出現(xiàn)故障?l處理機的競爭尤為突出處理機的競爭尤為突
12、出進程的結(jié)構(gòu)進程的結(jié)構(gòu)n進程由程序、數(shù)據(jù)集合和進程控制塊進程由程序、數(shù)據(jù)集合和進程控制塊(Process Control Block :PCB)三部分組)三部分組成成nPCB是進程存在的唯一標(biāo)志。創(chuàng)建進程時,創(chuàng)是進程存在的唯一標(biāo)志。創(chuàng)建進程時,創(chuàng)建建PCB;進程結(jié)束時,系統(tǒng)將撤銷其;進程結(jié)束時,系統(tǒng)將撤銷其PCB。進程控制塊(PCB)n進程控制塊(進程控制塊(PCB)進程控制塊是由操作系統(tǒng)維護的,用來記錄進程相關(guān)進程控制塊是由操作系統(tǒng)維護的,用來記錄進程相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。信息的數(shù)據(jù)結(jié)構(gòu)。在創(chuàng)建一個進程時,應(yīng)首先創(chuàng)建其進程控制塊,然后在創(chuàng)建一個進程時,應(yīng)首先創(chuàng)建其進程控制塊,然后才能根據(jù)才能根
13、據(jù)PCB中的信息對進程進行管理和控制中的信息對進程進行管理和控制PCB中包含一個進程的描述信息、控制信息以及資中包含一個進程的描述信息、控制信息以及資源信息等源信息等進程控制塊的組成進程控制塊的組成n進程標(biāo)識信息:進程的內(nèi)部和外部標(biāo)識符進程標(biāo)識信息:進程的內(nèi)部和外部標(biāo)識符n處理機狀態(tài)信息:通用寄存器值、指令指針寄存處理機狀態(tài)信息:通用寄存器值、指令指針寄存器值、處理機狀態(tài)字器值、處理機狀態(tài)字PSW值、用戶棧指針值值、用戶棧指針值n進程調(diào)度信息:進程狀態(tài)、進程優(yōu)先權(quán)、進程調(diào)進程調(diào)度信息:進程狀態(tài)、進程優(yōu)先權(quán)、進程調(diào)度的其它信息,事件度的其它信息,事件n其它信息:程序及數(shù)據(jù)地址、進程同步和通信機其
14、它信息:程序及數(shù)據(jù)地址、進程同步和通信機制、資源清單、鏈接指針制、資源清單、鏈接指針PCBPCB的組織方式的組織方式 單一隊列單一隊列n單一隊列:系統(tǒng)中所有進程通過鏈表組織成一個單一隊列:系統(tǒng)中所有進程通過鏈表組織成一個單一隊列,適用于進程數(shù)目不多的系統(tǒng)。如單一隊列,適用于進程數(shù)目不多的系統(tǒng)。如windows系統(tǒng)。系統(tǒng)。PCB1RunningPCB2ReadyPCBnBlockedPCBPCB的組織方式的組織方式 鏈表鏈表n鏈表:同一狀態(tài)的進程其鏈表:同一狀態(tài)的進程其PCB成一鏈表,多個狀成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表。態(tài)對應(yīng)多個不同的鏈表。PCB1ReadyPCB2ReadyPCBnR
15、eady就緒隊列指針PCB鏈表結(jié)構(gòu)示意圖鏈表結(jié)構(gòu)示意圖PCB的組織方式的組織方式 索引表索引表nPCB按進程狀態(tài)不同,組成不同的索引表:就緒按進程狀態(tài)不同,組成不同的索引表:就緒進程索引表、執(zhí)行進程索引表(多機系統(tǒng)),阻進程索引表、執(zhí)行進程索引表(多機系統(tǒng)),阻塞進程索引表。塞進程索引表。n系統(tǒng)分別記載各索引表的起始地址。系統(tǒng)分別記載各索引表的起始地址。PCB索引表示意圖索引表示意圖進程和進程和PCB的關(guān)系的關(guān)系l每個進程有惟一的每個進程有惟一的PCB,每個,每個PCB對應(yīng)唯一的對應(yīng)唯一的進程進程l操作系統(tǒng)依靠操作系統(tǒng)依靠PCB管理進程管理進程l利用利用PCB實現(xiàn)進程的動態(tài)并發(fā)實現(xiàn)進程的動態(tài)并
16、發(fā)lPCB是進程存在的惟一標(biāo)志是進程存在的惟一標(biāo)志進程的狀態(tài)及其相互轉(zhuǎn)換進程的狀態(tài)及其相互轉(zhuǎn)換進程的執(zhí)行軌跡進程的執(zhí)行軌跡n進程的執(zhí)行軌跡:進程執(zhí)行的指令序列,用來觀進程的執(zhí)行軌跡:進程執(zhí)行的指令序列,用來觀察處理機的運行情況。察處理機的運行情況。n例:假設(shè)內(nèi)存中有例:假設(shè)內(nèi)存中有3個進程個進程A、B、C,它們的程,它們的程序代碼已全部裝入內(nèi)存。若序代碼已全部裝入內(nèi)存。若A、B兩進程需要執(zhí)行兩進程需要執(zhí)行12條指令,條指令,C進程需要執(zhí)行進程需要執(zhí)行4條指令,且條指令,且C進程執(zhí)進程執(zhí)行到第行到第4條指令處必須等待條指令處必須等待I/O。n處理機按時間片為每個進程服務(wù),為了簡單,假處理機按時間
17、片為每個進程服務(wù),為了簡單,假設(shè)一個時間片執(zhí)行設(shè)一個時間片執(zhí)行6條指令。條指令。分派程序分派程序進程進程A進程進程B進程進程C0sabc內(nèi)存內(nèi)存程序計數(shù)器程序計數(shù)器三個進程同時駐留內(nèi)存三個進程同時駐留內(nèi)存n假設(shè)分派程序分派處理機需要依次執(zhí)行的指令序假設(shè)分派程序分派處理機需要依次執(zhí)行的指令序列為:列為:s+0,s+1,s+2,s+3,s+4,s+5n進程進程A的執(zhí)行軌跡為:的執(zhí)行軌跡為:a+0,a+1,a+2,n進程進程B的執(zhí)行軌跡為:的執(zhí)行軌跡為:b+0,b+1,b+2,n進程進程C的執(zhí)行軌跡為:的執(zhí)行軌跡為:c+0,c+1,c+2,當(dāng)它當(dāng)它執(zhí)行到執(zhí)行到c+3指令時遇到了指令時遇到了I/O指令
18、,需要釋放處理指令,需要釋放處理機,進行輸入機,進行輸入/輸出操作。輸出操作。1 a+02 a+13 a+24 a+35 a+46 a+57 s+08 s+19 s+210 s+311 s+412 s+513 b+014 b+115 b+216 b+317 b+418 b+519 s+020 s+121 s+222 s+323 s+424 s+525 c+026 c+127 c+228 c+329 s+030 s+131 s+232 s+333 s+434 s+535 a+636 a+737 a+838 a+939 a+1040 a+1141 s+042 s+143 s+244 s+345 s
19、+446 s+547 b+648 b+749 b+850 b+951 b+1052 b+11時間片到時間片到I/O請求請求時間片到時間片到時間片到時間片到時間片到時間片到兩狀態(tài)進程模型n進程的兩種狀態(tài):執(zhí)行態(tài)和未執(zhí)行態(tài)進程的兩種狀態(tài):執(zhí)行態(tài)和未執(zhí)行態(tài)執(zhí)行態(tài):執(zhí)行態(tài): 進程獲得處理機進程獲得處理機 未執(zhí)行態(tài):進程由于時間片用完或其他原因(請求未執(zhí)行態(tài):進程由于時間片用完或其他原因(請求I/O操作)而放棄處理機操作)而放棄處理機n兩狀態(tài)進程模型為:兩狀態(tài)進程模型為:未執(zhí)行未執(zhí)行執(zhí)行執(zhí)行調(diào)度調(diào)度暫停暫停進入進入退出退出未執(zhí)行態(tài)的進一步劃分n進程未執(zhí)行,有兩種情況進程未執(zhí)行,有兩種情況進程未執(zhí)行,但具
20、備執(zhí)行的條件進程未執(zhí)行,但具備執(zhí)行的條件進程由于等待某事件發(fā)生而未執(zhí)行進程由于等待某事件發(fā)生而未執(zhí)行n所以將進程未執(zhí)行態(tài)進一步分成兩個狀態(tài):就緒所以將進程未執(zhí)行態(tài)進一步分成兩個狀態(tài):就緒態(tài)和阻塞態(tài)態(tài)和阻塞態(tài)進程的三種基本狀態(tài)進程的三種基本狀態(tài)n執(zhí)行狀態(tài)執(zhí)行狀態(tài):進程占用處理機(單處理機環(huán)境下,:進程占用處理機(單處理機環(huán)境下,某一時刻僅一個進程占用處理機)。某一時刻僅一個進程占用處理機)。n就緒狀態(tài)就緒狀態(tài):進程獲得了除處理機之外的所有資源,:進程獲得了除處理機之外的所有資源,準(zhǔn)備執(zhí)行。準(zhǔn)備執(zhí)行。n阻塞狀態(tài)阻塞狀態(tài):進程等待某事件發(fā)生才能執(zhí)行(如等:進程等待某事件發(fā)生才能執(zhí)行(如等待待I/O完
21、成等)。完成等)。進程三狀態(tài)轉(zhuǎn)換模型進程三狀態(tài)轉(zhuǎn)換模型就緒就緒執(zhí)行執(zhí)行阻塞阻塞處理機調(diào)度處理機調(diào)度時間片完時間片完等待事件等待事件等待的事件發(fā)等待的事件發(fā)生生進程的創(chuàng)建n當(dāng)在一個分時系統(tǒng)中,終端用戶登錄到系統(tǒng);或當(dāng)在一個分時系統(tǒng)中,終端用戶登錄到系統(tǒng);或在一個批處理系統(tǒng)中,作業(yè)調(diào)度程序調(diào)度到某作在一個批處理系統(tǒng)中,作業(yè)調(diào)度程序調(diào)度到某作業(yè);或者正在運行中的用戶程序提出某種請求業(yè);或者正在運行中的用戶程序提出某種請求(如請求打印服務(wù));或基于應(yīng)用進程的需要或(如請求打印服務(wù));或基于應(yīng)用進程的需要或者為了開發(fā)并行性,這時都需要創(chuàng)建進程。者為了開發(fā)并行性,這時都需要創(chuàng)建進程。n當(dāng)一個新進程添加到哪
22、些正在被管理的進程隊列當(dāng)一個新進程添加到哪些正在被管理的進程隊列中去時,操作系統(tǒng)需要建立用于管理該進程的數(shù)中去時,操作系統(tǒng)需要建立用于管理該進程的數(shù)據(jù)結(jié)構(gòu)(據(jù)結(jié)構(gòu)(PCB),并在主存中為其分配地址空),并在主存中為其分配地址空間。這些行為構(gòu)成了一個新進程的創(chuàng)建過程。間。這些行為構(gòu)成了一個新進程的創(chuàng)建過程。進程的終止n當(dāng)運行中的進程運行到了最后一條指令(如批處當(dāng)運行中的進程運行到了最后一條指令(如批處理作業(yè)中的理作業(yè)中的Halt指令),或是出現(xiàn)了無法克服的指令),或是出現(xiàn)了無法克服的錯誤(如越界錯誤、算術(shù)錯誤或保護錯誤等),錯誤(如越界錯誤、算術(shù)錯誤或保護錯誤等),或是被操作系統(tǒng)所終結(jié),或是被其
23、它有終止權(quán)的或是被操作系統(tǒng)所終結(jié),或是被其它有終止權(quán)的進程所終結(jié)(父進程),它將進入終止?fàn)顟B(tài)。進程所終結(jié)(父進程),它將進入終止?fàn)顟B(tài)。進程的創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)n創(chuàng)建狀態(tài):進程已經(jīng)被創(chuàng)建,但還不具備運行條創(chuàng)建狀態(tài):進程已經(jīng)被創(chuàng)建,但還不具備運行條件件n終止?fàn)顟B(tài):因停止或取消,被操作系統(tǒng)從執(zhí)行狀終止?fàn)顟B(tài):因停止或取消,被操作系統(tǒng)從執(zhí)行狀態(tài)釋放。態(tài)釋放。五狀態(tài)進程轉(zhuǎn)換模型就緒就緒執(zhí)行執(zhí)行阻塞阻塞處理機調(diào)度處理機調(diào)度時間片完時間片完等待事件等待事件等待的事件等待的事件發(fā)生發(fā)生創(chuàng)建創(chuàng)建終止終止允許允許釋放釋放進程狀態(tài)轉(zhuǎn)換模型進程狀態(tài)轉(zhuǎn)換模型n新建新建 就緒:系統(tǒng)準(zhǔn)備好接納一個進程是,把一就緒:系統(tǒng)準(zhǔn)備好
24、接納一個進程是,把一個進程從新建態(tài)轉(zhuǎn)換到就緒態(tài)。個進程從新建態(tài)轉(zhuǎn)換到就緒態(tài)。n就緒就緒 執(zhí)行執(zhí)行 :當(dāng)處理機空閑時,將從就緒隊列:當(dāng)處理機空閑時,將從就緒隊列中選擇一個進程執(zhí)行,將處理機分派給這個進程,中選擇一個進程執(zhí)行,將處理機分派給這個進程,該進程狀態(tài)從就緒轉(zhuǎn)變?yōu)閳?zhí)行。該進程狀態(tài)從就緒轉(zhuǎn)變?yōu)閳?zhí)行。n執(zhí)行執(zhí)行 就緒:分時系統(tǒng)中,時間片用完;或優(yōu)先就緒:分時系統(tǒng)中,時間片用完;或優(yōu)先級調(diào)度中,高優(yōu)先級的進程到來,將中斷較低優(yōu)級調(diào)度中,高優(yōu)先級的進程到來,將中斷較低優(yōu)先級進程的執(zhí)行,進程從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀先級進程的執(zhí)行,進程從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài),等待下一次調(diào)度。態(tài),等待下一次調(diào)度。進程狀
25、態(tài)轉(zhuǎn)換模型進程狀態(tài)轉(zhuǎn)換模型n執(zhí)行執(zhí)行阻塞阻塞 :執(zhí)行狀態(tài)進程需要等待某事件發(fā)生。:執(zhí)行狀態(tài)進程需要等待某事件發(fā)生。通常,會因為進程需要的系統(tǒng)調(diào)用不能立即完成,通常,會因為進程需要的系統(tǒng)調(diào)用不能立即完成,如讀文件、共享虛擬內(nèi)存、等待如讀文件、共享虛擬內(nèi)存、等待I/O操作、等待另操作、等待另一進程與之通信等事件而阻塞。一進程與之通信等事件而阻塞。n執(zhí)行執(zhí)行終止:如果當(dāng)前正在運行的進程已經(jīng)完成終止:如果當(dāng)前正在運行的進程已經(jīng)完成或取消,它將被操作系統(tǒng)終止。或取消,它將被操作系統(tǒng)終止。n阻塞阻塞就緒:當(dāng)阻塞進程等待的事件發(fā)生,就轉(zhuǎn)就緒:當(dāng)阻塞進程等待的事件發(fā)生,就轉(zhuǎn)換為就緒狀態(tài)。進入就緒隊列排隊,等待
26、被調(diào)度換為就緒狀態(tài)。進入就緒隊列排隊,等待被調(diào)度執(zhí)行。執(zhí)行。問題:多個進程競爭內(nèi)存資源問題:多個進程競爭內(nèi)存資源n內(nèi)存資源緊張,如何在有限的內(nèi)存空間容納盡量內(nèi)存資源緊張,如何在有限的內(nèi)存空間容納盡量多的進程?多的進程?n無就緒進程,處理機空閑:無就緒進程,處理機空閑:I/O的速度比處理機的的速度比處理機的速度慢得多,可能出現(xiàn)全部進程阻塞等待速度慢得多,可能出現(xiàn)全部進程阻塞等待I/O。解決方法解決方法n采用交換技術(shù):換出一部分進程到外存,以騰出采用交換技術(shù):換出一部分進程到外存,以騰出內(nèi)存空間。內(nèi)存空間。n采用虛擬存儲技術(shù):每個進程只裝入一部分程序采用虛擬存儲技術(shù):每個進程只裝入一部分程序和數(shù)據(jù)
27、(存儲器管理部分)。和數(shù)據(jù)(存儲器管理部分)。交換技術(shù)(交換技術(shù)(SwappingSwapping)n將內(nèi)存中暫時不能運行的進程,或暫時不用的數(shù)將內(nèi)存中暫時不能運行的進程,或暫時不用的數(shù)據(jù)或程序,換出到外存,以騰出足夠的內(nèi)存空間,據(jù)或程序,換出到外存,以騰出足夠的內(nèi)存空間,把已具備運行條件的進程,或進程所需要的數(shù)據(jù)把已具備運行條件的進程,或進程所需要的數(shù)據(jù)和程序,換入內(nèi)存。和程序,換入內(nèi)存。進程的掛起狀態(tài)n進程被交換到外存,狀態(tài)變?yōu)閽炱馉顟B(tài)。進程被交換到外存,狀態(tài)變?yōu)閽炱馉顟B(tài)。進程掛起的原因n進程全部阻塞,處理機空閑進程全部阻塞,處理機空閑n系統(tǒng)負荷過重,內(nèi)存空間緊張系統(tǒng)負荷過重,內(nèi)存空間緊張
28、n操作系統(tǒng)的需要。操作系統(tǒng)可能需要掛起后臺進操作系統(tǒng)的需要。操作系統(tǒng)可能需要掛起后臺進程或一些服務(wù)進程,或者某些可能導(dǎo)致系統(tǒng)故障程或一些服務(wù)進程,或者某些可能導(dǎo)致系統(tǒng)故障的進程。的進程。n終端用戶的請求。終端用戶的請求。n父進程的需要。父進程的需要。被掛起進程的特征n不能立即執(zhí)行不能立即執(zhí)行n可能是等待某事件發(fā)生,若是,則阻塞條件獨立可能是等待某事件發(fā)生,若是,則阻塞條件獨立于掛起條件,即使阻塞事件發(fā)生,該進程也不能于掛起條件,即使阻塞事件發(fā)生,該進程也不能執(zhí)行執(zhí)行n使之掛起的進程為:終端用戶、其父進程、使之掛起的進程為:終端用戶、其父進程、OSn只有掛起它的進程才能使之由掛起狀態(tài)轉(zhuǎn)換為其只有
29、掛起它的進程才能使之由掛起狀態(tài)轉(zhuǎn)換為其它狀態(tài)。它狀態(tài)。掛起與阻塞問題問題1、是否只能掛起阻塞進程?、是否只能掛起阻塞進程?2、如何激活一個掛起進程?、如何激活一個掛起進程?掛起與阻塞n區(qū)分兩個概念:區(qū)分兩個概念:進程是否等待事件:阻塞與否進程是否等待事件:阻塞與否進程是否被換出內(nèi)存:掛起與否進程是否被換出內(nèi)存:掛起與否n4種狀態(tài)組合種狀態(tài)組合 就緒:進程在內(nèi)存,準(zhǔn)備執(zhí)行就緒:進程在內(nèi)存,準(zhǔn)備執(zhí)行 阻塞:進程在內(nèi)存,等待事件阻塞:進程在內(nèi)存,等待事件 就緒就緒/掛起:進程在外存,只要調(diào)入內(nèi)存即可執(zhí)掛起:進程在外存,只要調(diào)入內(nèi)存即可執(zhí)行行 阻塞阻塞/掛起:進程在外存,等待事件掛起:進程在外存,等待
30、事件具有掛起狀態(tài)的進程狀態(tài)圖具有掛起狀態(tài)的進程狀態(tài)圖具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換執(zhí)行執(zhí)行就緒就緒就緒就緒/掛起掛起阻塞阻塞/掛起掛起阻塞阻塞處理機調(diào)度處理機調(diào)度時間片完時間片完等待事件等待事件等待的事件發(fā)生等待的事件發(fā)生等待的事件發(fā)生等待的事件發(fā)生掛起掛起激活激活激活激活掛起掛起掛起掛起新建新建終止終止允許允許允許允許釋放釋放具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換n阻塞阻塞阻塞阻塞/掛起:掛起:OS通常將阻塞進程換出,以通常將阻塞進程換出,以騰出內(nèi)存空間騰出內(nèi)存空間n阻塞阻塞/掛起掛起就緒就緒/掛起:當(dāng)阻塞掛起:當(dāng)阻塞/掛起進程等待的掛起進程等待的事件發(fā)生時,可以將其轉(zhuǎn)換為就緒事件發(fā)生時,可以將其轉(zhuǎn)換為就緒
31、/掛起掛起n就緒就緒/掛起掛起就緒:就緒:OS需要調(diào)入一個進程執(zhí)行需要調(diào)入一個進程執(zhí)行n就緒就緒就緒就緒/掛起:一般,掛起:一般,OS掛起阻塞進程。但掛起阻塞進程。但有時也會掛起就緒進程,釋放足夠的內(nèi)存空間。有時也會掛起就緒進程,釋放足夠的內(nèi)存空間。具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換n阻塞阻塞/掛起掛起阻塞:當(dāng)阻塞阻塞:當(dāng)阻塞/掛起隊列中有一個進程掛起隊列中有一個進程的阻塞事件可能會很快發(fā)生,則可將一個阻塞的阻塞事件可能會很快發(fā)生,則可將一個阻塞/掛掛起進程換入內(nèi)存,變?yōu)樽枞?。起進程換入內(nèi)存,變?yōu)樽枞?。n執(zhí)行執(zhí)行就緒就緒/掛起:當(dāng)執(zhí)行進程的時間片用完時,掛起:當(dāng)執(zhí)行進程的時間片用完時,就轉(zhuǎn)換為就緒。但
32、是如果一個高優(yōu)先級的阻塞就轉(zhuǎn)換為就緒。但是如果一個高優(yōu)先級的阻塞/掛掛起進程正好變?yōu)榉亲枞麪顟B(tài),操作系統(tǒng)可以搶占起進程正好變?yōu)榉亲枞麪顟B(tài),操作系統(tǒng)可以搶占這個進程,直接將執(zhí)行進程轉(zhuǎn)換為就緒這個進程,直接將執(zhí)行進程轉(zhuǎn)換為就緒/掛起狀態(tài)。掛起狀態(tài)。進程控制進程控制兩種執(zhí)行模式n系統(tǒng)模式(又稱系統(tǒng)態(tài))、控制模式或內(nèi)核模式p具有較高的特權(quán)具有較高的特權(quán)p運行系統(tǒng)特定的指令,包括讀運行系統(tǒng)特定的指令,包括讀/寫控制寄存器的指令、寫控制寄存器的指令、基本基本I/O指令以及與存儲器管理有關(guān)的指令,及一些特指令以及與存儲器管理有關(guān)的指令,及一些特定的內(nèi)存區(qū)定的內(nèi)存區(qū)p內(nèi)核模式下的處理機及其指令、寄存器和內(nèi)存都
33、受到內(nèi)核模式下的處理機及其指令、寄存器和內(nèi)存都受到完全的控制和保護完全的控制和保護n用戶模式(又稱用戶態(tài))p具有較低的特權(quán)具有較低的特權(quán)p用戶程序一般運行在用戶模式用戶程序一般運行在用戶模式模式切換n用戶模式用戶模式系統(tǒng)模式:用戶程序執(zhí)行到一條系統(tǒng)系統(tǒng)模式:用戶程序執(zhí)行到一條系統(tǒng)調(diào)用,進入操作系統(tǒng)內(nèi)核執(zhí)行調(diào)用,進入操作系統(tǒng)內(nèi)核執(zhí)行n系統(tǒng)模式系統(tǒng)模式用戶模式:執(zhí)行完系統(tǒng)調(diào)用的功能,用戶模式:執(zhí)行完系統(tǒng)調(diào)用的功能,返回到用戶程序返回到用戶程序n特殊情況:程序執(zhí)行到結(jié)束語句時,切換到系統(tǒng)特殊情況:程序執(zhí)行到結(jié)束語句時,切換到系統(tǒng)模式,不再返回到用戶程序模式,不再返回到用戶程序操作系統(tǒng)內(nèi)核n操作系統(tǒng)的
34、核心,是基于硬件的第一層軟件擴充,操作系統(tǒng)的核心,是基于硬件的第一層軟件擴充,提供操作系統(tǒng)最基本的功能,是操作系統(tǒng)工作的提供操作系統(tǒng)最基本的功能,是操作系統(tǒng)工作的基礎(chǔ)基礎(chǔ)n現(xiàn)代操作系統(tǒng)設(shè)計中,為減少系統(tǒng)本身的開銷,現(xiàn)代操作系統(tǒng)設(shè)計中,為減少系統(tǒng)本身的開銷,往往將一些與硬件密切相關(guān)的(如中斷處理程序、往往將一些與硬件密切相關(guān)的(如中斷處理程序、設(shè)備驅(qū)動程序等)、基本的、公共的、運行頻率設(shè)備驅(qū)動程序等)、基本的、公共的、運行頻率較高的模塊(如時鐘管理、進程調(diào)度等)以及關(guān)較高的模塊(如時鐘管理、進程調(diào)度等)以及關(guān)鍵性數(shù)據(jù)結(jié)構(gòu)獨立開來,使之常駐內(nèi)存,并對它鍵性數(shù)據(jù)結(jié)構(gòu)獨立開來,使之常駐內(nèi)存,并對它們進
35、行特殊保護。通常把這一部分稱為操作系統(tǒng)們進行特殊保護。通常把這一部分稱為操作系統(tǒng)的內(nèi)核的內(nèi)核操作系統(tǒng)內(nèi)核n用戶通過系統(tǒng)調(diào)用訪問操作系統(tǒng)的功能,這些功用戶通過系統(tǒng)調(diào)用訪問操作系統(tǒng)的功能,這些功能最終都通過操作系統(tǒng)內(nèi)核實現(xiàn)能最終都通過操作系統(tǒng)內(nèi)核實現(xiàn)n不同的操作系統(tǒng)對內(nèi)核的定義和功能范圍的設(shè)定不同的操作系統(tǒng)對內(nèi)核的定義和功能范圍的設(shè)定是不同的是不同的n一般地,操作系統(tǒng)內(nèi)核的功能可以概括地劃分為一般地,操作系統(tǒng)內(nèi)核的功能可以概括地劃分為資源管理功能和支撐功能資源管理功能和支撐功能p資源管理:進程管理、存儲管理和資源管理:進程管理、存儲管理和I/O設(shè)備管理設(shè)備管理p支撐功能:中斷處理、統(tǒng)計、監(jiān)測、時鐘
36、管理、原語支撐功能:中斷處理、統(tǒng)計、監(jiān)測、時鐘管理、原語操作等操作等資源管理功能n進程管理:進程創(chuàng)建和終止、調(diào)度、狀態(tài)轉(zhuǎn)換、進程管理:進程創(chuàng)建和終止、調(diào)度、狀態(tài)轉(zhuǎn)換、同步和通信、管理同步和通信、管理PCBn存儲管理:為進程分配地址空間、對換、段存儲管理:為進程分配地址空間、對換、段/頁管頁管理理nI/O設(shè)備管理:緩存管理、為進程分配設(shè)備管理:緩存管理、為進程分配I/O通道和通道和設(shè)備設(shè)備支撐功能n中斷處理n時鐘管理n原語:原子操作n統(tǒng)計n監(jiān)測進程控制進程控制p進程控制進程控制 指系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建、指系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建、撤銷進程以及完成進程運行中的狀態(tài)轉(zhuǎn)
37、換。撤銷進程以及完成進程運行中的狀態(tài)轉(zhuǎn)換。p這些功能的實現(xiàn)由原語完成。這些功能的實現(xiàn)由原語完成。進程圖進程圖( (進程樹進程樹) )p描述進程家族關(guān)系的有向描述進程家族關(guān)系的有向圖(樹)。圖(樹)。進程樹進程樹 有什么用?有什么用?進程控制原語n創(chuàng)建與終止創(chuàng)建與終止n阻塞與喚醒阻塞與喚醒n掛起與激活掛起與激活引起創(chuàng)建進程的事件引起創(chuàng)建進程的事件n用戶登錄用戶登錄 分時系統(tǒng)中,驗證為合法的終端用戶分時系統(tǒng)中,驗證為合法的終端用戶登錄登錄n作業(yè)調(diào)度作業(yè)調(diào)度 批處理系統(tǒng)中,作業(yè)調(diào)度程序調(diào)度到批處理系統(tǒng)中,作業(yè)調(diào)度程序調(diào)度到某作業(yè)某作業(yè)n提供服務(wù)提供服務(wù) 運行中的用戶程序提出某種請求,運行中的用戶程序
38、提出某種請求,n應(yīng)用請求應(yīng)用請求 基于應(yīng)用進程的需要由其自身創(chuàng)建新基于應(yīng)用進程的需要由其自身創(chuàng)建新進程進程進程的創(chuàng)建過程進程的創(chuàng)建過程 (1) 為新進程分配一個標(biāo)識符,申請空白為新進程分配一個標(biāo)識符,申請空白PCB (2) 為新進程分配資源為新進程分配資源 :為進程的程序和數(shù)據(jù)以:為進程的程序和數(shù)據(jù)以及用戶棧分配內(nèi)存空間。若共享已有空間,應(yīng)建及用戶棧分配內(nèi)存空間。若共享已有空間,應(yīng)建立相應(yīng)的鏈接。立相應(yīng)的鏈接。 (3) 初始化進程控制塊初始化進程控制塊 :進程標(biāo)識、處理機狀態(tài):進程標(biāo)識、處理機狀態(tài)信息、進程狀態(tài)等。信息、進程狀態(tài)等。 (4) 如果進程就緒隊列能夠接納新進程,如果進程就緒隊列能夠
39、接納新進程, 便將新便將新進程插入就緒隊列。進程插入就緒隊列。引起進程終止的事件引起進程終止的事件n正常結(jié)束:正常結(jié)束:p批處理系統(tǒng)運行到結(jié)束指令;批處理系統(tǒng)運行到結(jié)束指令;p分時系統(tǒng)中交互式用戶注銷分時系統(tǒng)中交互式用戶注銷n異常結(jié)束異常結(jié)束p越界錯誤越界錯誤p保護錯保護錯p非法指令非法指令p特權(quán)指令錯特權(quán)指令錯引起進程終止的事件引起進程終止的事件p運行超時運行超時p等待超時等待超時p算術(shù)運算錯算術(shù)運算錯pI/O故障;故障;n 外界干預(yù)外界干預(yù)p操作員或操作員或OS干預(yù)干預(yù)p父進程請求父進程請求p父進程終止父進程終止 進程的終止過程進程的終止過程 (1)根據(jù)被終止進程的標(biāo)識符,從根據(jù)被終止進程
40、的標(biāo)識符,從PCB集合中檢索出該集合中檢索出該進程的進程的PCB,從中讀出該進程的狀態(tài)。,從中讀出該進程的狀態(tài)。 (2)若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程若被終止進程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進程的執(zhí)行,并置調(diào)度標(biāo)志為真,用于指示該進程被終止后的執(zhí)行,并置調(diào)度標(biāo)志為真,用于指示該進程被終止后應(yīng)重新進行調(diào)度。應(yīng)重新進行調(diào)度。 (3)若該進程還有子孫進程,還應(yīng)將其所有子孫進程予若該進程還有子孫進程,還應(yīng)將其所有子孫進程予以終止,以防他們成為不可控的進程。以終止,以防他們成為不可控的進程。 (4)將被終止進程所擁有的全部資源,或者歸還給其父將被終止進程所擁有的全部資源,或者歸還給其父進程
41、,進程, 或者歸還給系統(tǒng)。或者歸還給系統(tǒng)。 (5)將被終止進程將被終止進程(它的它的PCB)從所在隊列從所在隊列(或鏈表或鏈表)中移出。中移出。引起進程阻塞和喚醒的事件引起進程阻塞和喚醒的事件 n 請求系統(tǒng)服務(wù)請求系統(tǒng)服務(wù) 但不能立即滿足但不能立即滿足n 啟動某種操作啟動某種操作 且必須在該操作完成之后且必須在該操作完成之后 才能繼續(xù)執(zhí)行才能繼續(xù)執(zhí)行n 新數(shù)據(jù)尚未到達新數(shù)據(jù)尚未到達 相互合作的進程一方須首先獲相互合作的進程一方須首先獲 得另一方的數(shù)據(jù)才能繼續(xù)得另一方的數(shù)據(jù)才能繼續(xù)n 暫時無新工作可做暫時無新工作可做 特定功能系統(tǒng)進程當(dāng)完成任務(wù)特定功能系統(tǒng)進程當(dāng)完成任務(wù) 且暫無任務(wù)且暫無任務(wù) n
42、系統(tǒng)服務(wù)滿足系統(tǒng)服務(wù)滿足 n操作完成操作完成 n數(shù)據(jù)到達數(shù)據(jù)到達 n新任務(wù)出現(xiàn)新任務(wù)出現(xiàn)進程的阻塞和喚醒n當(dāng)出現(xiàn)阻塞事件,進程調(diào)用阻塞原語將自己阻塞。當(dāng)出現(xiàn)阻塞事件,進程調(diào)用阻塞原語將自己阻塞。并將其狀態(tài)變?yōu)椴⑵錉顟B(tài)變?yōu)椤白枞麪顟B(tài)阻塞狀態(tài)”,并進入相應(yīng)事件,并進入相應(yīng)事件的阻塞隊列的阻塞隊列n當(dāng)阻塞進程期待的事件發(fā)生,有關(guān)進程調(diào)用喚醒當(dāng)阻塞進程期待的事件發(fā)生,有關(guān)進程調(diào)用喚醒原語,將等待該事件的進程喚醒。并將其狀態(tài)變原語,將等待該事件的進程喚醒。并將其狀態(tài)變?yōu)闉椤熬途w狀態(tài)就緒狀態(tài)”,插入就緒隊列,插入就緒隊列n進程可以自己阻塞自己;而喚醒操作則由操作系進程可以自己阻塞自己;而喚醒操作則由操作
43、系統(tǒng)或其它進程來完成,進程無法自己喚醒自己。統(tǒng)或其它進程來完成,進程無法自己喚醒自己。進程阻塞過程進程阻塞過程 (1)中斷中斷CPU (2)將其運行現(xiàn)場保存在其將其運行現(xiàn)場保存在其PCB中中 (3)置進程狀態(tài)為阻塞態(tài)置進程狀態(tài)為阻塞態(tài) (4) 插入阻塞隊列插入阻塞隊列 (5)轉(zhuǎn)進程調(diào)度轉(zhuǎn)進程調(diào)度進程喚醒過程進程喚醒過程 (1)把被阻塞進程從阻塞隊列中移出把被阻塞進程從阻塞隊列中移出 (2)將其將其PCB的現(xiàn)行狀態(tài)改為就緒狀態(tài)的現(xiàn)行狀態(tài)改為就緒狀態(tài) (3) 插入就緒隊列中插入就緒隊列中進程的掛起和激活進程的掛起和激活n當(dāng)出現(xiàn)掛起事件,系統(tǒng)利用掛起原語將指定進當(dāng)出現(xiàn)掛起事件,系統(tǒng)利用掛起原語將指定
44、進程或一個阻塞進程掛起。進程從內(nèi)存換出到外程或一個阻塞進程掛起。進程從內(nèi)存換出到外存,其狀態(tài)轉(zhuǎn)換:存,其狀態(tài)轉(zhuǎn)換:p運行態(tài)運行態(tài) 就緒就緒/掛起掛起p就緒就緒 就緒就緒/掛起掛起p阻塞阻塞 阻塞阻塞/掛起掛起n當(dāng)激活事件發(fā)生,系統(tǒng)利用激活原語將指定進當(dāng)激活事件發(fā)生,系統(tǒng)利用激活原語將指定進程激活。將相應(yīng)進程從外存換入內(nèi)存,可能的程激活。將相應(yīng)進程從外存換入內(nèi)存,可能的狀態(tài)轉(zhuǎn)換:狀態(tài)轉(zhuǎn)換:p就緒就緒/掛起掛起 就緒就緒p阻塞阻塞/掛起掛起 阻塞阻塞進程切換的原因n時鐘中斷時鐘中斷p進程執(zhí)行完一個時間片進程執(zhí)行完一個時間片nI/O中斷中斷n內(nèi)存訪問出錯內(nèi)存訪問出錯p虛擬存儲中,需要的指令或數(shù)據(jù)不再
45、內(nèi)存虛擬存儲中,需要的指令或數(shù)據(jù)不再內(nèi)存n陷阱陷阱p執(zhí)行遇到錯誤執(zhí)行遇到錯誤p可能使進程轉(zhuǎn)換到終止?fàn)顟B(tài)可能使進程轉(zhuǎn)換到終止?fàn)顟B(tài)進程A切換到進程B的步驟n首先,保護進程首先,保護進程A的現(xiàn)場,將進程的現(xiàn)場,將進程A的當(dāng)前運行信的當(dāng)前運行信息,如程序執(zhí)行到的當(dāng)前位置,處理機狀態(tài)字,息,如程序執(zhí)行到的當(dāng)前位置,處理機狀態(tài)字,所有的寄存器值保存到進程所有的寄存器值保存到進程A的的PCB中中n然后,恢復(fù)進程然后,恢復(fù)進程B的現(xiàn)場。從進程的現(xiàn)場。從進程B的的PCB中獲取中獲取其執(zhí)行信息,將這些信息寫入相應(yīng)的寄存器中,其執(zhí)行信息,將這些信息寫入相應(yīng)的寄存器中,程序計數(shù)器指向進程程序計數(shù)器指向進程B將執(zhí)行的下
46、一條指令。進將執(zhí)行的下一條指令。進程程B可能第一次開始執(zhí)行,也可能是被中斷過的可能第一次開始執(zhí)行,也可能是被中斷過的進程恢復(fù)執(zhí)行。不論是哪一種情況,進程進程恢復(fù)執(zhí)行。不論是哪一種情況,進程B的執(zhí)的執(zhí)行信息都能在其行信息都能在其PCB中找到。中找到。進程切換vs模式切換n進程切換是作用于進程之間的一種操作。當(dāng)分派進程切換是作用于進程之間的一種操作。當(dāng)分派程序收回當(dāng)前進程的程序收回當(dāng)前進程的CPU并準(zhǔn)備把它分派給某個并準(zhǔn)備把它分派給某個就緒進程時,該操作將被引用。就緒進程時,該操作將被引用。n模式切換是進程內(nèi)部所引用的一種操作。當(dāng)用戶模式切換是進程內(nèi)部所引用的一種操作。當(dāng)用戶程序轉(zhuǎn)入系統(tǒng)調(diào)用,或相
47、反時,該操作將被引用。程序轉(zhuǎn)入系統(tǒng)調(diào)用,或相反時,該操作將被引用。n進程切換一定引發(fā)模式切換,反之則不然。進程切換一定引發(fā)模式切換,反之則不然。進程同步和互斥進程同步和互斥n采用多道程序設(shè)計技術(shù)的操作系統(tǒng),允許多個進程同時駐留內(nèi)存并發(fā)執(zhí)行。n如何協(xié)調(diào)多個進程對系統(tǒng)資源,如內(nèi)存空間、外部設(shè)備等的競爭和共享?n如何解決多個進程因為競爭資源而出現(xiàn)執(zhí)行結(jié)果異常,甚至導(dǎo)致系統(tǒng)不穩(wěn)定、失效等問題?例1n銀行的聯(lián)網(wǎng)儲蓄業(yè)務(wù)允許儲戶同時用儲蓄卡和存折對同一賬戶進行存取款操作,如果某儲戶同時分別在ATM機和柜臺辦理兩筆存款業(yè)務(wù),分別為1000元和2000元n從系統(tǒng)的角度看,有兩個進程將同時對儲戶余額等數(shù)據(jù)進行修
48、改。如果兩個進程同時讀出原余額(假設(shè)為5000元),兩個進程分別將最新余額修改為6000和7000分析及措施n最后,儲戶余額可能是6000,或者7000,顯然都不正確n原因:兩個進程同時修改同一數(shù)據(jù),而沒有進行有效控制n正確的方法:如果有多個進程需要同時修改某一數(shù)據(jù),系統(tǒng)必須控制,一次僅允許一個進程完成讀數(shù)據(jù),并修改數(shù)據(jù)兩件事以后,才允許別的進程對同一數(shù)據(jù)的讀和修改操作。例2n假設(shè)系統(tǒng)中有3個進程P1,P2,P3,其中P1和P2是計算進程,P3是打印進程,每當(dāng)P1或P2計算出一個結(jié)果后,將計算結(jié)果送到緩沖區(qū)中,以便P3進程從中取出數(shù)據(jù)打印n假設(shè)緩沖區(qū)被劃分為0、1、2n-1共n個單元。n有兩個
49、指針:in指針用于計算進程存放數(shù)據(jù),指向緩沖區(qū)中下一個空閑的單元,out指針用于打印進程取數(shù)據(jù),指向緩沖區(qū)中下一個將取走數(shù)據(jù)的單元例n假設(shè)某時刻,0到3號單元空閑,4到6號單元被占用,這時候P1、P2進程都準(zhǔn)備將數(shù)據(jù)送入緩沖區(qū),如圖所示 0 1 2 3 4 5 6 7 8 n-1outin被占用單元被占用單元空閑單元可能發(fā)生的情況n進程P1需要向緩沖區(qū)存儲數(shù)據(jù),并知道in指針當(dāng)前指向7號空閑緩沖單元。若這時進程P1的時間片用完,被中斷,調(diào)度程序調(diào)度進程P2執(zhí)行nP2正好也需要向緩沖區(qū)存放數(shù)據(jù),首先獲取in指針位置,同樣也是7,于是,P2將數(shù)據(jù)送入7號單元,并將in指針移動一格,指向8號單元,然
50、后繼續(xù)執(zhí)行其他的操作??赡馨l(fā)生的情況n當(dāng)進程P1再次被調(diào)度執(zhí)行時,將從上次的斷點繼續(xù)執(zhí)行,即將數(shù)據(jù)送入7號單元,并移動in指針指向8號單元,然后繼續(xù)執(zhí)行其他操作n進程P3不會發(fā)現(xiàn)上述錯誤,繼續(xù)從緩沖區(qū)取數(shù)據(jù),進行打印。顯然,進程P2的相應(yīng)計算結(jié)果不會被打印輸出分析n該例中,由于進程P1和P2共享緩沖區(qū)和位置指針,而未對這種共享進行有效控制,導(dǎo)致打印數(shù)據(jù)的丟失。n如果控制進程P1、P2互斥地訪問緩沖區(qū)和修改位置指針,將避免這種因為并發(fā)執(zhí)行而導(dǎo)致的程序執(zhí)行結(jié)果的不確定性。結(jié)論n通過上述兩個例子可見,采用多道程序并發(fā)技術(shù)的操作系統(tǒng)對諸進程的并發(fā)控制并發(fā)控制是非常重要和必要的兩種形式的制約關(guān)系兩種形式
51、的制約關(guān)系(1)間接制約關(guān)系 并發(fā)執(zhí)行的進程間由于競爭同一資源而產(chǎn)生的相互制約的關(guān)系。例如兩個進程同時爭奪打印機資源。(2)直接制約關(guān)系 并發(fā)執(zhí)行的進程間由于共同完成一項任務(wù)時而產(chǎn)生的相互制約關(guān)系。例如計算進程和打印進程之間的關(guān)系。進程的交互進程的交互n根據(jù)進程之間知道對方是否存在的程度,對進程間的交互方式進行劃分。知道程度關(guān)系一個進程對其它進程的影響潛在的控制問題進程間相互不知道對方競爭l 一個進程的結(jié)果與其他進程的活動無關(guān)l 進程的計時可能會受到影響l 互斥l 死鎖l饑餓進程間接知道對方共享合作l 一個進程的結(jié)果可能依賴于從其他進程獲得的信息l 進程的計時可能會受到影響l 互斥l 死鎖l
52、饑餓l 數(shù)據(jù)一致性進程直接知道對方通信合作l 一個進程的結(jié)果可能依賴于從其他進程獲得的信息l 進程的計時可能會受到影響l 死鎖l 饑餓并發(fā)控制 競爭資源n當(dāng)并發(fā)進程競爭使用同一資源時,它們之間就會發(fā)生沖突。n如果操作系統(tǒng)將資源分配給其中的某一個進程使用,另一個進程就必須等待,直到申請的資源可用時,由操作系統(tǒng)分配給它。n如果競爭資源的進程太多,這些進程還必須等待在一個隊列中,如阻塞隊列等n一種極端的情況是,被阻塞的進程永久得不到申請的資源而死鎖。臨界資源和臨界區(qū)n進程競爭資源首先必須解決互斥問題。某些資源必須互斥使用,如打印機、共享變量、表格、文件等。n這類資源又稱為臨界資源臨界資源。n在每個進
53、程中訪問臨界資源的那段程序簡稱臨界臨界區(qū)區(qū)。n任何時刻,只允許一個進程進入臨界區(qū),以此實現(xiàn)進程對臨界資源的互斥訪問。臨界資源和臨界區(qū)進程進入?yún)^(qū)退出區(qū)臨界區(qū)阻塞隊列喚醒互斥使用臨界資源n當(dāng)進程需要使用臨界資源時,通過獲得臨界區(qū)的使用權(quán)實現(xiàn)的。n首先,在進入?yún)^(qū)判斷是否可以進入臨界區(qū),如果可以進入,則必須設(shè)置臨界區(qū)使用標(biāo)志,阻止其它后來的進程進入臨界區(qū)。后來的進程通過查看臨界區(qū)使用標(biāo)志,知道自己不能進入臨界區(qū),就進入阻塞隊列,將自己阻塞。n當(dāng)臨界區(qū)內(nèi)的進程使用完畢,退出臨界區(qū)時,即在退出區(qū)修改臨界區(qū)使用標(biāo)志,并負責(zé)喚醒阻塞隊列中的一個進程,讓其進入臨界區(qū)?;コ馐褂门R界資源n由于同一個臨界資源在多個共
54、享它的進程中將對應(yīng)多個臨界區(qū),那么怎樣才能保證諸進程間互斥地進入臨界區(qū)呢?n這就必須保證“臨界區(qū)使用標(biāo)志”是可被系統(tǒng)中所有進程共享的全局變量,而且諸進程對該標(biāo)志的修改操作必須互斥進行。臨界區(qū)的使用原則l空閑讓進:空閑讓進:l忙則等待:忙則等待:l有限等待:有限等待:l讓權(quán)等待:讓權(quán)等待:其它進程不處于臨界區(qū),應(yīng)該使申請使其它進程不處于臨界區(qū),應(yīng)該使申請使用資源的進程進入臨界區(qū)用資源的進程進入臨界區(qū)已有進程進入臨界區(qū),其它進程不能再進入已有進程進入臨界區(qū),其它進程不能再進入等待進入臨界區(qū)的進程不能等待進入臨界區(qū)的進程不能“死等死等”當(dāng)進程不能進入臨界區(qū)時,應(yīng)立即釋放處理當(dāng)進程不能進入臨界區(qū)時,應(yīng)
55、立即釋放處理機,以免陷入機,以免陷入“忙等忙等”。競爭資源可能引起死鎖n例如,兩個進程P1、P2,競爭資源R1和R2.n假設(shè)現(xiàn)在P1已經(jīng)占用了R1,且P2占用了R2,如果此時P1申請R2,且P2申請R1。會怎么樣?n結(jié)果是P1、P2雙方都占用對方申請的資源而阻塞,誰也不會讓步地永久等待,這就是死鎖。P1P2R1R2死鎖狀態(tài)競爭資源 饑餓n假設(shè)有3個進程P1、P2、P3,每個進程都需要周期性的使用資源R。n如果當(dāng)前P1正在使用臨界資源R,P2和P3因為等待R而阻塞。n當(dāng)P1退出臨界區(qū)時,P2立即進入臨界區(qū)執(zhí)行,若P2還未退出臨界區(qū)時,P1又申請使用臨界資源R。n假設(shè)P2退出臨界區(qū)后,系統(tǒng)將R分給
56、了P1,然后當(dāng)R空閑時,又將R分配給了P2,如此反復(fù)。競爭資源 饑餓n這種情況P1、P2 都能正常執(zhí)行,而P3長時間得不到資源而饑餓。n這種情況不是死鎖,但對P3不公平,也是應(yīng)該避免的。并發(fā)控制 共同協(xié)作n通過共享進行合作的情況,包括進程間在互相并不確切知道對方的情況下進行交互。n例如:多個進程可能訪問一個共享變量、表格、文件數(shù)據(jù)庫等,進程可能使用并修改共享變量而并不涉及到其他進程,但卻知道其他進程也可能訪問同一數(shù)據(jù)。n必須確保它們對共享變量的修改是正確的,保證數(shù)據(jù)的完整性。n共享協(xié)作更強調(diào)對數(shù)據(jù)的寫操作必須互斥地進行。并發(fā)控制 共同協(xié)作n必須保證數(shù)據(jù)的一致性n一般通過事務(wù)處理來保證數(shù)據(jù)的一致
57、性,對銀行聯(lián)網(wǎng)儲蓄的例子中,可以將對儲戶余額、儲蓄總余額、當(dāng)日發(fā)生額、流水帳等數(shù)據(jù)的修改放到一個臨界區(qū)中,進入臨界區(qū)的進程必須一次性完成對這一系列數(shù)據(jù)的修改操作。n只有該進程退出臨界區(qū)以后才允許其它進程進入臨界區(qū)進行數(shù)據(jù)修改,以保證數(shù)據(jù)的一致性。并發(fā)控制 通信協(xié)作n當(dāng)進程進行通信合作時,各個進程之間需要建立連接,進程通信需要同步和協(xié)調(diào)。n進程通信的方式很多,包括消息傳遞、管道、共享存儲區(qū)等。n通過消息傳遞實現(xiàn)進程通信時,由于沒有共享資源,故無須互斥,但仍可能出現(xiàn)死鎖和饑餓。并發(fā)控制 通信協(xié)作n例如,兩個進程相互等待對方發(fā)來的數(shù)據(jù)而永久阻塞,即死鎖n又如,3個進程P1、P2、P3,其中P1不斷嘗
58、試與P2或P3通信,P2和P3又不斷嘗試與P1通信,如果P1與P2總能成功建立連接進行通信,而P3一直阻塞等待P1,這樣P3被長時間饑餓。解決進程互斥的方法n關(guān)中斷法n加鎖實現(xiàn)n使用Test-and-set指令n信號量n管程解決進程互斥的方法 關(guān)中斷法關(guān)中斷法n由于進程切換需要依賴中斷來實現(xiàn),如果屏蔽中斷,則不會出現(xiàn)進程切換n因此,為了實現(xiàn)對臨界資源的互斥使用,可以在進程進入臨界區(qū)之前,關(guān)中斷,當(dāng)進程退出臨界區(qū)時,開中斷n關(guān)中斷后,系統(tǒng)時鐘中斷也被屏蔽,處理機將不會被切換到其他進程n所以,一旦關(guān)中斷,進程就可以檢查和修改共享內(nèi)存區(qū)中的數(shù)據(jù),而不必擔(dān)心其他進程介入。解決進程互斥的方法 關(guān)中斷法關(guān)
59、中斷法 while(true) 關(guān)中斷 臨界區(qū) 開中斷 解決進程互斥的方法 關(guān)中斷法關(guān)中斷法優(yōu)點:方法簡單缺點:(1)這種方法約束條件太強,付出的代價太大(2)因為中斷被屏蔽以后,系統(tǒng)將無法響應(yīng)任何外部請求,也不會響應(yīng)當(dāng)前執(zhí)行進程的任何異常及系統(tǒng)故障,嚴(yán)重地降低了處理機性能(3)這種方法僅對單處理機系統(tǒng)有效,如果系統(tǒng)有兩個或多個共享內(nèi)存的處理機,屏蔽中斷僅僅對執(zhí)行本指令的處理機有效,其它處理機仍將繼續(xù)運行,并可以訪問共享內(nèi)存空間。解決進程互斥的方法 加鎖實現(xiàn)加鎖實現(xiàn) lock(key) 臨界區(qū) unlock(key)設(shè)key=0,表示類名為s的臨界區(qū)可用 key=1,表示類名為s的臨界區(qū)不可用
60、解決進程互斥的方法 加鎖實現(xiàn)加鎖實現(xiàn)unlock(x) x=0;lock(x) do if(x=0) x=1; return true; else return false; while(TRUE);解決進程互斥的方法 使用使用Test-Test-and-setand-set指令指令lock(x) do if(x=0) x=1; return true; else return false; while(TRUE); 該語句執(zhí)行不可中斷該語句執(zhí)行不可中斷解決進程互斥的方法 使用使用Test-Test-and-setand-set指令指令n優(yōu)點:p簡單p同時適用于單處理機系統(tǒng)和共享內(nèi)存的多處理機
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 洗滌劑的課程設(shè)計
- 家居建材行業(yè)銷售員培訓(xùn)心得
- 班級心理健康活動的設(shè)計計劃
- 【八年級下冊歷史】第1課 中華人民共和國成立 同步練習(xí)
- 農(nóng)業(yè)行業(yè)話務(wù)員工作心得
- 化工行業(yè)銷售工作總結(jié)
- 2024年秋季開學(xué)第一課教案
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- 2024年牛郎織女教案 (一)
- 2025屆武威市高三語文(上)期末聯(lián)考試卷及答案解析
- 廣東海洋大學(xué)大數(shù)據(jù)庫課程設(shè)計
- 商業(yè)發(fā)票INVOICE模板
- (完整版)食堂管理制度及流程
- 超聲波焊接作業(yè)指導(dǎo)書(共8頁)
- 某醫(yī)院后備人才梯隊建設(shè)方案
- 二年級上冊英語教案Unit6 Lesson22︱北京課改版
- 桂枝加龍骨牡蠣湯_金匱要略卷上_方劑加減變化匯總
- 電機與電氣控制技術(shù)PPT課件
- 廢棄鉆井泥漿和壓裂返排液無害化處理研究報告
- 論文-基于單片機的搶答器.doc
- 《AFM簡介實驗》ppt課件
評論
0/150
提交評論