進(jìn)程的描述與控制(part2)_第1頁
進(jìn)程的描述與控制(part2)_第2頁
進(jìn)程的描述與控制(part2)_第3頁
進(jìn)程的描述與控制(part2)_第4頁
進(jìn)程的描述與控制(part2)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 1 第二章第二章 進(jìn)程管理進(jìn)程管理 2.1 2.1 前驅(qū)圖和程序執(zhí)行前驅(qū)圖和程序執(zhí)行 2.2 2.2 進(jìn)程進(jìn)程 的描述的描述 2.3 2.3 進(jìn)程控制進(jìn)程控制 2.4 2.4 進(jìn)程同步進(jìn)程同步 2.5 2.5 經(jīng)典進(jìn)程的同步問題經(jīng)典進(jìn)程的同步問題 2.6 2.6 進(jìn)程通信進(jìn)程通信 2.7 2.7 線程的基本概念線程的基本概念 2.8 2.8 線程的實現(xiàn)線程的實現(xiàn) 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Comp

2、uter Science 2 1. 程序順序執(zhí)行時的特征程序順序執(zhí)行時的特征 (1) 順序性: (2) 封閉性: (3) 可再現(xiàn)性: 2. 程序并發(fā)執(zhí)行時的特征程序并發(fā)執(zhí)行時的特征 1) 間斷性 2) 失去封閉性 3) 不可再現(xiàn)性 u 簡單回顧簡單回顧 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 3 程序與進(jìn)程之間的區(qū)別程序與進(jìn)程之間的區(qū)別 進(jìn)程更能真實地描述進(jìn)程更能真實地描述并發(fā)并發(fā),而程序不能,而程序不能 進(jìn)程是由進(jìn)程是由程序,數(shù)據(jù)和控制塊程序,數(shù)據(jù)和控制塊三部分組成的三部分組成的 程序是靜態(tài)的,進(jìn)程是程

3、序是靜態(tài)的,進(jìn)程是動態(tài)動態(tài)的的 進(jìn)程有進(jìn)程有生命周期生命周期,有誕生有消亡,短暫的;而程序,有誕生有消亡,短暫的;而程序 是相對長久的是相對長久的 一個程序可對應(yīng)一個程序可對應(yīng)多個多個進(jìn)程,反之亦然進(jìn)程,反之亦然 進(jìn)程具有進(jìn)程具有創(chuàng)建其他進(jìn)程創(chuàng)建其他進(jìn)程的功能,而程序沒有的功能,而程序沒有 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 4 較典型的進(jìn)程定義有:較典型的進(jìn)程定義有: (1) 進(jìn)程是程序的一次執(zhí)行。進(jìn)程是程序的一次執(zhí)行。 (2) 進(jìn)程是一個程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時所進(jìn)程是一個程序及其數(shù)據(jù)在處

4、理機(jī)上順序執(zhí)行時所 發(fā)生的活動。發(fā)生的活動。 (3) 進(jìn)程是程序在一個數(shù)據(jù)集合上運行的過程,它是系進(jìn)程是程序在一個數(shù)據(jù)集合上運行的過程,它是系 統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。 在引入了進(jìn)程實體的概念后,我們可以把在引入了進(jìn)程實體的概念后,我們可以把傳統(tǒng)傳統(tǒng)OS中的中的 進(jìn)程定義進(jìn)程定義為:為:“進(jìn)程是進(jìn)程實體的運行過程,是系統(tǒng)進(jìn)行進(jìn)程是進(jìn)程實體的運行過程,是系統(tǒng)進(jìn)行 資源分配和調(diào)度的一個獨立單位資源分配和調(diào)度的一個獨立單位”。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Scienc

5、e 5 2. 進(jìn)程的三種基本狀態(tài)進(jìn)程的三種基本狀態(tài) 1)執(zhí)行執(zhí)行(Running)狀態(tài)狀態(tài) 2) 就緒狀態(tài)就緒狀態(tài) 3) 阻塞狀態(tài)阻塞狀態(tài) 圖 2-5 進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換 就緒就緒 就緒就緒 阻塞阻塞執(zhí)行執(zhí)行 I/O完成 I/O請求 進(jìn)程調(diào)度 時間片完 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 6 增加增加: : 創(chuàng)建狀態(tài),終止?fàn)顟B(tài)創(chuàng)建狀態(tài),終止?fàn)顟B(tài) 創(chuàng)建創(chuàng)建( (新新new)new)狀態(tài)狀態(tài) OS OS 已完成為創(chuàng)建一進(jìn)程所必要的工作已完成為創(chuàng)建一進(jìn)程所必要的工作 已構(gòu)造了進(jìn)程標(biāo)識符已構(gòu)造了進(jìn)程標(biāo)

6、識符 已創(chuàng)建了管理進(jìn)程所需的表格已創(chuàng)建了管理進(jìn)程所需的表格 但還沒有允許執(zhí)行該進(jìn)程但還沒有允許執(zhí)行該進(jìn)程 ( (尚未同意尚未同意) ) 因為資源有限因為資源有限 終止(退出終止(退出exit)exit)狀態(tài)狀態(tài) 中止后進(jìn)程移入該狀態(tài)中止后進(jìn)程移入該狀態(tài) 它不再有執(zhí)行資格它不再有執(zhí)行資格 表格和其它信息暫時由輔助程序保留表格和其它信息暫時由輔助程序保留 一旦其他進(jìn)程完成了對終止態(tài)進(jìn)程的信息一旦其他進(jìn)程完成了對終止態(tài)進(jìn)程的信息 抽取之后,系統(tǒng)將刪除該進(jìn)程。抽取之后,系統(tǒng)將刪除該進(jìn)程。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer

7、Science 7 原因: (1)終端用戶的請求:修改程序 (2)父進(jìn)程請求:對子進(jìn)程的修改等 (3)負(fù)荷調(diào)節(jié)的需要:資源不足 (4)操作系統(tǒng)的需要:檢查資源利用情況 2.2.3. 掛起操作和進(jìn)程狀態(tài)的轉(zhuǎn)換掛起操作和進(jìn)程狀態(tài)的轉(zhuǎn)換 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 8 2.進(jìn)程狀態(tài)的轉(zhuǎn)換進(jìn)程狀態(tài)的轉(zhuǎn)換 (1) 活動就緒活動就緒靜止就緒。靜止就緒。 (2) 活動阻塞活動阻塞靜止阻塞。靜止阻塞。 (3) 靜止就緒靜止就緒活動就緒?;顒泳途w。 (4) 靜止阻塞靜止阻塞活動阻塞?;顒幼枞?圖 2-7 具有

8、掛起狀態(tài)的進(jìn)程狀態(tài)圖 執(zhí)行執(zhí)行靜止就緒。靜止就緒。 掛起掛起 激活激活 就緒狀態(tài)就緒狀態(tài)(Ready):進(jìn)程在內(nèi)存且可立即進(jìn)入運行狀態(tài):進(jìn)程在內(nèi)存且可立即進(jìn)入運行狀態(tài) 阻塞狀態(tài)阻塞狀態(tài)(Blocked):進(jìn)程在內(nèi)存并等待某事件的出現(xiàn):進(jìn)程在內(nèi)存并等待某事件的出現(xiàn) 靜止阻塞靜止阻塞/阻塞掛起狀態(tài)(阻塞掛起狀態(tài)(Blocked, suspend):進(jìn)程在外):進(jìn)程在外 存并等待某事件的出現(xiàn)存并等待某事件的出現(xiàn) 靜止就緒靜止就緒/就緒掛起狀態(tài)(就緒掛起狀態(tài)(Ready, suspend):進(jìn)程在外存,):進(jìn)程在外存, 但只要進(jìn)入內(nèi)存,即可運行但只要進(jìn)入內(nèi)存,即可運行 第二章 進(jìn)程的描述與控制 Heb

9、 Nomal University Department of Computer Science 9 活動活動 掛起掛起 事件事件 發(fā)生發(fā)生 事件事件 發(fā)生發(fā)生 等待等待 事件事件 掛起掛起 調(diào)度調(diào)度 超時超時 釋放釋放 活動活動 掛起掛起 掛起(掛起(Suspend):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存可):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存可 能有以下幾種情況能有以下幾種情況 活動阻塞活動阻塞靜止阻塞靜止阻塞:沒有進(jìn)程處于就緒狀態(tài):沒有進(jìn)程處于就緒狀態(tài) 或就緒進(jìn)程要求更多內(nèi)存資源時,發(fā)生這種轉(zhuǎn)或就緒進(jìn)程要求更多內(nèi)存資源時,發(fā)生這種轉(zhuǎn) 換,以提交新進(jìn)程或運行就緒進(jìn)程換,以提交新進(jìn)程或運行就緒進(jìn)程 活動就緒活動就

10、緒靜止就緒靜止就緒:當(dāng)有高優(yōu)先級阻塞(系:當(dāng)有高優(yōu)先級阻塞(系 統(tǒng)認(rèn)為會很快就緒的)進(jìn)程和低優(yōu)先級就緒進(jìn)統(tǒng)認(rèn)為會很快就緒的)進(jìn)程和低優(yōu)先級就緒進(jìn) 程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進(jìn)程程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進(jìn)程 運行運行靜止就緒靜止就緒:對搶占式系統(tǒng),當(dāng)有高優(yōu)先:對搶占式系統(tǒng),當(dāng)有高優(yōu)先 級靜止阻塞進(jìn)程因事件出現(xiàn)而進(jìn)入靜止就緒時,級靜止阻塞進(jìn)程因事件出現(xiàn)而進(jìn)入靜止就緒時, 系統(tǒng)可能會把運行進(jìn)程轉(zhuǎn)到靜止就緒狀態(tài)系統(tǒng)可能會把運行進(jìn)程轉(zhuǎn)到靜止就緒狀態(tài) 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 10 活動活

11、動 掛起掛起 事件事件 發(fā)生發(fā)生 事件事件 發(fā)生發(fā)生 等待等待 事件事件 掛起掛起 調(diào)度調(diào)度 超時超時 釋放釋放 活動活動 掛起掛起 激活(激活(Activate):把一個進(jìn)程從外存轉(zhuǎn)到):把一個進(jìn)程從外存轉(zhuǎn)到 內(nèi)存;可能有以下幾種情況:內(nèi)存;可能有以下幾種情況: 靜止就緒靜止就緒活動就緒活動就緒:沒有就緒進(jìn)程或:沒有就緒進(jìn)程或 掛起就緒進(jìn)程優(yōu)先級高于就緒進(jìn)程時,掛起就緒進(jìn)程優(yōu)先級高于就緒進(jìn)程時, 發(fā)生轉(zhuǎn)換發(fā)生轉(zhuǎn)換 靜止阻塞靜止阻塞活動阻塞活動阻塞:當(dāng)一個進(jìn)程釋放:當(dāng)一個進(jìn)程釋放 足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻 塞掛起進(jìn)程(系統(tǒng)認(rèn)為會很快出現(xiàn)所等塞掛起進(jìn)程

12、(系統(tǒng)認(rèn)為會很快出現(xiàn)所等 待的事件)轉(zhuǎn)換為阻塞狀態(tài)。待的事件)轉(zhuǎn)換為阻塞狀態(tài)。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 11 可中斷的睡眠狀態(tài)的進(jìn) 程會睡眠直到某個條件 變?yōu)檎妫绠a(chǎn)生一個硬 件中斷、釋放進(jìn)程正在 等待的系統(tǒng)資源或是傳 遞一個信號都可以是喚 醒進(jìn)程的條件。 可中斷的睡眠狀態(tài)的進(jìn)程會睡眠直到某個條件變?yōu)檎?,如產(chǎn)生一個硬件中斷、釋放進(jìn)程正在等待的系統(tǒng)資源或是傳遞一個信號都可以是喚醒進(jìn)程的條件。 可中斷的睡眠狀態(tài)的進(jìn)程會睡眠直到某個條件變?yōu)檎妫绠a(chǎn)生一個硬件中斷、釋放進(jìn)程正在等待的系統(tǒng)資源或是傳

13、遞一個信號都可以是喚醒進(jìn)程的條件。 只能被如硬件中斷、正在等待的系統(tǒng)資源被釋放等喚醒,對 其他進(jìn)程傳遞的信號不響應(yīng)。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 12 進(jìn)程程序進(jìn)程程序 用戶所要執(zhí)行的語句序列,必須有用戶所要執(zhí)行的語句序列,必須有 進(jìn)程數(shù)據(jù)進(jìn)程數(shù)據(jù) 用戶程序所要處理的數(shù)據(jù)用戶程序所要處理的數(shù)據(jù) 數(shù)據(jù)量可大可小,也可以沒有數(shù)據(jù)量可大可小,也可以沒有 棧棧 用于過程調(diào)用和參數(shù)傳遞用于過程調(diào)用和參數(shù)傳遞 進(jìn)程控制塊進(jìn)程控制塊PCB (PCB (進(jìn)程屬性進(jìn)程屬性) ) 處于核心段處于核心段 用戶進(jìn)程不

14、能直接訪問、修改自己的用戶進(jìn)程不能直接訪問、修改自己的PCB 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 13 2.1.4 進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu)進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu) 1. 操作系統(tǒng)中用于管理控制的數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng)中用于管理控制的數(shù)據(jù)結(jié)構(gòu) 內(nèi)存 設(shè)備 文件 進(jìn)程 內(nèi)存表 設(shè)備表 文件表 進(jìn)程1 進(jìn)程2 進(jìn)程n 進(jìn)程1 進(jìn)程n 進(jìn)程實體及所用資源列表 圖圖2-9 操作系統(tǒng)控制表的一般結(jié)構(gòu)操作系統(tǒng)控制表的一般結(jié)構(gòu) 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Com

15、puter Science 14 2. 進(jìn)程控制塊進(jìn)程控制塊PCB的作用的作用 進(jìn)程控制塊的作用是使一個在多道程序環(huán)境下不能進(jìn)程控制塊的作用是使一個在多道程序環(huán)境下不能 獨立運行的程序獨立運行的程序(含數(shù)據(jù)含數(shù)據(jù)),成為一個能獨立運行的基本單,成為一個能獨立運行的基本單 位,一個能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f,位,一個能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f,OS是是 根據(jù)根據(jù)PCB來對并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的來對并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的。 系統(tǒng)為了管理進(jìn)程設(shè)置的系統(tǒng)為了管理進(jìn)程設(shè)置的一個專門的數(shù)據(jù)結(jié)構(gòu)一個專門的數(shù)據(jù)結(jié)構(gòu),用它,用它 來來記錄進(jìn)程的外部特征,描述進(jìn)程的運動變化過程記錄

16、進(jìn)程的外部特征,描述進(jìn)程的運動變化過程 系統(tǒng)利用系統(tǒng)利用PCBPCB來控制和管理進(jìn)程,所以來控制和管理進(jìn)程,所以PCBPCB是系統(tǒng)是系統(tǒng)感知感知 進(jìn)程存在的唯一標(biāo)志進(jìn)程存在的唯一標(biāo)志 進(jìn)程與進(jìn)程與PCBPCB是一一對應(yīng)的是一一對應(yīng)的 /include/linux/sched.h 中 struct task_struct 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 15 PCBPCB的內(nèi)容的內(nèi)容 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer S

17、cience 16 3. 進(jìn)程控制塊中的信息進(jìn)程控制塊中的信息 1) 進(jìn)程標(biāo)識符進(jìn)程標(biāo)識符 進(jìn)程標(biāo)識符用于唯一地標(biāo)識一個進(jìn)程。兩種標(biāo)識符: (1) 內(nèi)部標(biāo)識符內(nèi)部標(biāo)識符。 在所有的操作系統(tǒng)中,都為每一個進(jìn)程賦予一個唯一 的數(shù)字標(biāo)識符數(shù)字標(biāo)識符,它通常是一個進(jìn)程的序號。 設(shè)置內(nèi)部標(biāo)識 符主要是為了方便系統(tǒng)方便系統(tǒng)使用。 (2) 外部標(biāo)識符外部標(biāo)識符。 它由創(chuàng)建者提供,通常是由字母、數(shù)字組成由字母、數(shù)字組成,往往是 由用戶(進(jìn)程)在訪問該進(jìn)程時使用。為了描述進(jìn)程的家族 關(guān)系, 還應(yīng)設(shè)置父進(jìn)程標(biāo)識及子進(jìn)程標(biāo)識。此外,還可設(shè) 置用戶標(biāo)識,以指示擁有該進(jìn)程的用戶。 PCB中的信息包含:中的信息包含: 進(jìn)

18、程標(biāo)識符,處理機(jī)狀態(tài),進(jìn)程調(diào)度信息,進(jìn)程控制信息。進(jìn)程標(biāo)識符,處理機(jī)狀態(tài),進(jìn)程調(diào)度信息,進(jìn)程控制信息。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 17 2) 處理機(jī)狀態(tài)處理機(jī)狀態(tài) 處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容 組成的。 通用寄存器通用寄存器 用戶可視寄存器,它們是用戶程序可以訪問的,用于暫存信息;用戶可視寄存器,它們是用戶程序可以訪問的,用于暫存信息; 指令計數(shù)器指令計數(shù)器,存放了要訪問的下一條指令的地址;存放了要訪問的下一條指令的地址; 程序狀態(tài)字程序狀態(tài)字PSW,其中含有狀態(tài)信息,如

19、條件碼(體現(xiàn)(體現(xiàn) 當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息。如有無進(jìn)位(當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息。如有無進(jìn)位(CY位),有無溢出(位),有無溢出(OV位),結(jié)果正負(fù)(位),結(jié)果正負(fù)(SF位),位), 結(jié)果是否為零(結(jié)果是否為零(ZF位),奇偶標(biāo)志位(位),奇偶標(biāo)志位(P位)等)、位)等)、執(zhí)行方式、 中斷屏蔽標(biāo)志等; 用戶棧指針用戶棧指針 指每個用戶進(jìn)程都有一個或若干個與之相關(guān)的系統(tǒng)棧,用于存放指每個用戶進(jìn)程都有一個或若干個與之相關(guān)的系統(tǒng)棧,用于存放 過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。 第二章 進(jìn)程的描述與控制 Heb Nom

20、al University Department of Computer Science 18 3) 進(jìn)程調(diào)度信息進(jìn)程調(diào)度信息 在PCB中還存放一些與進(jìn)程調(diào)度和進(jìn)程對換有關(guān)的信 息,包括: 進(jìn)程狀態(tài)進(jìn)程狀態(tài); 進(jìn)程優(yōu)先級進(jìn)程優(yōu)先級; 進(jìn)程調(diào)度所需的其它信息進(jìn)程調(diào)度所需的其它信息; 事件事件,即阻塞原因。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 19 4) 進(jìn)程控制信息進(jìn)程控制信息 進(jìn)程控制信息包括: 程序和數(shù)據(jù)的地址程序和數(shù)據(jù)的地址 ; 進(jìn)程同步和通信機(jī)制進(jìn)程同步和通信機(jī)制; 資源清單資源清單; 鏈接指針

21、鏈接指針 。 是指進(jìn)程的程序和數(shù)據(jù)所在的內(nèi) 存或外存地(首)址,以便再調(diào)度 到該進(jìn)程執(zhí)行時,能從PCB中找 到其程序和數(shù)據(jù) 指實現(xiàn)進(jìn)程同步和進(jìn)程通信時必 需的機(jī)制, 如消息隊列指針、 信號量等,它們可能全部或部分 地放在PCB中 是一張列出了除CPU以外的、進(jìn) 程所需的全部資源及已經(jīng)分配到 該進(jìn)程的資源的清單 它給出了本進(jìn)程(PCB)所在隊列 中的下一個進(jìn)程的PCB的首地址 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 20 PCBPCB的內(nèi)容的內(nèi)容 注意:不同操作系統(tǒng)中對進(jìn)程的控制和管理機(jī)制不一樣,注意:不同

22、操作系統(tǒng)中對進(jìn)程的控制和管理機(jī)制不一樣,PCBPCB中的信息多少也不一樣中的信息多少也不一樣 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 21 3. 進(jìn)程控制塊的組織方式進(jìn)程控制塊的組織方式 1) 鏈接方式(Linux采用) 圖 2-11 PCB鏈接隊列示意圖 PCB14 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 PCB8 PCB9 3 0 8 7 9 0 1 執(zhí)行指針 就緒隊列指針 阻塞隊列指針 空閑隊列指針 鏈接方式, 索引方式 第二章 進(jìn)程的描述與控制 Heb Nomal Univer

23、sity Department of Computer Science 22 2) 索引方式 圖 2-12 按索引方式組織PCB 執(zhí)行指針 就緒索引表 PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 阻塞索引表 就緒表指針 阻塞表指針 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 23 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 24 第二章第二章 進(jìn)程管理進(jìn)程管理 2.1 2.1 前驅(qū)圖和程序執(zhí)行前驅(qū)圖

24、和程序執(zhí)行 2.2 2.2 進(jìn)程進(jìn)程 的描述的描述 2.3 2.3 進(jìn)程控制進(jìn)程控制 2.4 2.4 進(jìn)程同步進(jìn)程同步 2.5 2.5 經(jīng)典進(jìn)程的同步問題經(jīng)典進(jìn)程的同步問題 2.6 2.6 進(jìn)程通信進(jìn)程通信 2.7 2.7 線程的基本概念線程的基本概念 2.8 2.8 線程的實現(xiàn)線程的實現(xiàn) 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 25 2.3 進(jìn)進(jìn) 程程 控控 制制 2.3.1 操作系統(tǒng)內(nèi)核操作系統(tǒng)內(nèi)核 u處理器管理的一個主要工作是對進(jìn)程的控制,處理器管理的一個主要工作是對進(jìn)程的控制, u包括:創(chuàng)建進(jìn)程、

25、阻塞進(jìn)程、喚醒進(jìn)程、掛起進(jìn)程、激活進(jìn)程、包括:創(chuàng)建進(jìn)程、阻塞進(jìn)程、喚醒進(jìn)程、掛起進(jìn)程、激活進(jìn)程、 終止進(jìn)程和撤銷進(jìn)程等終止進(jìn)程和撤銷進(jìn)程等 現(xiàn)代現(xiàn)代OS一般采用分層結(jié)構(gòu)一般采用分層結(jié)構(gòu) 與硬件緊密相關(guān)的模塊與硬件緊密相關(guān)的模塊 常用設(shè)備的驅(qū)動程序常用設(shè)備的驅(qū)動程序 運行頻率較高的模塊運行頻率較高的模塊 硬件硬件 A0 A1 An OS內(nèi)核 保護(hù)軟件;提高保護(hù)軟件;提高OS效率效率 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 26 處理機(jī)的執(zhí)行狀態(tài):處理機(jī)的執(zhí)行狀態(tài): u系統(tǒng)態(tài)(管態(tài)),內(nèi)核態(tài)系統(tǒng)態(tài)(管態(tài)),內(nèi)

26、核態(tài) 可執(zhí)行可執(zhí)行特權(quán)特權(quán)指令,訪問指令,訪問所有的所有的寄存器和存儲區(qū)寄存器和存儲區(qū) u用戶態(tài)(目態(tài))用戶態(tài)(目態(tài)) 可執(zhí)行可執(zhí)行非特權(quán)指令非特權(quán)指令,訪問指定的寄存器和存儲區(qū),訪問指定的寄存器和存儲區(qū) 一般一般OS內(nèi)核的功能:內(nèi)核的功能: 支撐功能支撐功能 中斷處理、時鐘管理、原語操作中斷處理、時鐘管理、原語操作 資源管理功能資源管理功能 進(jìn)程管理、存儲器管理、設(shè)備管理進(jìn)程管理、存儲器管理、設(shè)備管理 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 27 2.3.2 進(jìn)程的創(chuàng)建進(jìn)程的創(chuàng)建 1. 進(jìn)程的層次結(jié)構(gòu)進(jìn)

27、程的層次結(jié)構(gòu) 圖 2-13 進(jìn)程樹 DEFGH BC IJKLM A 2. 進(jìn)程圖進(jìn)程圖(Process Graph) 父進(jìn)程父進(jìn)程:創(chuàng)建進(jìn)程的進(jìn)程。:創(chuàng)建進(jìn)程的進(jìn)程。 子進(jìn)程子進(jìn)程:被創(chuàng)建的進(jìn)程。:被創(chuàng)建的進(jìn)程。 各自工作區(qū),僅共享父進(jìn)程打開的文件各自工作區(qū),僅共享父進(jìn)程打開的文件 祖先祖先 進(jìn)程進(jìn)程 用戶用戶 進(jìn)程進(jìn)程 系統(tǒng)系統(tǒng) 進(jìn)程進(jìn)程 用戶用戶 進(jìn)程進(jìn)程 用戶用戶 進(jìn)程進(jìn)程 進(jìn)程家族樹進(jìn)程家族樹 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 28 3. 引起創(chuàng)建進(jìn)程的事件引起創(chuàng)建進(jìn)程的事件 (1) 用戶

28、登錄。用戶登錄。 (2) 作業(yè)調(diào)度。作業(yè)調(diào)度。 (3) 提供服務(wù)。提供服務(wù)。 (4) 應(yīng)用請求。應(yīng)用請求。 系統(tǒng)為用戶創(chuàng)建一個進(jìn)程,并插入就緒隊列 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 29 4. 進(jìn)程的創(chuàng)建進(jìn)程的創(chuàng)建(Creation of Progress) (1)申請空白申請空白PCB。 (2) 為新進(jìn)程分配資源。為新進(jìn)程分配資源。 (3) 初始化進(jìn)程控制塊。初始化進(jìn)程控制塊。 (4) 將新進(jìn)程插入就緒隊列,或直接投入運行。將新進(jìn)程插入就緒隊列,或直接投入運行。 第二章 進(jìn)程的描述與控制 Heb

29、Nomal University Department of Computer Science 30 2.3.3 進(jìn)程的終止進(jìn)程的終止 1. 引起進(jìn)程終止引起進(jìn)程終止(Termination of Process)的事件的事件 1) 正常結(jié)束 在任何計算機(jī)系統(tǒng)中,都應(yīng)有一個用于表示進(jìn)程已經(jīng) 運行完成的指示。 例如,在批處理系統(tǒng)中,通常在程序的最后安排一條例如,在批處理系統(tǒng)中,通常在程序的最后安排一條Holt指令或終止的系統(tǒng)指令或終止的系統(tǒng) 調(diào)用。當(dāng)程序運行到調(diào)用。當(dāng)程序運行到Holt指令時,將產(chǎn)生一個中斷,去通知指令時,將產(chǎn)生一個中斷,去通知OS本進(jìn)程已經(jīng)完本進(jìn)程已經(jīng)完 成。成。 在分時系統(tǒng)中

30、,用戶可利用在分時系統(tǒng)中,用戶可利用Logs off去表示進(jìn)程運行完畢,去表示進(jìn)程運行完畢, 此時同樣可此時同樣可 產(chǎn)生一個中斷,去通知產(chǎn)生一個中斷,去通知OS進(jìn)程已運行完畢。進(jìn)程已運行完畢。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 31 2) 異常結(jié)束異常結(jié)束 在進(jìn)程運行期間,由于出現(xiàn)某些錯誤和故障而迫使進(jìn)程在進(jìn)程運行期間,由于出現(xiàn)某些錯誤和故障而迫使進(jìn)程 終止。這類異常事件很多,常見的有:終止。這類異常事件很多,常見的有: 越界錯誤。越界錯誤。程序所訪問的存儲區(qū),已越出該進(jìn)程的區(qū)域;程序所訪問的存儲區(qū)

31、,已越出該進(jìn)程的區(qū)域; 保護(hù)錯。保護(hù)錯。進(jìn)程試圖去訪問一個不允許訪問的資源或文件,或者以不進(jìn)程試圖去訪問一個不允許訪問的資源或文件,或者以不 適當(dāng)?shù)姆绞竭M(jìn)行訪問,例如,進(jìn)程試圖去寫一個只讀文件;適當(dāng)?shù)姆绞竭M(jìn)行訪問,例如,進(jìn)程試圖去寫一個只讀文件; 非法指令。非法指令。程序試圖去執(zhí)行一條不存在的指令。出現(xiàn)該錯誤的原因,程序試圖去執(zhí)行一條不存在的指令。出現(xiàn)該錯誤的原因, 可能是程序錯誤地轉(zhuǎn)移到數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)成了指令;可能是程序錯誤地轉(zhuǎn)移到數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)成了指令; 特權(quán)指令錯。特權(quán)指令錯。用戶進(jìn)程試圖去執(zhí)行一條只允許用戶進(jìn)程試圖去執(zhí)行一條只允許OS執(zhí)行的指令;執(zhí)行的指令; 運行超時。運行超時。進(jìn)

32、程的執(zhí)行時間超過了指定的最大值;進(jìn)程的執(zhí)行時間超過了指定的最大值; 等待超時。等待超時。進(jìn)程等待某事件的時間,進(jìn)程等待某事件的時間, 超過了規(guī)定的最大值;超過了規(guī)定的最大值; 算術(shù)運算錯。算術(shù)運算錯。進(jìn)程試圖去執(zhí)行一個被禁止的運算,例如,被進(jìn)程試圖去執(zhí)行一個被禁止的運算,例如,被0除;除; I/O故障。故障。指在指在I/O過程中發(fā)生了錯誤等。過程中發(fā)生了錯誤等。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 32 3) 外界干預(yù)外界干預(yù) 外界干預(yù)并非指在本進(jìn)程運行中出現(xiàn)了異常事件,本進(jìn)程運行中出現(xiàn)了異常事件,

33、而是指進(jìn)程應(yīng)外界的請求而終止運行。而是指進(jìn)程應(yīng)外界的請求而終止運行。這些干預(yù)有: 操作員或操作系統(tǒng)干預(yù)。操作員或操作系統(tǒng)干預(yù)。 由于某種原因,例如,發(fā)生了死鎖,由于某種原因,例如,發(fā)生了死鎖, 由操作員或操作系統(tǒng)終止該進(jìn)程;由操作員或操作系統(tǒng)終止該進(jìn)程; 父進(jìn)程請求。父進(jìn)程請求。 由于父進(jìn)程具有終止自己的任何子孫進(jìn)程的權(quán)由于父進(jìn)程具有終止自己的任何子孫進(jìn)程的權(quán) 利,利, 因而當(dāng)父進(jìn)程提出請求時,系統(tǒng)將終止該進(jìn)程;因而當(dāng)父進(jìn)程提出請求時,系統(tǒng)將終止該進(jìn)程; 父進(jìn)程終止。父進(jìn)程終止。 當(dāng)父進(jìn)程終止時,當(dāng)父進(jìn)程終止時,OS也將他的所有子孫進(jìn)程終也將他的所有子孫進(jìn)程終 止。止。 第二章 進(jìn)程的描述與控

34、制 Heb Nomal University Department of Computer Science 33 2. 進(jìn)程的終止過程進(jìn)程的終止過程 (1) 根據(jù)被終止進(jìn)程的標(biāo)識符,從根據(jù)被終止進(jìn)程的標(biāo)識符,從PCB集合中找出該進(jìn)程的集合中找出該進(jìn)程的PCB, 從中讀出該進(jìn)程的狀態(tài)。從中讀出該進(jìn)程的狀態(tài)。 (2) 若被終止進(jìn)程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進(jìn)程的執(zhí)行,并若被終止進(jìn)程正處于執(zhí)行狀態(tài),應(yīng)立即終止該進(jìn)程的執(zhí)行,并 置調(diào)度標(biāo)志為真,用于指示該進(jìn)程被終止后應(yīng)重新進(jìn)行調(diào)度。置調(diào)度標(biāo)志為真,用于指示該進(jìn)程被終止后應(yīng)重新進(jìn)行調(diào)度。 (3) 若該進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子孫進(jìn)程予以終止,以若

35、該進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子孫進(jìn)程予以終止,以 防他們成為不可控的進(jìn)程。防他們成為不可控的進(jìn)程。 (4) 將被終止進(jìn)程所擁有的全部資源,或者歸還給其父進(jìn)程,將被終止進(jìn)程所擁有的全部資源,或者歸還給其父進(jìn)程, 或者或者 歸還給系統(tǒng)。歸還給系統(tǒng)。 (5) 將被終止進(jìn)程將被終止進(jìn)程(它的它的PCB)從所在隊列從所在隊列(或鏈表或鏈表)中移出,中移出, 。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 34 2.3.4 進(jìn)程的阻塞與喚醒進(jìn)程的阻塞與喚醒 1. 引起進(jìn)程阻塞和喚醒的事件引起進(jìn)程阻塞和喚醒的事件 1)

36、 請求系統(tǒng)服務(wù) 2) 啟動某種操作 3) 新數(shù)據(jù)尚未到達(dá) 4) 無新工作可做 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 35 2. 進(jìn)程阻塞過程進(jìn)程阻塞過程 正在執(zhí)行的進(jìn)程,當(dāng)發(fā)現(xiàn)上述某事件時,由于無法繼續(xù)正在執(zhí)行的進(jìn)程,當(dāng)發(fā)現(xiàn)上述某事件時,由于無法繼續(xù) 執(zhí)行,于是進(jìn)程便通過調(diào)用執(zhí)行,于是進(jìn)程便通過調(diào)用阻塞原語阻塞原語block把自己阻塞??梢姡炎约鹤枞?。可見, 進(jìn)程的阻塞是進(jìn)程的阻塞是進(jìn)程自身的一種主動行為進(jìn)程自身的一種主動行為。 進(jìn)入進(jìn)入block過程后,由于此時該進(jìn)程還處于執(zhí)行狀態(tài),所過程后,由于此

37、時該進(jìn)程還處于執(zhí)行狀態(tài),所 以應(yīng)以應(yīng)立即停止執(zhí)行,立即停止執(zhí)行,把進(jìn)程控制把進(jìn)程控制 塊中的現(xiàn)行狀態(tài)由塊中的現(xiàn)行狀態(tài)由“執(zhí)行執(zhí)行”改為阻塞,將改為阻塞,將PCB插入阻塞隊插入阻塞隊 列列。如果系統(tǒng)中設(shè)置了因不同事件而阻塞的多個阻塞隊列,則應(yīng)將本進(jìn)如果系統(tǒng)中設(shè)置了因不同事件而阻塞的多個阻塞隊列,則應(yīng)將本進(jìn) 程插入到具有相同事件的阻塞程插入到具有相同事件的阻塞(等待等待)隊列。隊列。 最后,轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一最后,轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一 就緒進(jìn)程,并進(jìn)行切換,亦即,保留被阻塞進(jìn)程的處理機(jī)狀就緒進(jìn)程,并進(jìn)行切換,亦即,保留被阻塞進(jìn)程的處理機(jī)狀 態(tài)態(tài)(在在P

38、CB中中),再按新進(jìn)程的,再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置中的處理機(jī)狀態(tài)設(shè)置CPU的的 環(huán)境。環(huán)境。 第二章 進(jìn)程的描述與控制 Heb Nomal University Department of Computer Science 36 3. 進(jìn)程喚醒過程進(jìn)程喚醒過程 當(dāng)被阻塞進(jìn)程所期待的事件出現(xiàn)時,如當(dāng)被阻塞進(jìn)程所期待的事件出現(xiàn)時,如I/O完成或其完成或其 所期待的數(shù)據(jù)已經(jīng)到達(dá),則由有關(guān)進(jìn)程所期待的數(shù)據(jù)已經(jīng)到達(dá),則由有關(guān)進(jìn)程(比如,用完并釋比如,用完并釋 放了該放了該I/O設(shè)備的進(jìn)程設(shè)備的進(jìn)程)調(diào)用調(diào)用喚醒原語喚醒原語wakeup( ),將等待該,將等待該 事件的進(jìn)程喚醒。事件的進(jìn)程喚醒。 喚醒原語執(zhí)行的過程是:首先把被阻塞的進(jìn)程從喚醒原語執(zhí)行的過程是:首先把被阻塞的進(jìn)程從 等待該事件的阻塞隊列中移出,將其等待該事

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論