![周國運《操作系統(tǒng)》講義[第2章2.3]_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/3691b762-a718-428c-9909-439cea191ad3/3691b762-a718-428c-9909-439cea191ad31.gif)
![周國運《操作系統(tǒng)》講義[第2章2.3]_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/3691b762-a718-428c-9909-439cea191ad3/3691b762-a718-428c-9909-439cea191ad32.gif)
![周國運《操作系統(tǒng)》講義[第2章2.3]_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/3691b762-a718-428c-9909-439cea191ad3/3691b762-a718-428c-9909-439cea191ad33.gif)
![周國運《操作系統(tǒng)》講義[第2章2.3]_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/3691b762-a718-428c-9909-439cea191ad3/3691b762-a718-428c-9909-439cea191ad34.gif)
![周國運《操作系統(tǒng)》講義[第2章2.3]_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/3691b762-a718-428c-9909-439cea191ad3/3691b762-a718-428c-9909-439cea191ad35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、2.3 進程及其實現(xiàn)進程及其實現(xiàn)2.3.1 進程的定義和屬性進程的定義和屬性2.3.2 進程的狀態(tài)和轉(zhuǎn)換進程的狀態(tài)和轉(zhuǎn)換2.3.3 進程的描述進程的描述2.3.4 進程切換與模式切換進程切換與模式切換2.3.5 進程的控制進程的控制2.3.6 實例研究:實例研究:UNIX SVR4進程管理進程管理2.3.7 實例研究:實例研究:Linux進程管理進程管理2.3.1 2.3.1 進程的定義和性質(zhì)進程的定義和性質(zhì) 進程進程(process)(process) 是一個可并發(fā)執(zhí)行的、具有是一個可并發(fā)執(zhí)行的、具有獨立功能程序的、關(guān)于某個數(shù)獨立功能程序的、關(guān)于某個數(shù)據(jù)集合的一次執(zhí)行過程據(jù)集合的一次執(zhí)行過程
2、。它是。它是操作系統(tǒng)進行資源分配和保護操作系統(tǒng)進行資源分配和保護的基本單位的基本單位 。2.3.1之之進程的屬性進程的屬性 結(jié)構(gòu)性結(jié)構(gòu)性 構(gòu)成三要素:程序塊、構(gòu)成三要素:程序塊、數(shù)據(jù)塊、進程控制塊。數(shù)據(jù)塊、進程控制塊。 動態(tài)性動態(tài)性 有生命期,其動態(tài)過有生命期,其動態(tài)過程為:創(chuàng)建程為:創(chuàng)建運行運行消亡。消亡。 獨立性獨立性 資源分配的獨立單位、資源分配的獨立單位、獨立運行單位、獨立調(diào)度單位。獨立運行單位、獨立調(diào)度單位。 并發(fā)性并發(fā)性 內(nèi)存中同時有多個進內(nèi)存中同時有多個進程,各進程并發(fā)執(zhí)行。程,各進程并發(fā)執(zhí)行。2.3.1之之進程的屬性進程的屬性 制約性(異步性制約性(異步性 ) 各進程在運行中因
3、共享資源各進程在運行中因共享資源而相互等待或互通消息,即相而相互等待或互通消息,即相互制約,因而各進程是異步進互制約,因而各進程是異步進行。行。 異步性:異步性:進程以各自獨立的、進程以各自獨立的、不可預(yù)知的速度向前推進。不可預(yù)知的速度向前推進。 共享性共享性 多個不同的進程可多個不同的進程可以共享同一個程序以共享同一個程序為什么要引入進程概念為什么要引入進程概念 1 1、刻畫系統(tǒng)的動態(tài)性,發(fā)揮系刻畫系統(tǒng)的動態(tài)性,發(fā)揮系統(tǒng)的并發(fā)性,提高資源利用率。統(tǒng)的并發(fā)性,提高資源利用率。 2 2、它能解決系統(tǒng)的它能解決系統(tǒng)的“共享性共享性”,正確描述程序的執(zhí)行狀態(tài)。正確描述程序的執(zhí)行狀態(tài)。 “可再用可再用
4、” ” 程序:程序:被調(diào)用而未被調(diào)用而未退出之前不允許再被調(diào)用的程序退出之前不允許再被調(diào)用的程序 “可再入可再入” ” 程序:程序:允許同時被允許同時被多個程序調(diào)用的程序多個程序調(diào)用的程序“可再入可再入”程序的性質(zhì)程序的性質(zhì) 1 1)其代碼在執(zhí)行中自身其代碼在執(zhí)行中自身不被改變不被改變 2 2)調(diào)用它的程序應(yīng)有各調(diào)用它的程序應(yīng)有各自的工作區(qū),或者不能約自的工作區(qū),或者不能約定存儲單元傳遞參數(shù)和存定存儲單元傳遞參數(shù)和存放數(shù)據(jù)。放數(shù)據(jù)。“可再入可再入” ” 程序舉例程序舉例 編譯程序編譯程序P P(P(P的入口的入口, ,處理處理源程源程序乙序乙) )(P(P把把源程序甲源程序甲的信息記盤等的信息
5、記盤等磁盤完成磁盤完成) )A AB B源程源程序甲序甲源程源程序乙序乙 現(xiàn)在怎樣來描述編現(xiàn)在怎樣來描述編譯程序譯程序P P的狀態(tài)呢?的狀態(tài)呢? 用進程描述,進程用進程描述,進程P P甲甲和進程和進程P P乙乙 進程是一個既可共享資進程是一個既可共享資源、又能描述程序并發(fā)執(zhí)源、又能描述程序并發(fā)執(zhí)行過程的一個基本單位行過程的一個基本單位2.3.2 2.3.2 進程的狀態(tài)和轉(zhuǎn)換進程的狀態(tài)和轉(zhuǎn)換1 1、三態(tài)模型、三態(tài)模型 一個進程從創(chuàng)建而產(chǎn)生至撤銷而消一個進程從創(chuàng)建而產(chǎn)生至撤銷而消亡的整個生命期,可用一組狀態(tài)來刻亡的整個生命期,可用一組狀態(tài)來刻畫,按進程在執(zhí)行過程中的狀況至少畫,按進程在執(zhí)行過程中的
6、狀況至少定義三種不同的進程狀態(tài):定義三種不同的進程狀態(tài):運行態(tài)運行態(tài)(runningrunning)就緒態(tài)就緒態(tài)(readyready)等待態(tài)等待態(tài)(waitwait)、)、阻塞態(tài)阻塞態(tài)(blocked)(blocked)、或或睡眠態(tài)睡眠態(tài)(sleepsleep),正在等待某個),正在等待某個事件的完成。事件的完成。1 1、進程的三態(tài)模型、進程的三態(tài)模型(2)(2)三態(tài)模型及其狀態(tài)轉(zhuǎn)換三態(tài)模型及其狀態(tài)轉(zhuǎn)換 運行運行態(tài)態(tài)就緒就緒態(tài)態(tài)等待等待態(tài)態(tài)選選中中落落選選出現(xiàn)等待事出現(xiàn)等待事件件等待事件結(jié)等待事件結(jié)束束 2 2、五態(tài)模型、五態(tài)模型新建態(tài)新建態(tài)、運行態(tài)、就緒態(tài)、運行態(tài)、就緒態(tài)、等待態(tài)、等待態(tài)、
7、終止態(tài)終止態(tài) 新建態(tài)新建態(tài)對應(yīng)進程剛被創(chuàng)建的狀對應(yīng)進程剛被創(chuàng)建的狀態(tài)態(tài)。為一個新進程創(chuàng)建必要的管。為一個新進程創(chuàng)建必要的管理信息,它并沒有被提交執(zhí)行,理信息,它并沒有被提交執(zhí)行,而是在等待操作系統(tǒng)完成創(chuàng)建進而是在等待操作系統(tǒng)完成創(chuàng)建進程的必要操作。程的必要操作。2 2、五態(tài)模型、五態(tài)模型(2)(2)終止態(tài)終止態(tài) 進程的終止,進程的終止,先等待操作系先等待操作系統(tǒng)進行善后,然后退出主存統(tǒng)進行善后,然后退出主存。 進入進入終止態(tài)終止態(tài)的進程不再執(zhí)行,的進程不再執(zhí)行,但依然臨時保留在系統(tǒng)中等待但依然臨時保留在系統(tǒng)中等待善后。一旦其他進程完成了對善后。一旦其他進程完成了對終止態(tài)進程的信息抽取之后,終止
8、態(tài)進程的信息抽取之后,系統(tǒng)將刪除該進程。系統(tǒng)將刪除該進程。 2 2、五態(tài)模型五態(tài)模型(3)(3)進程五態(tài)模型及其轉(zhuǎn)換進程五態(tài)模型及其轉(zhuǎn)換運行運行態(tài)態(tài)就緒就緒態(tài)態(tài)等待等待態(tài)態(tài)選選中中落落選選出現(xiàn)等待出現(xiàn)等待事件事件等待事件等待事件結(jié)束結(jié)束新建新建態(tài)態(tài)終止終止態(tài)態(tài)父進程結(jié)束子進程父進程結(jié)束子進程3 3、具有掛起功能系統(tǒng)的狀態(tài)、具有掛起功能系統(tǒng)的狀態(tài)及其轉(zhuǎn)換及其轉(zhuǎn)換為什么要有為什么要有“掛起掛起”狀態(tài)狀態(tài)? ? 由于進程的不斷創(chuàng)建,系統(tǒng)由于進程的不斷創(chuàng)建,系統(tǒng)資源已不能滿足進程運行的要資源已不能滿足進程運行的要求,就必須把某些進程掛起求,就必須把某些進程掛起(suspendsuspend),對換到磁
9、盤鏡像),對換到磁盤鏡像區(qū)中,暫時不參與進程調(diào)度,區(qū)中,暫時不參與進程調(diào)度,起到平滑系統(tǒng)操作負(fù)荷的目的。起到平滑系統(tǒng)操作負(fù)荷的目的。引起進程掛起的原因引起進程掛起的原因 (1)系統(tǒng)中的系統(tǒng)中的進程均處于等待狀態(tài)進程均處于等待狀態(tài),需要把一些阻塞進程對換出去,騰需要把一些阻塞進程對換出去,騰出足夠內(nèi)存裝入就緒進程運行。出足夠內(nèi)存裝入就緒進程運行。 (2)進程競爭資源,進程競爭資源,導(dǎo)致系統(tǒng)資源導(dǎo)致系統(tǒng)資源不足不足,負(fù)荷過重。,負(fù)荷過重。 (3)定期執(zhí)行的進程(如審計、監(jiān)定期執(zhí)行的進程(如審計、監(jiān)控、記賬程序)對換出去,以控、記賬程序)對換出去,以減輕減輕系統(tǒng)負(fù)荷系統(tǒng)負(fù)荷。引起進程掛起的原因引起進
10、程掛起的原因(2) (4)用戶要求掛起自己的進程用戶要求掛起自己的進程,以便進行某些調(diào)試、檢查和改正。以便進行某些調(diào)試、檢查和改正。 (5)父進程要求掛起后代進程父進程要求掛起后代進程,以進行某些檢查和改正。以進行某些檢查和改正。 (6)操作系統(tǒng)操作系統(tǒng)為改善系統(tǒng)性能為改善系統(tǒng)性能或或系統(tǒng)出現(xiàn)故障系統(tǒng)出現(xiàn)故障,需要掛起某些,需要掛起某些進程以改善系統(tǒng)性能或排除故障。進程以改善系統(tǒng)性能或排除故障。 具有掛起進程功能的進程狀態(tài)具有掛起進程功能的進程狀態(tài) 進程增加了兩個新狀態(tài):進程增加了兩個新狀態(tài): 掛起就緒態(tài)掛起就緒態(tài)(ready suspend)表明)表明進程具備運行條件但目前在二級存儲進程具備
11、運行條件但目前在二級存儲器中,當(dāng)它被對換到主存才能被調(diào)度器中,當(dāng)它被對換到主存才能被調(diào)度執(zhí)行。執(zhí)行。 掛起等待態(tài)掛起等待態(tài)(blocked suspend) 表明進程正在等待某一個事件且在二表明進程正在等待某一個事件且在二級存儲器中。級存儲器中。掛起進程具有如下特征掛起進程具有如下特征該進程該進程不能立即被執(zhí)行不能立即被執(zhí)行。掛起進程掛起進程可能會等待事件可能會等待事件,但所等待,但所等待事件是獨立于掛起條件的,事件結(jié)束事件是獨立于掛起條件的,事件結(jié)束并不能導(dǎo)致進程具備執(zhí)行條件。并不能導(dǎo)致進程具備執(zhí)行條件。進程進入掛起狀態(tài)進程進入掛起狀態(tài)是由于操作系統(tǒng)、是由于操作系統(tǒng)、父進程或進程本身阻止它的
12、運行父進程或進程本身阻止它的運行。結(jié)束進程掛起狀態(tài)結(jié)束進程掛起狀態(tài)的命令只能通過操的命令只能通過操作系統(tǒng)或父進程發(fā)出。作系統(tǒng)或父進程發(fā)出。具有掛起功能的進程狀態(tài)及其轉(zhuǎn)換具有掛起功能的進程狀態(tài)及其轉(zhuǎn)換 掛掛起起等待事件結(jié)等待事件結(jié)束束出現(xiàn)出現(xiàn)等待等待事件事件解解除除掛掛起起掛掛起起落落選選選選中中運行運行態(tài)態(tài)就緒態(tài)就緒態(tài)等待事件結(jié)等待事件結(jié)束束終止終止態(tài)態(tài)新建態(tài)新建態(tài)掛起就掛起就緒態(tài)緒態(tài)解解除除掛掛起起掛掛起起掛起等掛起等待態(tài)待態(tài)等待態(tài)等待態(tài)提提交交提提交交2.3.3 進程的描述進程的描述1、操作系統(tǒng)的控制結(jié)構(gòu)、操作系統(tǒng)的控制結(jié)構(gòu) 操作系統(tǒng)核心控制結(jié)構(gòu)是進程結(jié)構(gòu)操作系統(tǒng)核心控制結(jié)構(gòu)是進程結(jié)構(gòu),資
13、源管理的數(shù)據(jù)結(jié)構(gòu)將圍繞進程結(jié)構(gòu)資源管理的數(shù)據(jù)結(jié)構(gòu)將圍繞進程結(jié)構(gòu)展開。展開。 操作系統(tǒng)的控制表分為四類操作系統(tǒng)的控制表分為四類: 進程控制表、進程控制表、(管理進程及相關(guān)信息)(管理進程及相關(guān)信息) 存儲控制表、存儲控制表、(主輔存分配、保護、共享、(主輔存分配、保護、共享、虛存管理信息)虛存管理信息) I/O控制表、控制表、(設(shè)備通道的(設(shè)備通道的分配、狀態(tài)、數(shù)據(jù)位置信息)分配、狀態(tài)、數(shù)據(jù)位置信息)文件控制表文件控制表(在主輔存位置、狀態(tài)、屬性信息)(在主輔存位置、狀態(tài)、屬性信息)操作系統(tǒng)控制表的通用結(jié)構(gòu)操作系統(tǒng)控制表的通用結(jié)構(gòu) MemoryDevicesFilesProcessesMemor
14、y TablesI/O TablesFile TablesPrimary Process TableProcess 1Process NProcess 2Process ImageProcess 1ImageProcess NImage 2、進程的內(nèi)存映像、進程的內(nèi)存映像進程上下文概念:進程上下文概念: 操作系統(tǒng)中把操作系統(tǒng)中把進程物理實體進程物理實體和支持和支持進程進程運行運行的的環(huán)境環(huán)境合稱為進程上下文合稱為進程上下文(context)。)。進程實體進程實體+運行環(huán)境運行環(huán)境上下文切換:上下文切換: 當(dāng)系統(tǒng)調(diào)度新進程占有處理器時,當(dāng)系統(tǒng)調(diào)度新進程占有處理器時,新老進程隨之發(fā)生上下文切換。新
15、老進程隨之發(fā)生上下文切換。 進程的運行被認(rèn)為是在進程的上下進程的運行被認(rèn)為是在進程的上下文中執(zhí)行的。文中執(zhí)行的。進程上下文組成(三部分):進程上下文組成(三部分): 用戶級上下文:用戶級上下文:由用戶程序塊、用由用戶程序塊、用戶數(shù)據(jù)塊和用戶堆棧組成的戶數(shù)據(jù)塊和用戶堆棧組成的進程地址進程地址空間空間。 系統(tǒng)級上下文:系統(tǒng)級上下文:又進程控制塊、內(nèi)又進程控制塊、內(nèi)存管理信息、進程環(huán)境塊,及系統(tǒng)堆存管理信息、進程環(huán)境塊,及系統(tǒng)堆棧等組成的進程地址空間。棧等組成的進程地址空間。 寄存器上下文:寄存器上下文:由由PSW寄存器和各寄存器和各類控制寄存器、地址寄存器、通用寄類控制寄存器、地址寄存器、通用寄存
16、器組成、用戶棧指針等組成。存器組成、用戶棧指針等組成。進程映像組成的四個要素:進程映像組成的四個要素: 進程程序塊進程程序塊 進程數(shù)據(jù)塊進程數(shù)據(jù)塊進程控制塊進程控制塊 堆棧(系統(tǒng)和用戶堆棧)堆棧(系統(tǒng)和用戶堆棧)用戶進程在虛擬內(nèi)存中的組織用戶進程在虛擬內(nèi)存中的組織 進程標(biāo)識信息進程標(biāo)識信息進程現(xiàn)場信息進程現(xiàn)場信息進程控制信息進程控制信息用戶堆棧用戶堆棧用戶私有地址空間用戶私有地址空間(代碼、數(shù)據(jù))(代碼、數(shù)據(jù))進程進程控制控制塊塊共享地址空間共享地址空間 3、進程控制塊、進程控制塊 進程控制塊進程控制塊PCB(Process Control Block): 是操作系統(tǒng)用于記錄和描述進程狀態(tài)及是
17、操作系統(tǒng)用于記錄和描述進程狀態(tài)及有關(guān)信息的有關(guān)信息的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)。也是操作系統(tǒng)掌握。也是操作系統(tǒng)掌握進程的唯一資料結(jié)構(gòu),它包括了進程執(zhí)行進程的唯一資料結(jié)構(gòu),它包括了進程執(zhí)行時的情況,以及進程讓出處理器后所處的時的情況,以及進程讓出處理器后所處的狀態(tài)、斷點等信息。狀態(tài)、斷點等信息。 進程控制塊包含三類信息進程控制塊包含三類信息 標(biāo)識信息、標(biāo)識信息、 現(xiàn)場信息、現(xiàn)場信息、 控制信息控制信息3、進程控制塊、進程控制塊之一之一標(biāo)識信息標(biāo)識信息 用于唯一地用于唯一地標(biāo)識一個進程標(biāo)識一個進程,分,分由用戶使用的由用戶使用的外部標(biāo)識符外部標(biāo)識符和被系和被系統(tǒng)使用的統(tǒng)使用的內(nèi)部標(biāo)識號內(nèi)部標(biāo)識號。 常用的常
18、用的標(biāo)識信息標(biāo)識信息包括包括進程進程標(biāo)識標(biāo)識符、符、父進程父進程的的標(biāo)識符標(biāo)識符、用戶進程用戶進程名名、用戶組名用戶組名等。等。3、進程控制塊、進程控制塊之二之二現(xiàn)場信息現(xiàn)場信息 進程運行時存放在處理器現(xiàn)場中的進程運行時存放在處理器現(xiàn)場中的各種信息各種信息,進程讓出處理器時必須把,進程讓出處理器時必須把處理器現(xiàn)場信息保存到處理器現(xiàn)場信息保存到PCB中,當(dāng)該中,當(dāng)該進程重新恢復(fù)運行時也應(yīng)恢復(fù)處理器進程重新恢復(fù)運行時也應(yīng)恢復(fù)處理器現(xiàn)場?,F(xiàn)場。 現(xiàn)場信息包括現(xiàn)場信息包括通用寄存器通用寄存器內(nèi)容、內(nèi)容、控控制寄存器制寄存器內(nèi)容、內(nèi)容、用戶堆棧指針用戶堆棧指針、系統(tǒng)系統(tǒng)堆棧指針堆棧指針等。等。3、進程控
19、制塊、進程控制塊之三之三控制信息控制信息進程調(diào)度相關(guān)信息進程調(diào)度相關(guān)信息(狀態(tài)、等待事件與原因、(狀態(tài)、等待事件與原因、優(yōu)先級隊列指引元等)優(yōu)先級隊列指引元等)進程組成信息進程組成信息(正文段指針、數(shù)據(jù)段指針)(正文段指針、數(shù)據(jù)段指針)進程間通信信息進程間通信信息(消息隊列指針、互斥同步機制)(消息隊列指針、互斥同步機制)進程在二級存儲器內(nèi)的地址信息進程在二級存儲器內(nèi)的地址信息CPU資源的占用和使用信息資源的占用和使用信息(時間片余量、(時間片余量、已占已占CPU的時間、已執(zhí)行的時間和、記賬信息)的時間、已執(zhí)行的時間和、記賬信息)進程特權(quán)信息進程特權(quán)信息(內(nèi)存訪問權(quán)限、(內(nèi)存訪問權(quán)限、CPU狀
20、態(tài)權(quán)限)狀態(tài)權(quán)限)資源清單,進程所需全部資源、已經(jīng)資源清單,進程所需全部資源、已經(jīng)分得資源。分得資源。(主存資源、主存資源、I/O設(shè)備、打開文件表等)設(shè)備、打開文件表等) 4、進程隊列及管理進程隊列及管理 進程隊列進程隊列(Process Queues):處于同:處于同一狀態(tài)的所有一狀態(tài)的所有PCB鏈接在一起的數(shù)據(jù)結(jié)鏈接在一起的數(shù)據(jù)結(jié)構(gòu)稱為進程隊列。構(gòu)稱為進程隊列。 PCB排列原則排列原則:同一狀態(tài)的:同一狀態(tài)的PCB既可既可按先來先到的原則排成隊列按先來先到的原則排成隊列;也可按優(yōu)先也可按優(yōu)先數(shù)或其它原則排成隊列。數(shù)或其它原則排成隊列。 鏈接進程控制塊的方法鏈接進程控制塊的方法單向鏈接單向鏈
21、接雙向鏈接雙向鏈接4、進程隊列及管理進程隊列及管理(2)隊列標(biāo)志隊列標(biāo)志 系統(tǒng)為每個隊列設(shè)置一個隊列標(biāo)志系統(tǒng)為每個隊列設(shè)置一個隊列標(biāo)志隊列指引元隊列指引元 單向鏈接時,隊列標(biāo)志單向鏈接時,隊列標(biāo)志指引元指向指引元指向隊隊列中列中第一個進程第一個進程的隊列指引元的位置。的隊列指引元的位置。 雙向鏈接時,隊列標(biāo)志的雙向鏈接時,隊列標(biāo)志的后向指引元后向指引元指向指向隊列中隊列中第一個進程第一個進程的后向隊列指引的后向隊列指引元的位置;隊列標(biāo)志的元的位置;隊列標(biāo)志的前向指引元指向前向指引元指向隊列中隊列中最后一個進程最后一個進程的前向隊列指引元的前向隊列指引元的位置的位置 。4、進程隊列及管理、進程隊
22、列及管理(3)進程控制塊的鏈接進程控制塊的鏈接 隊列標(biāo)志隊列標(biāo)志0 0隊列標(biāo)志隊列標(biāo)志0 00 0后后向向前前向向(a a) 單向連接單向連接(b b) 雙向連接雙向連接示隊列指引元示隊列指引元進程隊列的插入和出隊進程隊列的插入和出隊隊列管理和狀態(tài)轉(zhuǎn)換示意圖:隊列管理和狀態(tài)轉(zhuǎn)換示意圖: 處理處理器器指派指派提交提交完成完成超時超時事件事件1等待隊列等待隊列事件事件2等待隊列等待隊列事件事件n等待隊列等待隊列就緒隊列就緒隊列。等待事件等待事件1等待事件等待事件2等待事件等待事件n事件事件1出現(xiàn)出現(xiàn)事件事件2出現(xiàn)出現(xiàn)事件事件n出現(xiàn)出現(xiàn)入隊入隊出隊出隊隊列管理隊列管理4、進程隊列管理之、進程隊列管理
23、之表格法組織表格法組織PCB 單表法:單表法:所有進程的所有進程的PCB都都組織在一個線性表中,進程調(diào)組織在一個線性表中,進程調(diào)度時需要查找整個度時需要查找整個PCB表。表。 多表法:多表法:把相同狀態(tài)進程的把相同狀態(tài)進程的PCB組織在一個線性表中,系組織在一個線性表中,系統(tǒng)有多個線性表,這樣可縮短統(tǒng)有多個線性表,這樣可縮短查表時間。查表時間。2.3.4 進程切換與進程切換與CPU模式切換模式切換1、進程上下文切換、進程上下文切換進程上下文切換的概念:進程上下文切換的概念: 進程切換是讓處于運行態(tài)的進進程切換是讓處于運行態(tài)的進程中斷運行,讓出處理器,這時程中斷運行,讓出處理器,這時要做一次進程
24、上下文切換、即保要做一次進程上下文切換、即保存老進程狀態(tài)而裝入被保護了的存老進程狀態(tài)而裝入被保護了的新進程的狀態(tài),以便新進程運行。新進程的狀態(tài),以便新進程運行。 2.3.4 之之-進程上下文切換(進程上下文切換(2)進程上下文切換的起因:進程上下文切換的起因:進程時間片用完進入就緒態(tài)進程時間片用完進入就緒態(tài)進程進入等待態(tài)進程進入等待態(tài)進程完成系統(tǒng)調(diào)用返回用戶態(tài)、進程完成系統(tǒng)調(diào)用返回用戶態(tài)、但不是最有資格獲得但不是最有資格獲得CPU內(nèi)核完成中斷處理,進程返回用內(nèi)核完成中斷處理,進程返回用戶態(tài)但不是最有資格獲得戶態(tài)但不是最有資格獲得CPU1) 進程執(zhí)行結(jié)束進程執(zhí)行結(jié)束 (3與與4有高優(yōu)先級進程就緒
25、)有高優(yōu)先級進程就緒)2.3.4 之之-進程上下文切換(進程上下文切換(3)進程上下文切換步驟:進程上下文切換步驟: 保存被切換進程的處理器現(xiàn)場信息保存被切換進程的處理器現(xiàn)場信息 修改被中斷進程的進程控制塊的有關(guān)信息,修改被中斷進程的進程控制塊的有關(guān)信息,如進程狀態(tài)等如進程狀態(tài)等 把被中斷進程的進程控制塊加入有關(guān)隊列把被中斷進程的進程控制塊加入有關(guān)隊列 選擇下一個占有處理器運行的進程選擇下一個占有處理器運行的進程 修改被選中進程的進程控制塊的有關(guān)信息修改被選中進程的進程控制塊的有關(guān)信息 根據(jù)被選中進程設(shè)置操作系統(tǒng)用到的地址根據(jù)被選中進程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲保護信息轉(zhuǎn)換和存儲保護信息
26、 根據(jù)被選中進程恢復(fù)處理器現(xiàn)場根據(jù)被選中進程恢復(fù)處理器現(xiàn)場2、CPU模式切換模式切換 用戶態(tài)到核心態(tài)、或者核心態(tài)到用戶態(tài)用戶態(tài)到核心態(tài)、或者核心態(tài)到用戶態(tài)的轉(zhuǎn)變,都是的轉(zhuǎn)變,都是CPU模式的切換。模式的切換。 如如當(dāng)中斷發(fā)生時,暫時中斷正在執(zhí)行的當(dāng)中斷發(fā)生時,暫時中斷正在執(zhí)行的用戶進程,把進程從用戶狀態(tài)切換到核心狀用戶進程,把進程從用戶狀態(tài)切換到核心狀態(tài),去執(zhí)行操作系統(tǒng)例行程序以獲得服務(wù),態(tài),去執(zhí)行操作系統(tǒng)例行程序以獲得服務(wù),這就是一次模式切換。這就是一次模式切換。 中斷事件運行的環(huán)境:中斷事件運行的環(huán)境: 內(nèi)核(內(nèi)核(例行程序例行程序)在被中斷了的進程的在被中斷了的進程的上下文中對這個中斷事
27、件作處理上下文中對這個中斷事件作處理,即使該中,即使該中斷可能不是此進程引起的。斷可能不是此進程引起的。2、CPU模式切換模式切換(2)模式切換的步驟:模式切換的步驟: 保存被中斷進程的處理器現(xiàn)保存被中斷進程的處理器現(xiàn)場信息。場信息。 根據(jù)中斷號置程序計數(shù)器根據(jù)中斷號置程序計數(shù)器 把用戶狀態(tài)切換到內(nèi)核狀態(tài),把用戶狀態(tài)切換到內(nèi)核狀態(tài),以便執(zhí)行中斷處理程序。以便執(zhí)行中斷處理程序。 對于對于Intel系列,其方法為改變系列,其方法為改變CS段的請求特權(quán)級段的請求特權(quán)級RPL,通過中斷門進入核心態(tài)執(zhí)行系統(tǒng)服務(wù)程序。,通過中斷門進入核心態(tài)執(zhí)行系統(tǒng)服務(wù)程序。3、進程上下文切換、進程上下文切換與與CPU模式
28、切換模式切換二者對比二者對比 模式切換不同于進程切換,模式切換不同于進程切換,它并不引起進程狀態(tài)變化,也不它并不引起進程狀態(tài)變化,也不一定引起進程的切換,在完成了一定引起進程的切換,在完成了中斷調(diào)用之后,完全可以再通過中斷調(diào)用之后,完全可以再通過一次逆向的模式切換來繼續(xù)執(zhí)行一次逆向的模式切換來繼續(xù)執(zhí)行用戶進程。用戶進程。 3、進程上下文切換、進程上下文切換與模式切換(與模式切換(2) 兩類進程:兩類進程:系統(tǒng)進程和用戶進程,系統(tǒng)進程和用戶進程,系統(tǒng)進程在核心態(tài)下執(zhí)行操作系統(tǒng)代系統(tǒng)進程在核心態(tài)下執(zhí)行操作系統(tǒng)代碼碼,用戶進程在用戶態(tài)下執(zhí)行用戶程用戶進程在用戶態(tài)下執(zhí)行用戶程序序。 用戶進程因中斷和系
29、統(tǒng)調(diào)用進入內(nèi)用戶進程因中斷和系統(tǒng)調(diào)用進入內(nèi)核態(tài),系統(tǒng)進程開始執(zhí)行,兩個進程核態(tài),系統(tǒng)進程開始執(zhí)行,兩個進程使用同一個使用同一個PCB,實質(zhì)上是一個進程。,實質(zhì)上是一個進程。但所執(zhí)行的程序不同,映射到不同物但所執(zhí)行的程序不同,映射到不同物理地址空間、使用不同堆棧。理地址空間、使用不同堆棧。3、進程上下文切換與模式切換、進程上下文切換與模式切換(3) 核心態(tài)核心態(tài)運行運行系統(tǒng)調(diào)系統(tǒng)調(diào)用或中用或中斷斷( (含模含模式切換式切換) )用戶態(tài)用戶態(tài)運行運行等待等待狀態(tài)狀態(tài)就緒就緒狀態(tài)狀態(tài)發(fā)生發(fā)生事件事件喚醒喚醒調(diào)度調(diào)度進程進程中斷、中中斷、中斷返回斷返回允許進程允許進程切換切換模式模式切換切換運行狀態(tài)運
30、行狀態(tài)2.3.5 進程的控制進程的控制進程控制的內(nèi)容:進程控制的內(nèi)容: 處理器管理的一個主要工作是對處理器管理的一個主要工作是對進程的控制,包括:創(chuàng)建進程、阻進程的控制,包括:創(chuàng)建進程、阻塞進程、喚醒進程、掛起進程、激塞進程、喚醒進程、掛起進程、激活進程、終止進程和撤銷進程等?;钸M程、終止進程和撤銷進程等。進程控制的手段:進程控制的手段: 進程的控制和管理功能是由操作進程的控制和管理功能是由操作系統(tǒng)中的原語來實現(xiàn)的。系統(tǒng)中的原語來實現(xiàn)的。 2.3.5 進程的控制進程的控制之之原語原語 原語原語(Primitive):是在管態(tài)下執(zhí)行、是在管態(tài)下執(zhí)行、完成系統(tǒng)特定功能的過程完成系統(tǒng)特定功能的過程。
31、是一種函數(shù)。是一種函數(shù) 原語的特點:原語的特點:原語和機器指令類似,原語和機器指令類似,其特點是執(zhí)行過程中不允許被中斷,是其特點是執(zhí)行過程中不允許被中斷,是一個不可分割的基本單位,原語的執(zhí)行一個不可分割的基本單位,原語的執(zhí)行是順序的而不可能是并發(fā)的。是順序的而不可能是并發(fā)的。 原語的實現(xiàn)方法:原語的實現(xiàn)方法:是以系統(tǒng)調(diào)用方式是以系統(tǒng)調(diào)用方式提供原語接口,且采用屏蔽中斷的方式提供原語接口,且采用屏蔽中斷的方式來實現(xiàn)原語功能,以保證原語操作不被來實現(xiàn)原語功能,以保證原語操作不被打斷的特性。打斷的特性。原語(原語(2)原語與系統(tǒng)調(diào)用比較原語與系統(tǒng)調(diào)用比較調(diào)用形式:調(diào)用形式:均使用訪管指令實現(xiàn)均使用訪
32、管指令實現(xiàn)實現(xiàn)方法:實現(xiàn)方法:原語由內(nèi)核實現(xiàn),系統(tǒng)調(diào)原語由內(nèi)核實現(xiàn),系統(tǒng)調(diào)用由系統(tǒng)進程或系統(tǒng)服務(wù)器實現(xiàn)用由系統(tǒng)進程或系統(tǒng)服務(wù)器實現(xiàn)中斷性:中斷性:系統(tǒng)調(diào)用在運行中可被中斷系統(tǒng)調(diào)用在運行中可被中斷執(zhí)行的并發(fā)性:原語不允許并發(fā)執(zhí)行執(zhí)行的并發(fā)性:原語不允許并發(fā)執(zhí)行1)提供使用關(guān)系:原語提供使用關(guān)系:原語系統(tǒng)進程或系統(tǒng)服務(wù),系統(tǒng)進程或系統(tǒng)服務(wù),拿系統(tǒng)調(diào)用拿系統(tǒng)調(diào)用系統(tǒng)程序系統(tǒng)程序用戶應(yīng)用程序用戶應(yīng)用程序常用的進程控制原語常用的進程控制原語建立進程原語建立進程原語撤消進程原語撤消進程原語調(diào)度進程原語調(diào)度進程原語阻塞進程原語阻塞進程原語喚醒進程原語喚醒進程原語掛起進程原語掛起進程原語解除掛起進程原語解除掛
33、起進程原語1) 改變優(yōu)先級數(shù)原語改變優(yōu)先級數(shù)原語2.3.5 之一之一進程的創(chuàng)建進程的創(chuàng)建1、進程創(chuàng)建的起因事件、進程創(chuàng)建的起因事件 提交一個批處理作業(yè)。提交一個批處理作業(yè)。 在終端上交互式的登錄。在終端上交互式的登錄。 操作系統(tǒng)創(chuàng)建一個服務(wù)進程。操作系統(tǒng)創(chuàng)建一個服務(wù)進程。 存在的進程創(chuàng)建(孵化存在的進程創(chuàng)建(孵化spawn)新的進)新的進程。程。其關(guān)系為父子進程關(guān)系其關(guān)系為父子進程關(guān)系 進程的創(chuàng)建者:進程的創(chuàng)建者:進程只能被父進程進程只能被父進程或祖先進程創(chuàng)建。父進程可以是某個或祖先進程創(chuàng)建。父進程可以是某個任務(wù)的,也可以是操作系統(tǒng)的。任務(wù)的,也可以是操作系統(tǒng)的。2、父子進程、父子進程父子進程
34、:父子進程: 生成進程稱父進程生成進程稱父進程(Parent Process),被生成進程稱子進程被生成進程稱子進程(Child Process) ,一,一個父進程可以創(chuàng)建多個子進程,從而形個父進程可以創(chuàng)建多個子進程,從而形成樹形結(jié)構(gòu)。成樹形結(jié)構(gòu)。父子進程關(guān)系:父子進程關(guān)系:子進程繼承父進程的全部資源子進程繼承父進程的全部資源父子進程通信協(xié)作父子進程通信協(xié)作1) 子進程結(jié)束時父進程要做善后處理子進程結(jié)束時父進程要做善后處理3、進程的創(chuàng)建過程進程的創(chuàng)建過程(1) 在進程表中增加一項,并從在進程表中增加一項,并從PCB池中申請一個池中申請一個空白空白PCB。 為新進程的進程映像分配地址空間。傳遞環(huán)
35、境為新進程的進程映像分配地址空間。傳遞環(huán)境變量,構(gòu)造共享地址空間。變量,構(gòu)造共享地址空間。 為新進程分配資源,除內(nèi)存空間外,還有其他為新進程分配資源,除內(nèi)存空間外,還有其他各種資源。各種資源。 查找輔存,找到進程正文段并裝到正文區(qū)。查找輔存,找到進程正文段并裝到正文區(qū)。 初始化進程控制塊(狀態(tài)、初始化進程控制塊(狀態(tài)、PSW、棧等),為、棧等),為新進程分配進程標(biāo)識符。新進程分配進程標(biāo)識符。 加入就緒進程隊列,或直接將進程投入運行。加入就緒進程隊列,或直接將進程投入運行。 通知操作系統(tǒng)的某些模塊,如記賬程序、性能通知操作系統(tǒng)的某些模塊,如記賬程序、性能監(jiān)控程序。監(jiān)控程序。3、進程創(chuàng)建函數(shù)、進程
36、創(chuàng)建函數(shù)創(chuàng)建進程所用函數(shù):創(chuàng)建進程所用函數(shù): (1)Windows 2000/XP創(chuàng)建:用創(chuàng)建:用CreateProcess( ) 。(參考實驗二)。(參考實驗二)終止:終止:用用ExitProcess() 或或TerminateProcess() (2)Linux 用用 fork( )可創(chuàng)建子進程,但父子進程不共享可創(chuàng)建子進程,但父子進程不共享內(nèi)容內(nèi)容 用用clone( ) 允許定義父子進程共享的內(nèi)容允許定義父子進程共享的內(nèi)容 Linux中認(rèn)為線程就是共享上下文的進程中認(rèn)為線程就是共享上下文的進程 創(chuàng)建進程原語示例創(chuàng)建進程原語示例int Creat(n,s0,k0,m0,r0)I=Get N
37、ew Internal Name(n);Id(I)=n;Priority(I)=k0;Cpustate(I)=s0;Main Store(I)=m0;Resources(I)=r0;Status(I)=Readys;Parent(I)=*;Set Accounting Data;Insert(RL,I);return I;現(xiàn)場狀態(tài)現(xiàn)場狀態(tài)查找外部名,查找外部名,返回標(biāo)識號返回標(biāo)識號建立記賬信息建立記賬信息參考實驗書參考實驗書P9、P122.3.5 之二之二進程的阻塞和喚醒進程的阻塞和喚醒 進程的阻塞:進程的阻塞:進程讓出進程讓出CPU,去等待一,去等待一個事件。如等待資源、等待個事件。如等待資
38、源、等待I/O完成、等待完成、等待一個事件發(fā)生等。一個事件發(fā)生等。 進程使用原語將自己阻塞。進程阻塞是自進程使用原語將自己阻塞。進程阻塞是自主行為,是同步事件。主行為,是同步事件。 進程的喚醒:進程的喚醒:當(dāng)一個等待事件結(jié)束時會當(dāng)一個等待事件結(jié)束時會產(chǎn)生一個中斷,從而激活操作系統(tǒng),在系產(chǎn)生一個中斷,從而激活操作系統(tǒng),在系統(tǒng)的控制下將被阻塞的進程喚醒。如統(tǒng)的控制下將被阻塞的進程喚醒。如I/O操操作結(jié)束、某個資源可用、期待的事件出現(xiàn)作結(jié)束、某個資源可用、期待的事件出現(xiàn)等。等。2.3.5 之二之二進程的阻塞和喚醒進程的阻塞和喚醒 進程的阻塞是自主行為,是同步事件進程的阻塞是自主行為,是同步事件 進程
39、阻塞步驟:進程阻塞步驟: 停止進程執(zhí)行,保存現(xiàn)場信息到停止進程執(zhí)行,保存現(xiàn)場信息到PCB。 修改修改PCB的有關(guān)內(nèi)容,如狀態(tài)由運行改為等的有關(guān)內(nèi)容,如狀態(tài)由運行改為等待等。待等。 把修改狀態(tài)后的把修改狀態(tài)后的PCB加入相應(yīng)等待進程隊列。加入相應(yīng)等待進程隊列。 進程喚醒步驟:進程喚醒步驟: 從相應(yīng)等待進程隊列中取出從相應(yīng)等待進程隊列中取出PCB 修改修改PCB有關(guān)信息,如進程狀態(tài)等有關(guān)信息,如進程狀態(tài)等 把修改后把修改后PCB加入有關(guān)就緒進程隊列加入有關(guān)就緒進程隊列進程的阻塞和喚醒相關(guān)進程的阻塞和喚醒相關(guān)原語 Linux中主要有:中主要有:Sleep()Pause()Wait()Kill() Windows 2000/XP主要有:主要有:SuspendThread()ResumeThread() 是對線程進行操作是對線程進行操作 2.3
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度預(yù)算與財務(wù)目標(biāo)設(shè)定計劃
- 系列美術(shù)創(chuàng)作主題教案計劃
- 打破部門壁壘的協(xié)同計劃
- 電子政務(wù):管理信息化整合之道
- 第五章+第1節(jié)《透鏡》教學(xué)設(shè)計 -2023-2024學(xué)年人教版物理八年級上學(xué)期
- 第二單元第9課《記錄校園生活》教學(xué)設(shè)計 2023-2024學(xué)年青島版(2019)初中信息技術(shù)第二冊
- 2025年山東貨運從業(yè)資格模擬考試題app
- 2025年太原貨運從業(yè)資格證考試題技巧
- 2025年鄭州貨運資格證考試真題
- 2025年高中化學(xué)必修二核心框圖和內(nèi)容結(jié)構(gòu)預(yù)復(fù)習(xí)
- 2025年度事業(yè)單位招聘考試公共基礎(chǔ)知識模擬試卷及答案(共四套)
- 2024年海東市第二人民醫(yī)院自主招聘專業(yè)技術(shù)人員筆試真題
- 2025年江西陶瓷工藝美術(shù)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫1套
- 《計算機基礎(chǔ)與應(yīng)用(Office 和 WPS Office )》課件 項目二?計算機操作系統(tǒng)配置與應(yīng)用
- 2025年湖南電氣職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 混凝土拌合站拌合運輸工程合同
- 機床操作與數(shù)控編程作業(yè)指導(dǎo)書
- 2025云南昆明空港投資開發(fā)集團招聘7人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級下冊第二單元百分?jǐn)?shù)(二)單元檢測(含答案)
- 人教版 八年級英語下冊 Unit 2 單元綜合測試卷(2025年春)
- 湖北省武漢市江漢區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
評論
0/150
提交評論