操作系統(tǒng)教程4版1-2章ch22.3進(jìn)程及其實(shí)現(xiàn)_第1頁(yè)
操作系統(tǒng)教程4版1-2章ch22.3進(jìn)程及其實(shí)現(xiàn)_第2頁(yè)
操作系統(tǒng)教程4版1-2章ch22.3進(jìn)程及其實(shí)現(xiàn)_第3頁(yè)
操作系統(tǒng)教程4版1-2章ch22.3進(jìn)程及其實(shí)現(xiàn)_第4頁(yè)
操作系統(tǒng)教程4版1-2章ch22.3進(jìn)程及其實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2.3 進(jìn)程及其實(shí)現(xiàn)2.3.1 進(jìn)程的定義和屬性2.3.2 進(jìn)程的狀態(tài)和轉(zhuǎn)換2.3.3 進(jìn)程的描述和組成2.3.4 進(jìn)程切換與模式切換2.3.5 進(jìn)程的控制和管理2.3.1 進(jìn)程的定義和性質(zhì) 進(jìn)程是可并發(fā)執(zhí)行的程序在某個(gè)數(shù)據(jù)集合上的一次計(jì)算活動(dòng),也是操作系統(tǒng)進(jìn)行資源分配和保護(hù)的基本單位。 進(jìn)程是一個(gè)既能用來共享資源,又能描述程序并發(fā)執(zhí)行過程的一個(gè)基本單位。操作系統(tǒng)為什么要引入進(jìn)程概念?(1)原因1:刻畫系統(tǒng)的動(dòng)態(tài)性,發(fā)揮系統(tǒng)的并發(fā)性,提高資源利用率。程序是并發(fā)執(zhí)行的,即不是連續(xù)、而是走走停停的。執(zhí)行的程序不再處在封閉環(huán)境中,程序的并發(fā)執(zhí)行引起資源共享和競(jìng)爭(zhēng)問題?!俺绦颉弊陨碇皇怯?jì)算任務(wù)的指令和

2、數(shù)據(jù)的描述,是靜態(tài)概念,無法刻畫程序的并發(fā)特性。系統(tǒng)需要尋找一個(gè)能描述程序動(dòng)態(tài)執(zhí)行過程的概念,這就是進(jìn)程。操作系統(tǒng)為什么要引入進(jìn)程概念?(2)原因2:它能解決系統(tǒng)的“共享性”,正確描述程序的執(zhí)行狀態(tài)。 “可再用” 程序 “可再入” 程序 “可再入”程序具有的性質(zhì)“可再入” 程序舉例 編譯程序PP的入口:處理源程序乙P把源程序甲的信息記盤,等待磁盤完成AB源程序甲源程序乙 進(jìn)程的屬性結(jié)構(gòu)性:共享性:動(dòng)態(tài)性:獨(dú)立性:制約性:并發(fā)性:2.3.2 進(jìn)程的狀態(tài)和轉(zhuǎn)換進(jìn)程三態(tài)模型及其狀態(tài)轉(zhuǎn)換 運(yùn)行態(tài)就緒態(tài)等待態(tài)選中落選出現(xiàn)等待事件等待事件結(jié)束進(jìn)程五態(tài)模型及其轉(zhuǎn)換運(yùn)行態(tài)就緒態(tài)等待態(tài)選中落選出現(xiàn)等待事件等待事

3、件結(jié)束新建態(tài)終止態(tài)進(jìn)程的掛起 進(jìn)程為什么要有“掛起”狀態(tài)? 為了讓某些進(jìn)程暫時(shí)不參與低級(jí)調(diào)度,釋放它占有的資源,以平滑系統(tǒng)負(fù)荷的目的而需引入掛起態(tài); 進(jìn)程掛起的原因 ? 引起進(jìn)程掛起的原因多種多樣。具有掛起功能的進(jìn)程狀態(tài)及其轉(zhuǎn)換 掛起等待事件結(jié)束出現(xiàn)等待事件解除掛起掛起落選選中運(yùn)行態(tài)就緒態(tài)等待事件結(jié)束終止態(tài)新建態(tài)掛起就緒態(tài)解除掛起掛起掛起等待態(tài)等待態(tài)提交提交掛起進(jìn)程具有如下特征 掛起的進(jìn)程不能立即被執(zhí)行。 掛起進(jìn)程可能會(huì)等待事件,但所等待事件是獨(dú)立于掛起條件的,事件結(jié)束并不能導(dǎo)致進(jìn)程具備執(zhí)行條件。 進(jìn)程進(jìn)入掛起狀態(tài)是由于操作系統(tǒng)、父進(jìn)程或進(jìn)程本身阻止它的運(yùn)行。 結(jié)束進(jìn)程掛起狀態(tài)的命令只能通過操

4、作系統(tǒng)或父進(jìn)程發(fā)出。2.3.3進(jìn)程的描述和組成(1) 1進(jìn)程映象 進(jìn)程控制塊 進(jìn)程程序塊 進(jìn)程核心棧 進(jìn)程數(shù)據(jù)塊 進(jìn)程的描述和組成(2)操作系統(tǒng)中把進(jìn)程物理實(shí)體和支持進(jìn)程運(yùn)行的環(huán)境合稱為進(jìn)程上下文。當(dāng)系統(tǒng)調(diào)度新進(jìn)程占有處理器時(shí),新老進(jìn)程隨之發(fā)生上下文切換。進(jìn)程的運(yùn)行被認(rèn)為是在上下文中執(zhí)行。 進(jìn)程的描述和組成(2)進(jìn)程上下文組成用戶級(jí)上下文:系統(tǒng)級(jí)上下文:寄存器上下文:2進(jìn)程控制塊進(jìn)程控制塊P C B ,是操作系統(tǒng)用于記錄和刻劃進(jìn)程狀態(tài)及有關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。也是操作系統(tǒng)掌握進(jìn)程的唯一資料結(jié)構(gòu),它包括了進(jìn)程執(zhí)行時(shí)的情況,以及進(jìn)程讓出處理器后所處的狀態(tài)、斷點(diǎn)等信息。 進(jìn)程控制塊包含三類信息 標(biāo)識(shí)信息

5、 現(xiàn)場(chǎng)信息 控制信息3 進(jìn)程隊(duì)列及其管理(1)處于同一狀態(tài)的所有進(jìn)程的PCB鏈接在一起的數(shù)據(jù)結(jié)構(gòu)稱為進(jìn)程隊(duì)列。 同一狀態(tài)進(jìn)程的PCB組織:既可按先來先到的原則排成隊(duì)列;也可按優(yōu)先數(shù)或其它原則排成隊(duì)列。通用隊(duì)列組織方式:線性方式鏈接方式索引方式進(jìn)程隊(duì)列及其管理(2) PCB表 PCB1 0PCB2 5PCB3 0PCB4 0 PCB5 0PCB6 4運(yùn)行隊(duì)列指針 就緒隊(duì)列指針 等待隊(duì)列1指針 等待隊(duì)列2指針 PCBn 7 PCB7 0 空閑進(jìn)程隊(duì)列指針 鏈接方式運(yùn)行隊(duì)列指針 就緒表指針 等待表1指針 索引方式 PCB表 PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCBn 空閑表

6、指針 就緒索引表 等待索引表1 等待表2指針Linux進(jìn)程鏈表雙向循環(huán)鏈表進(jìn)程可運(yùn)行隊(duì)列鏈表散列鏈表等待隊(duì)列鏈表 隊(duì)列管理和狀態(tài)轉(zhuǎn)換示意圖 處理器指派提交完成超時(shí)事件1等待隊(duì)列事件2等待隊(duì)列事件n等待隊(duì)列就緒隊(duì)列等待事件1等待事件2等待事件n事件1出現(xiàn)事件2出現(xiàn)事件n出現(xiàn)2.3.4 進(jìn)程切換與CPU模式切換進(jìn)程切換是讓處于運(yùn)行態(tài)的進(jìn)程中斷運(yùn)行,讓出處理器,這時(shí)要做一次進(jìn)程上下文切換、即保存老進(jìn)程狀態(tài)而裝入被保護(hù)了的新進(jìn)程的狀態(tài),以便新進(jìn)程運(yùn)行進(jìn)程切換的步驟保存被中斷進(jìn)程的處理器現(xiàn)場(chǎng)信息修改被中斷進(jìn)程的進(jìn)程控制塊的有關(guān)信息,如進(jìn)程狀態(tài)等把被中斷進(jìn)程的進(jìn)程控制塊加入有關(guān)隊(duì)列選擇下一個(gè)占有處理器運(yùn)行

7、的進(jìn)程修改被選中進(jìn)程的進(jìn)程控制塊的有關(guān)信息根據(jù)被選中進(jìn)程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲(chǔ)保護(hù)信息根據(jù)被選中進(jìn)程恢復(fù)處理器現(xiàn)場(chǎng)調(diào)度和切換時(shí)機(jī)問題 請(qǐng)求調(diào)度的事件發(fā)生后,就會(huì)運(yùn)行低級(jí)調(diào)度程序,低級(jí)調(diào)度程序選中新的就緒進(jìn)程后,就會(huì)進(jìn)行上下文切換。實(shí)際上,由于種種原因,調(diào)度和切換并不一定能一氣呵成。 通常的做法是,由內(nèi)核置上請(qǐng)求調(diào)度標(biāo)志,延遲到上述工作完成后再進(jìn)行調(diào)度和進(jìn)程上下文切換,Linux進(jìn)程調(diào)度標(biāo)志位need-resched,Windows延遲過程調(diào)用DPC/dispatch軟件中斷。處理器模式切換 當(dāng)中斷發(fā)生時(shí),暫時(shí)中斷正在執(zhí)行的用戶進(jìn)程,把進(jìn)程從用戶狀態(tài)切換到內(nèi)核狀態(tài),去執(zhí)行操作系統(tǒng)例行程

8、序以獲得服務(wù),這就是一次模式切換, 內(nèi)核在被中斷了的進(jìn)程的上下文中對(duì)這個(gè)中斷事件作處理,即使該中斷可能不是此進(jìn)程引起的模式切換的步驟保存被中斷進(jìn)程的處理器現(xiàn)場(chǎng)信息;處理器從用戶態(tài)切換到核心態(tài),以便執(zhí)行服務(wù)程序或中斷處理程序;如果處理中斷,可根據(jù)規(guī)定的中斷級(jí)設(shè)置中斷屏蔽位;根據(jù)系統(tǒng)調(diào)用號(hào)或中斷號(hào),從系統(tǒng)調(diào)用表或中斷入口表找到服務(wù)程序或中斷處理程序地址。CPU上執(zhí)行的進(jìn)程所處活動(dòng)范圍用戶空間中,處于進(jìn)程上下文,用戶進(jìn)程在運(yùn)行,使用用戶棧。內(nèi)核空間中,處于進(jìn)程上下文,內(nèi)核代表某進(jìn)程在運(yùn)行,使用核心棧。內(nèi)核空間中,處于中斷上下文,與任何進(jìn)程無關(guān),中斷服務(wù)程序正在處理特定中斷,Intel x86未提供中

9、斷棧,借用核心棧。UNIX/Linux中上下文切換和模式切換 核心態(tài)運(yùn)行系統(tǒng)調(diào)用或中斷(隱含模式切換)模式切換用戶態(tài)運(yùn)行等待狀態(tài)就緒狀態(tài)發(fā)生事件喚醒調(diào)度進(jìn)程中斷、中斷返回允許的上下文切換切換2.3.5 進(jìn)程的控制和管理(1) 處理器管理的一個(gè)主要工作是對(duì)進(jìn)程的控制,包括:創(chuàng)建進(jìn)程、阻塞進(jìn)程、喚醒進(jìn)程、掛起進(jìn)程、激活進(jìn)程、終止進(jìn)程和撤銷進(jìn)程等。這些控制和管理功能由操作系統(tǒng)中的原語實(shí)現(xiàn)。原語是在管態(tài)下執(zhí)行、完成系統(tǒng)特定功能的過程。原語和機(jī)器指令類似,其特點(diǎn)是執(zhí)行過程中不允許被中斷,是一個(gè)不可分割的基本單位,原語的執(zhí)行是順序的而不可能是并發(fā)的。進(jìn)程的控制和管理(2) 進(jìn)程創(chuàng)建進(jìn)程撤銷進(jìn)程阻塞進(jìn)程喚醒

10、進(jìn)程掛起進(jìn)程激活1.進(jìn)程創(chuàng)建(1)進(jìn)程創(chuàng)建來源于以下事件:提交一個(gè)批處理作業(yè)。在終端上交互式的登錄。操作系統(tǒng)創(chuàng)建一個(gè)服務(wù)進(jìn)程。已存在的進(jìn)程孵化(spawn)新的進(jìn)程。 生成進(jìn)程稱父進(jìn)程(Parent Process) ,被生成進(jìn)程稱子進(jìn)程(Child Process) 、即一個(gè)父進(jìn)程可以創(chuàng)建子進(jìn)程,從而形成樹形結(jié)構(gòu)。進(jìn)程創(chuàng)建過程(1)在進(jìn)程表中增加一項(xiàng),并從PCB池中取一個(gè)空白PCB。為新進(jìn)程的進(jìn)程映像分配地址空間。為新進(jìn)程分配資源,除內(nèi)存空間外,還有其他各種資源。查找輔存,找到進(jìn)程正文段并裝到正文區(qū)。初始化進(jìn)程控制塊,為新進(jìn)程分配進(jìn)程標(biāo)識(shí)符,初始化PSW。加入就緒進(jìn)程隊(duì)列,或直接將進(jìn)程投入運(yùn)

11、行。通知操作系統(tǒng)的某些模塊,如記賬程序、性能監(jiān)控程序。進(jìn)程創(chuàng)建過程(2)Linux fork( ) 創(chuàng)建子進(jìn)程但父子進(jìn)程不共享內(nèi)容 Linux clone( ) 允許定義父子進(jìn)程共享的內(nèi)容 Linux中認(rèn)為線程就是共享上下文的進(jìn)程 進(jìn)程創(chuàng)建過程(3) Linux創(chuàng)建進(jìn)程sys_fork()和sys_clone都通過調(diào)用do_fork()函數(shù)來完成進(jìn)程的創(chuàng)建。 分配進(jìn)程控制塊task_struct的內(nèi)存和進(jìn)程所需的堆棧,并監(jiān)測(cè)是否可以增加新進(jìn)程; 拷貝當(dāng)前進(jìn)程的內(nèi)容,并對(duì)數(shù)據(jù)成員初始化;為進(jìn)程運(yùn)行做準(zhǔn)備;返回生成的新進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)(pid)。2.進(jìn)程撤銷(1)進(jìn)程撤銷的主要原因:進(jìn)程正常運(yùn)行結(jié)

12、束。執(zhí)行了非法指令。在常態(tài)下執(zhí)行了特權(quán)指令。進(jìn)程運(yùn)行時(shí)間超越了分給的最大時(shí)間段。進(jìn)程等待時(shí)間超越了設(shè)定的最大等待時(shí)間。進(jìn)程申請(qǐng)的內(nèi)存超過了系統(tǒng)能提供最大量。越界錯(cuò)誤。對(duì)共享內(nèi)存區(qū)的非法使用。算術(shù)錯(cuò)誤,如除零和操作數(shù)溢出。嚴(yán)重的輸入輸出錯(cuò)誤。操作員或操作系統(tǒng)干預(yù)。父進(jìn)程撤銷其子進(jìn)程。父進(jìn)程撤銷。操作系統(tǒng)終止。進(jìn)程撤銷(2)撤銷進(jìn)程具體步驟根據(jù)撤銷進(jìn)程標(biāo)識(shí)號(hào),從相應(yīng)隊(duì)列中找到它的PCB;將該進(jìn)程擁有的資源歸還給父進(jìn)程或操作系統(tǒng);若該進(jìn)程擁有子進(jìn)程,應(yīng)先撤銷它的所有子孫進(jìn)程,以防它們脫離控制;撤銷進(jìn)程出隊(duì),將它的PCB歸還到PCB池。3.進(jìn)程阻塞和喚醒(1) 進(jìn)程阻塞步驟: 停止進(jìn)程執(zhí)行,保存現(xiàn)場(chǎng)信息到PSW 。 修改PCB的有關(guān)內(nèi)容,如進(jìn)程狀態(tài)由運(yùn)行改為等待等。 把修改狀態(tài)后的PCB加入相應(yīng)等待進(jìn)程隊(duì)列。進(jìn)程阻塞和喚醒(2) 進(jìn)程喚醒步驟:從相應(yīng)等待進(jìn)程隊(duì)列中取出PCB。修改PCB有關(guān)信息,如進(jìn)程狀態(tài)等。把修改后PCB加入有關(guān)就緒進(jìn)程隊(duì)列。4.進(jìn)程掛

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論