




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第2章章 進程與線程進程與線程進程是操作系統(tǒng)中最重要的概念之一。進程是操作系統(tǒng)中最重要的概念之一。進程不僅是最基本的并發(fā)執(zhí)行單位,而且也進程不僅是最基本的并發(fā)執(zhí)行單位,而且也是分配資源的基本單位。是分配資源的基本單位。 從進程觀點出發(fā),對計算機系統(tǒng)進行結(jié)從進程觀點出發(fā),對計算機系統(tǒng)進行結(jié)構(gòu)設(shè)計,也是軟件開發(fā)的一種新技術(shù)。構(gòu)設(shè)計,也是軟件開發(fā)的一種新技術(shù)。2本章要點本章要點進程的引入進程的引入進程的狀態(tài)及其組成控制進程的狀態(tài)及其組成控制線程的概念線程的概念進程間的通信進程間的通信Linux中的進程中的進程3學(xué)習(xí)目標學(xué)習(xí)目標u掌握掌握:進程概念;進程的狀態(tài)及其變化;:進程概念;進程的狀態(tài)及其變化
2、;進程的通信。進程的通信。u理解理解:多道程序設(shè)計;進程的組成;臨界:多道程序設(shè)計;進程的組成;臨界資源和臨界區(qū);線程的概念。資源和臨界區(qū);線程的概念。u了解了解:進程間的高級通信;線程概念。:進程間的高級通信;線程概念。42.1 進程概念進程概念u進程(進程(Process)是計算機中的程序關(guān)于某)是計算機中的程序關(guān)于某數(shù)據(jù)集合上的數(shù)據(jù)集合上的一次運行活動一次運行活動,是系統(tǒng)進行,是系統(tǒng)進行資源分配和調(diào)度的基本單位,是操作系統(tǒng)資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。結(jié)構(gòu)的基礎(chǔ)。u在早期面向進程設(shè)計的計算機結(jié)構(gòu)中,在早期面向進程設(shè)計的計算機結(jié)構(gòu)中,進進程是程序的基本執(zhí)行實體程是程序的基
3、本執(zhí)行實體;在當代面向線;在當代面向線程設(shè)計的計算機結(jié)構(gòu)中,程設(shè)計的計算機結(jié)構(gòu)中,進程是線程的容進程是線程的容器器。u程序是指令、數(shù)據(jù)及其組織形式的描述,程序是指令、數(shù)據(jù)及其組織形式的描述,進程是程序的實體。進程是程序的實體。52.1.1 多道程序設(shè)計多道程序設(shè)計-順序執(zhí)行順序執(zhí)行順序程序示意圖順序程序示意圖62.1.1 多道程序設(shè)計多道程序設(shè)計-順序執(zhí)行順序執(zhí)行72.1.1 多道程序設(shè)計多道程序設(shè)計-順序執(zhí)行順序執(zhí)行t輸入:輸入:計算:計算:輸出:輸出:I1C1P1I2C2P2I3C3P3 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10三個程序間順序執(zhí)行三個程序間順序執(zhí)行
4、t程序1:I1C1P1程序2:程序3:I2C2P2I3C3P39個個t 結(jié)束結(jié)束82.1.1 多道程序設(shè)計多道程序設(shè)計-順序執(zhí)行順序執(zhí)行u順序程序活動特點順序程序活動特點p順序性順序性:順序執(zhí)行行過程可看作一系列嚴格按:順序執(zhí)行行過程可看作一系列嚴格按程序規(guī)定的狀態(tài)轉(zhuǎn)移過程。程序規(guī)定的狀態(tài)轉(zhuǎn)移過程。 p封閉性封閉性:程序執(zhí)行得到的最終結(jié)果由給定的初:程序執(zhí)行得到的最終結(jié)果由給定的初始條件決定,不受外界因素的影響。始條件決定,不受外界因素的影響。 p可再現(xiàn)性可再現(xiàn)性:只要輸入的初始條件相同,則無論:只要輸入的初始條件相同,則無論何時重復(fù)執(zhí)行該程序都會得到相同的結(jié)果。何時重復(fù)執(zhí)行該程序都會得到相同
5、的結(jié)果。 92.1.1 多道程序設(shè)計多道程序設(shè)計-并發(fā)執(zhí)行并發(fā)執(zhí)行 輸入:計算:輸出: t0 t1 t2 t3 t4 t5 t6ttI1三個程序并發(fā)執(zhí)行示例三個程序并發(fā)執(zhí)行示例I2I3C1C2C3P1P2P3時間時間:5個個t并行并行并行并行并行并行結(jié)束結(jié)束下下一一步步下下一一步步下下一一步步前驅(qū)關(guān)系前驅(qū)關(guān)系執(zhí)行順序102.1.1 多道程序設(shè)計多道程序設(shè)計-并發(fā)執(zhí)行并發(fā)執(zhí)行u程序并發(fā)執(zhí)行概念程序并發(fā)執(zhí)行概念p作業(yè)吞吐量作業(yè)吞吐量是指是指在給定時間間隔內(nèi)所完成作業(yè)在給定時間間隔內(nèi)所完成作業(yè)的數(shù)量的數(shù)量。pCPU的利用率。的利用率。p單道程序系統(tǒng)的缺點:資源浪費、效率低、周單道程序系統(tǒng)的缺點:資源
6、浪費、效率低、周轉(zhuǎn)時間長等。轉(zhuǎn)時間長等。p多道程序系統(tǒng)的優(yōu)點:資源利用率高、吞吐量多道程序系統(tǒng)的優(yōu)點:資源利用率高、吞吐量大等。大等。112.1.1 多道程序設(shè)計多道程序設(shè)計-并發(fā)執(zhí)行并發(fā)執(zhí)行tAAt等待I/O的時間(6個t)(a)單道情況)單道情況11078BBtAAt(b)兩道情況)兩道情況1107189t單道、兩道和四道情況單道、兩道和四道情況1t(c)四道情況)四道情況1107189BBAAC DC D2310421/8t = 0.125道程序道程序/t2/9t = 0.222道程序道程序/tAI/OAI/OBI/O4/11t = 0.363道程序道程序/t下下一一步步A,B,C,D為
7、程為程序,忽略外設(shè);序,忽略外設(shè);假 定假 定 4個 程 序個 程 序都需都需運行運行2個個t時間,在時間,在期間期間有有6個個t時間的時間的I/O操作操作;吞吐率分別為:1/8 = 0.125 2/9 = 0.222 4/11 = 0.363 4道程序情況比單道提高了近 3 倍倍。顯然不僅使內(nèi)存充分利用,還帶來處理機利用率的提高,使整個系統(tǒng)效率得以提高。下下一一步步結(jié)束結(jié)束下下一一步步吞吐量吞吐量 122.1.1 多道程序設(shè)計多道程序設(shè)計-并發(fā)執(zhí)行并發(fā)執(zhí)行u程序并發(fā)執(zhí)行的特征程序并發(fā)執(zhí)行的特征 p失去封閉性失去封閉性p程序與計算不再一一對應(yīng)程序與計算不再一一對應(yīng)p并發(fā)程序在執(zhí)行期間相互制約并
8、發(fā)程序在執(zhí)行期間相互制約132.1.1 多道程序設(shè)計多道程序設(shè)計-并發(fā)執(zhí)行并發(fā)執(zhí)行varrow,col : integer;ticketnm : integer; procedure booking 1:begin 2: if row = n 3: begin 4: ticketrowcol:= 1; 賦值1表示已售 5: write (“座位:”row“排”,col “號”); 6: col = col mod m + 1; 7: if col = 1; 8: row= row + 1; 9: end 10: else 11: write (“座位已售完!”); 12:end共 享 數(shù)共 享
9、 數(shù)據(jù)據(jù)1 234 m1234in 航班座位示意圖航班座位示意圖 :begin :if row = n : begin : ticketrowcol:= 1; : write (“座位:座位:”row“排排”,col “號號”); :begin :if row = n : begin : ticketrowcol:= 1; : write (“座位:座位:”row“排排”,col “號號”);B1:B2:12345中斷中斷12345當前位置當前位置row=3;col=4 row=3;col=4 row=3;col=4 結(jié)束結(jié)束例:在多道程序設(shè)計環(huán)境下,例:在多道程序設(shè)計環(huán)境下,“結(jié)果再現(xiàn)性結(jié)果
10、再現(xiàn)性”被打破的簡單例子被打破的簡單例子-航班售票系統(tǒng)航班售票系統(tǒng)142.1.2 進程進程的概念的概念u引入進程概念引入進程概念 多道程序并發(fā)執(zhí)行所引發(fā)的一系列新多道程序并發(fā)執(zhí)行所引發(fā)的一系列新情況,必須引入新的概念來描述程序情況,必須引入新的概念來描述程序動態(tài)動態(tài)執(zhí)行執(zhí)行過程的性質(zhì)。過程的性質(zhì)。152.1.2 進程進程的概念的概念u進程概念定義進程概念定義 p程序在并發(fā)環(huán)境中的執(zhí)行過程程序在并發(fā)環(huán)境中的執(zhí)行過程。u進程最根本的屬性是進程最根本的屬性是動態(tài)性動態(tài)性和和并發(fā)性并發(fā)性 p“進程進程”是操作系統(tǒng)的最基本、最重要的概念是操作系統(tǒng)的最基本、最重要的概念之一。這是對正在運行程序的一個抽象。
11、但還之一。這是對正在運行程序的一個抽象。但還沒有形成統(tǒng)一的定義。沒有形成統(tǒng)一的定義。u生活中事例生活中事例按菜譜做菜按菜譜做菜162.1.2 進程進程的概念的概念u進程和程序的進程和程序的區(qū)別區(qū)別 進程進程程序程序進程是動態(tài)概念進程是動態(tài)概念程序是靜態(tài)概念程序是靜態(tài)概念進程具有并發(fā)性,宏觀上同時進程具有并發(fā)性,宏觀上同時運行運行程序本身具有順序性,程序的程序本身具有順序性,程序的并發(fā)執(zhí)行是通過進程實現(xiàn)的并發(fā)執(zhí)行是通過進程實現(xiàn)的進程具有獨立性,是一個能獨進程具有獨立性,是一個能獨立運行的單位,是系統(tǒng)資源分立運行的單位,是系統(tǒng)資源分配的基本單位,是運行高度的配的基本單位,是運行高度的基本單位基本單
12、位程序本身沒有此特性程序本身沒有此特性程序和進程無一一對應(yīng)關(guān)系,程序和進程無一一對應(yīng)關(guān)系,一個進程可順序執(zhí)行多個程序一個進程可順序執(zhí)行多個程序一個程序可由多個進程共用一個程序可由多個進程共用進程異步前進,可相互制約進程異步前進,可相互制約程序不具備此特性程序不具備此特性172.1.2 進程進程的概念的概念u進程特征進程特征1.動態(tài)性動態(tài)性:進程具有生命過程,有誕生、消亡,可以執(zhí):進程具有生命過程,有誕生、消亡,可以執(zhí)行也可暫停,可處于不同狀態(tài)。行也可暫停,可處于不同狀態(tài)。2.并發(fā)性并發(fā)性:多個進程能夠存在于同一內(nèi)存中,在一定時:多個進程能夠存在于同一內(nèi)存中,在一定時間內(nèi)都能得到執(zhí)行。一個程序的
13、進程可與另一個程序間內(nèi)都能得到執(zhí)行。一個程序的進程可與另一個程序的進程以并發(fā)的形式執(zhí)行,但各個進程向前執(zhí)行的速的進程以并發(fā)的形式執(zhí)行,但各個進程向前執(zhí)行的速度無法預(yù)知,以異步形式執(zhí)行。因此造成進程間的相度無法預(yù)知,以異步形式執(zhí)行。因此造成進程間的相互制約,使程序具有不可再現(xiàn)性。互制約,使程序具有不可再現(xiàn)性。3.調(diào)度性調(diào)度性:進程是系統(tǒng)中申請資源和調(diào)度的單位。操作:進程是系統(tǒng)中申請資源和調(diào)度的單位。操作系統(tǒng)中的調(diào)度程序,根據(jù)各自不同的調(diào)度策略選擇合系統(tǒng)中的調(diào)度程序,根據(jù)各自不同的調(diào)度策略選擇合適的進程,并為其運行提供條件。適的進程,并為其運行提供條件。182.2 進程狀態(tài)進程狀態(tài)與轉(zhuǎn)換與轉(zhuǎn)換19
14、2.2.1 進程的狀態(tài)進程的狀態(tài)u進程的狀態(tài)進程的狀態(tài)p運行狀態(tài)(運行狀態(tài)(Running):運行狀態(tài)是指當前進:運行狀態(tài)是指當前進程已經(jīng)分配到程已經(jīng)分配到CPU,正在處理機上執(zhí)行時的狀,正在處理機上執(zhí)行時的狀態(tài)態(tài)p就緒狀態(tài)(就緒狀態(tài)(Ready):就緒狀態(tài)是指進程已經(jīng):就緒狀態(tài)是指進程已經(jīng)具備運行條件,但因其他進程正占用具備運行條件,但因其他進程正占用CPU,使,使其不能運行而只能處于等待其不能運行而只能處于等待CPU的狀態(tài)。處于的狀態(tài)。處于此狀態(tài)的進程數(shù)目可以有多個。此狀態(tài)的進程數(shù)目可以有多個。p阻塞狀態(tài)(阻塞狀態(tài)(Blocked):又稱為等待狀態(tài)或封鎖:又稱為等待狀態(tài)或封鎖狀態(tài),一個進程
15、正在等待某一事件(如等待某狀態(tài),一個進程正在等待某一事件(如等待某資源成為可用,等待輸入輸出完成或等待與其資源成為可用,等待輸入輸出完成或等待與其他進程的通信等)而暫時不能運行的狀態(tài)。他進程的通信等)而暫時不能運行的狀態(tài)。202.2.1 進程的狀態(tài)進程的狀態(tài)212.2.2 進程狀態(tài)的轉(zhuǎn)換進程狀態(tài)的轉(zhuǎn)換22進程的基本狀態(tài)和狀態(tài)變遷進程的基本狀態(tài)和狀態(tài)變遷 進程五狀態(tài)及轉(zhuǎn)換圖進程五狀態(tài)及轉(zhuǎn)換圖事件發(fā)生事件發(fā)生如如 I / O 完完成成運行運行就緒就緒等待事件發(fā)生等待事件發(fā)生如等待如等待I/O時間片到時間片到調(diào)度調(diào)度阻塞阻塞新建新建完成完成接納接納終止終止系統(tǒng)設(shè)置多少狀態(tài)與系統(tǒng)設(shè)置多少狀態(tài)與系統(tǒng)對進
16、程管理方式系統(tǒng)對進程管理方式有關(guān),也與系統(tǒng)資源有關(guān),也與系統(tǒng)資源利用有關(guān)利用有關(guān)但要注意,但要注意,系統(tǒng)中設(shè)置系統(tǒng)中設(shè)置過多狀態(tài)會過多狀態(tài)會造成系統(tǒng)參造成系統(tǒng)參數(shù)和狀態(tài)轉(zhuǎn)數(shù)和狀態(tài)轉(zhuǎn)換過程增加換過程增加 進程在生存期間進程在生存期間,可以多次地從一個,可以多次地從一個狀態(tài)轉(zhuǎn)換到狀態(tài)轉(zhuǎn)換到另一個狀態(tài)另一個狀態(tài),即多次地處于,即多次地處于運行狀態(tài)運行狀態(tài)、就緒狀態(tài)就緒狀態(tài)、阻塞狀態(tài)阻塞狀態(tài),反映了并發(fā)程序,反映了并發(fā)程序“走走停停走走停?!钡倪\行軌的運行軌跡。進程不斷地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)是有跡。進程不斷地從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)是有條件,或原因的。這些狀態(tài)隨著進程的執(zhí)行和外界條件,或原因的
17、。這些狀態(tài)隨著進程的執(zhí)行和外界條件發(fā)生變化而轉(zhuǎn)換。條件發(fā)生變化而轉(zhuǎn)換。 事實上,進程的狀態(tài)轉(zhuǎn)換是一個非常復(fù)雜的過程。事實上,進程的狀態(tài)轉(zhuǎn)換是一個非常復(fù)雜的過程。從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)換除了不同的控制過從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)換除了不同的控制過程,有時還要借助于硬件才能完成程,有時還要借助于硬件才能完成 ?;谀K化,或為了并發(fā)性,用戶程序基于模塊化,或為了并發(fā)性,用戶程序可以指示創(chuàng)建多個進程可以指示創(chuàng)建多個進程由現(xiàn)有的進由現(xiàn)有的進程派生程派生操作系統(tǒng)可以創(chuàng)建一個進程,代表用戶操作系統(tǒng)可以創(chuàng)建一個進程,代表用戶程序執(zhí)行一個功能(輸出進程幫助用戶程序執(zhí)行一個功能(輸出進程幫助用戶實現(xiàn)數(shù)據(jù)輸出
18、,使用戶無需等待)實現(xiàn)數(shù)據(jù)輸出,使用戶無需等待)操作系統(tǒng)因操作系統(tǒng)因提供一項服提供一項服務(wù)而創(chuàng)建務(wù)而創(chuàng)建終端用戶登陸到系統(tǒng)終端用戶登陸到系統(tǒng)交互登陸交互登陸通常位于磁帶,更一般地位于磁盤上的通常位于磁帶,更一般地位于磁盤上的批處理作業(yè)流提供給操作系統(tǒng)。當操作批處理作業(yè)流提供給操作系統(tǒng)。當操作系統(tǒng)準備接納新任務(wù)時,將調(diào)入選中的系統(tǒng)準備接納新任務(wù)時,將調(diào)入選中的若干作業(yè)若干作業(yè)新的批處理新的批處理作業(yè)作業(yè)說明說明事件事件表:表: 導(dǎo)致進程創(chuàng)建的原因?qū)е逻M程創(chuàng)建的原因標識符信息標識符信息進程標識符進程標識符進程名進程名進程號進程號用戶標識用戶標識用戶名用戶名用戶號用戶號家族聯(lián)系家族聯(lián)系父進程父進程子
19、進程子進程處理機狀態(tài)信處理機狀態(tài)信息(現(xiàn)場)息(現(xiàn)場)通用寄存器通用寄存器指令計數(shù)器指令計數(shù)器程序狀態(tài)字程序狀態(tài)字用戶棧指針用戶棧指針進程調(diào)度信息進程調(diào)度信息等待原因等待原因調(diào)度算法參數(shù)等調(diào)度算法參數(shù)等進程控制信息進程控制信息程序和數(shù)據(jù)地址程序和數(shù)據(jù)地址進程同步和通信機制進程同步和通信機制資源清單資源清單鏈接指針鏈接指針訪問權(quán)限訪問權(quán)限打開的文件打開的文件進程優(yōu)先數(shù)進程優(yōu)先數(shù)=45新建新建標識符信息標識符信息進程標識符進程標識符進程名進程名進程號進程號用戶標識用戶標識用戶名用戶名用戶號用戶號家族聯(lián)系家族聯(lián)系父進程父進程子進程子進程處理機狀態(tài)信處理機狀態(tài)信息(現(xiàn)場)息(現(xiàn)場)通用寄存器通用寄存器
20、指令計數(shù)器指令計數(shù)器程序狀態(tài)字程序狀態(tài)字用戶棧指針用戶棧指針進程調(diào)度信息進程調(diào)度信息就緒就緒進程優(yōu)先數(shù)進程優(yōu)先數(shù)=pid等待原因等待原因調(diào)度算法參數(shù)等調(diào)度算法參數(shù)等進程控制信息進程控制信息程序和數(shù)據(jù)地址程序和數(shù)據(jù)地址進程同步和通信機制進程同步和通信機制資源清單資源清單鏈接指針鏈接指針訪問權(quán)限訪問權(quán)限打開的文件打開的文件n 空空 新建;通常新建;通常有四個事件可能導(dǎo)有四個事件可能導(dǎo)致創(chuàng)建一個新進程致創(chuàng)建一個新進程n 新建新建 就緒;操就緒;操作系統(tǒng)接納一個進程作系統(tǒng)接納一個進程時,將時,將新建狀態(tài)新建狀態(tài)修改修改為為就緒狀態(tài)就緒狀態(tài)。n 就緒就緒運行;從運行;從就緒隊列選擇一個就緒隊列選擇一個進
21、程占用處理機進程占用處理機,將將就緒態(tài)就緒態(tài)改為改為運行態(tài)運行態(tài)n 運行運行就緒;通就緒;通常原因是正在運行常原因是正在運行進程時間片到,從進程時間片到,從運行態(tài)運行態(tài)進入進入就緒態(tài)就緒態(tài)n 運行運行阻塞;阻塞;若當前進程所請若當前進程所請求事件,或條件求事件,或條件未能得到滿足,未能得到滿足,則進入阻塞態(tài)。則進入阻塞態(tài)。由由運行運行進入阻塞進入阻塞態(tài)原因可能很多態(tài)原因可能很多 n 阻塞阻塞就緒;就緒;系統(tǒng)內(nèi)發(fā)生事件系統(tǒng)內(nèi)發(fā)生事件時,根據(jù)事件原時,根據(jù)事件原因查找阻塞隊列因查找阻塞隊列中的進程,查到,中的進程,查到,將阻塞態(tài)轉(zhuǎn)換為將阻塞態(tài)轉(zhuǎn)換為就緒態(tài)就緒態(tài)。 n 運行運行完成;完成;任務(wù)執(zhí)行完
22、成,任務(wù)執(zhí)行完成,或由于其它原因或由于其它原因無法繼續(xù)運行,無法繼續(xù)運行,系統(tǒng)將當前進程系統(tǒng)將當前進程從從運行態(tài)運行態(tài)轉(zhuǎn)變?yōu)檗D(zhuǎn)變?yōu)橥瓿蔂顟B(tài)完成狀態(tài)。下下一一步步下下一一步步下下一一步步下下一一步步下下一一步步結(jié)束結(jié)束23對進程狀態(tài)更細致的劃分對進程狀態(tài)更細致的劃分 l 進程的掛起狀態(tài)進程的掛起狀態(tài) 具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換圖具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換圖事件發(fā)生事件發(fā)生如如I/O完成完成運行運行就緒就緒等待事件等待事件發(fā)生如發(fā)生如等待等待I/O時間時間片到片到調(diào)度調(diào)度阻塞阻塞完成完成終止終止靜止靜止阻塞阻塞靜止靜止就緒就緒活動空間活動空間掛起掛起激活激活掛起掛起事件發(fā)生事件發(fā)生如如I/O完成完
23、成新建新建接納接納接納接納掛起掛起激活激活n 活動阻塞活動阻塞靜靜止阻塞;止阻塞;若當前若當前系統(tǒng)中沒有就緒系統(tǒng)中沒有就緒態(tài)進程,就將處態(tài)進程,就將處于阻塞態(tài)進程至于阻塞態(tài)進程至少掛起一個,而少掛起一個,而進入靜止阻塞狀進入靜止阻塞狀態(tài),為沒有被阻態(tài),為沒有被阻塞的進程讓出主塞的進程讓出主存空間。存空間。若操作系統(tǒng)確定若操作系統(tǒng)確定當前正在運行進當前正在運行進程,或就緒態(tài)進程,或就緒態(tài)進程為維護基本性程為維護基本性能要求而需要更能要求而需要更大內(nèi)存空間,則大內(nèi)存空間,則既使存在可運行既使存在可運行狀態(tài)就緒進程也狀態(tài)就緒進程也可能出現(xiàn)這樣狀可能出現(xiàn)這樣狀態(tài)轉(zhuǎn)換而被掛起態(tài)轉(zhuǎn)換而被掛起進入靜止阻塞。
24、進入靜止阻塞。 n 靜止阻塞靜止阻塞 活活動阻塞動阻塞;這種情這種情況較少發(fā)生。如況較少發(fā)生。如果一個進程處于果一個進程處于阻塞,又不在主阻塞,又不在主存,調(diào)入它進入存,調(diào)入它進入主存似乎意義不主存似乎意義不大。但運行進程大。但運行進程執(zhí)行完,發(fā)現(xiàn)靜執(zhí)行完,發(fā)現(xiàn)靜止阻塞隊列存在止阻塞隊列存在優(yōu)先級較高者時。優(yōu)先級較高者時。n 活動就緒活動就緒靜靜止就緒止就緒;通常,通常,操作系統(tǒng)傾向掛操作系統(tǒng)傾向掛起阻塞態(tài)進程。起阻塞態(tài)進程。但有兩種情況需但有兩種情況需要這種轉(zhuǎn)換;一要這種轉(zhuǎn)換;一是得到主存更大是得到主存更大空間唯一方法是空間唯一方法是掛起一個就緒進掛起一個就緒進程;二是如果能程;二是如果能夠
25、確定處于高優(yōu)夠確定處于高優(yōu)先級阻塞狀態(tài)進先級阻塞狀態(tài)進程可以很快進入程可以很快進入就緒狀態(tài)。就緒狀態(tài)。n 靜止阻塞靜止阻塞靜靜止就緒;止就緒;同基本同基本狀態(tài)轉(zhuǎn)換一樣,狀態(tài)轉(zhuǎn)換一樣,如果等待的事件如果等待的事件發(fā)生了,則將處發(fā)生了,則將處于靜止阻塞的進于靜止阻塞的進程修改為靜止就程修改為靜止就緒狀態(tài)。緒狀態(tài)。 n 新建新建靜止就靜止就緒;緒;創(chuàng)建一個新創(chuàng)建一個新進程可以進入靜進程可以進入靜止就緒隊列。系止就緒隊列。系統(tǒng)初始執(zhí)行期間,統(tǒng)初始執(zhí)行期間,操作系統(tǒng)傾向建操作系統(tǒng)傾向建立更多就緒進程立更多就緒進程維護大量未被阻維護大量未被阻塞進程。這樣使塞進程。這樣使以后新進程由于以后新進程由于主存空間
26、不足而主存空間不足而無法進入,這時無法進入,這時就使用新建就使用新建 靜靜止就緒。止就緒。 n 各種狀態(tài)各種狀態(tài)完完成;成;在正常情況在正常情況下,一個運行進下,一個運行進程程正常,或非正正常,或非正常結(jié)束,都進入常結(jié)束,都進入完成狀態(tài)完成狀態(tài)。但如。但如果遇到進程終止果遇到進程終止事件,如果事件,如果父進父進程終止,或被創(chuàng)程終止,或被創(chuàng)建它的進程終止建它的進程終止,則一個進程可以則一個進程可以在在任何狀態(tài)下終任何狀態(tài)下終止而進入完成狀止而進入完成狀態(tài)態(tài)。 n 靜止就緒靜止就緒 活活動就緒;動就緒;若主存若主存中沒有就緒進程,中沒有就緒進程,一般操作系統(tǒng)需一般操作系統(tǒng)需要調(diào)入一個進程。要調(diào)入一
27、個進程。而當處于靜止就而當處于靜止就緒狀態(tài)的進程的緒狀態(tài)的進程的優(yōu)先級高于就緒優(yōu)先級高于就緒進程的優(yōu)先級時,進程的優(yōu)先級時,操作系統(tǒng)則往往操作系統(tǒng)則往往將處于靜止就緒將處于靜止就緒進程通過激活而進程通過激活而將其轉(zhuǎn)換為就緒將其轉(zhuǎn)換為就緒狀態(tài)狀態(tài)。 結(jié)束結(jié)束下下一一步步下下一一步步下下一一步步下下一一步步下下一一步步下下一一步步下下一一步步下下一一步步242.3 進程的描述與控制進程的描述與控制252.3.1 進程的描述進程的描述1進程映像進程映像進程映像通常就由進程映像通常就由 程序程序、數(shù)據(jù)集合數(shù)據(jù)集合、棧棧和和PCB等等4部分部分組成。組成。進程映像模型進程映像模型262.3.1 進程的描
28、述進程的描述2進程控制塊的定義與作用進程控制塊的定義與作用u進程控制塊(進程控制塊(PCB)也稱進程描述塊)也稱進程描述塊(Process Descriptor)p進程組成中最關(guān)鍵的部分,其中含有進程的進程組成中最關(guān)鍵的部分,其中含有進程的描述信息和控制信息;描述信息和控制信息;p是進程動態(tài)特性的集中反映;是進程動態(tài)特性的集中反映;p是系統(tǒng)對進程施行識別和控制的依據(jù)。是系統(tǒng)對進程施行識別和控制的依據(jù)。p每個進程都必須有一個唯一的標識符每個進程都必須有一個唯一的標識符 每個進程有惟一的進程控制塊每個進程有惟一的進程控制塊 PCB是進程存在的唯一標志是進程存在的唯一標志272.3.1 進程的描述進
29、程的描述3進程控制塊的組成進程控制塊的組成u進程控制塊一般應(yīng)包括如下內(nèi)容:進程控制塊一般應(yīng)包括如下內(nèi)容:p進程描述信息進程描述信息 進程標識符、進程名、用戶標識符進程標識符、進程名、用戶標識符p處理器狀態(tài)信息(現(xiàn)場保護區(qū))處理器狀態(tài)信息(現(xiàn)場保護區(qū)) 用戶可見寄存器、程序計數(shù)器、條件碼、狀態(tài)信用戶可見寄存器、程序計數(shù)器、條件碼、狀態(tài)信息、棧指針息、棧指針p進程控制信息進程控制信息 當前狀態(tài)、優(yōu)先級當前狀態(tài)、優(yōu)先級(priority)、調(diào)度信息、進程間、調(diào)度信息、進程間通信、資源占用信息、進程實體信息、族系關(guān)系通信、資源占用信息、進程實體信息、族系關(guān)系282.3.2 進程的控制進程的控制u進程是
30、有生命周期的,進程是有生命周期的,產(chǎn)生產(chǎn)生、運行運行、暫停暫停、終止終止。u進程控制包括:進程控制包括:進程創(chuàng)建進程創(chuàng)建、進程撤消進程撤消、進程進程阻塞阻塞、進程喚醒進程喚醒、改變進程優(yōu)先數(shù)、調(diào)度進、改變進程優(yōu)先數(shù)、調(diào)度進程運行。程運行。u四種原語四種原語p進程阻塞(運行狀態(tài)轉(zhuǎn)變?yōu)榈却隣顟B(tài))進程阻塞(運行狀態(tài)轉(zhuǎn)變?yōu)榈却隣顟B(tài))p進程喚醒(等待狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài))進程喚醒(等待狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài))p進程創(chuàng)建(新建進程轉(zhuǎn)變?yōu)榫途w狀態(tài))進程創(chuàng)建(新建進程轉(zhuǎn)變?yōu)榫途w狀態(tài))p進程調(diào)度(就緒狀態(tài)轉(zhuǎn)變?yōu)檫\行狀態(tài))。進程調(diào)度(就緒狀態(tài)轉(zhuǎn)變?yōu)檫\行狀態(tài))。 292.3.2 進程的控制進程的控制-進程的創(chuàng)建進程的創(chuàng)建
31、ucreate(name,priority,start_addr)u創(chuàng)建一個指定標識符的進程。創(chuàng)建一個指定標識符的進程。302.3.2 進程的控制進程的控制-進程的撤銷進程的撤銷ukill(exit)u撤銷當前運行的進程。撤銷當前運行的進程。312.3.2 進程的控制進程的控制-進程阻塞進程阻塞ususp(chan)u終止調(diào)用進程的執(zhí)行,加入終止調(diào)用進程的執(zhí)行,加入等待等待chan的等待隊列中。的等待隊列中。322.3.2 進程的控制進程的控制-進程喚醒進程喚醒uwakeup(chan)u當進程等待的事件發(fā)當進程等待的事件發(fā)生時,喚醒等待該事生時,喚醒等待該事件的所有進程或等待件的所有進程或等
32、待該事件的首進程。該事件的首進程。332.4 進程的組織進程的組織342.4.1 進程的組成進程的組成u進程是由進程是由程序段程序段、數(shù)據(jù)段數(shù)據(jù)段和和進程控制塊進程控制塊組組成的成的 。u程序段描述了進程本身所要完成的功能。程序段描述了進程本身所要完成的功能。數(shù)據(jù)段是程序操作的一組存儲單元,是程數(shù)據(jù)段是程序操作的一組存儲單元,是程序操作的對象。當進程存在于系統(tǒng)時進序操作的對象。當進程存在于系統(tǒng)時進程控制制塊程控制制塊PCB就代表了這個進程。就代表了這個進程。352.4.2 PCB的組織方式的組織方式1線性方式線性方式 PCB線性隊列示意圖線性隊列示意圖 36PCB鏈接隊列示意圖鏈接隊列示意圖2
33、.4.2 PCB的組織方式的組織方式2鏈接方式鏈接方式372.4.2 PCB的組織方式的組織方式 PCB索引結(jié)構(gòu)示意圖索引結(jié)構(gòu)示意圖3索引方式索引方式382.5 進程的通信進程的通信u低級通信方式低級通信方式p信號量信號量u高級通信方式高級通信方式p共享存儲器系統(tǒng)共享存儲器系統(tǒng)p消息傳遞系統(tǒng)消息傳遞系統(tǒng)p管道通信管道通信392.5.1 共享存儲器系統(tǒng)共享存儲器系統(tǒng)u為了傳輸大量數(shù)據(jù),在存儲器中劃出一塊為了傳輸大量數(shù)據(jù),在存儲器中劃出一塊共享存儲區(qū),相互通信的進程共享存儲區(qū),相互通信的進程共享某些數(shù)共享某些數(shù)據(jù)結(jié)構(gòu)據(jù)結(jié)構(gòu)或或共享存儲區(qū)共享存儲區(qū)。p基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式基于共享數(shù)據(jù)結(jié)構(gòu)的通信
34、方式p基于共享存儲區(qū)的通信方式基于共享存儲區(qū)的通信方式402.5.2 消息傳遞系統(tǒng)消息傳遞系統(tǒng)u消息系統(tǒng)中,進程間的信息交換以消息或報文為消息系統(tǒng)中,進程間的信息交換以消息或報文為單位,程序員直接利用系統(tǒng)提供的一組通信命令單位,程序員直接利用系統(tǒng)提供的一組通信命令(原語原語)來實現(xiàn)通信。來實現(xiàn)通信。 u消息系統(tǒng)的通信方式可分成以下兩種:消息系統(tǒng)的通信方式可分成以下兩種: p直接通信方式直接通信方式 Send (receiver, message); Receive (sender, message);p間接通信方式間接通信方式 在間接通信方式中,進程之間需要通過某種中間實體,來暫存在間接通信方
35、式中,進程之間需要通過某種中間實體,來暫存發(fā)送進程發(fā)送給某個或某些目標進程的消息。接收進程則從中發(fā)送進程發(fā)送給某個或某些目標進程的消息。接收進程則從中取出發(fā)送給自己的消息。取出發(fā)送給自己的消息。 412.5.3 管道通信管道通信u管道通信是指用于連接一個管道通信是指用于連接一個寫進程寫進程和一個和一個讀進程讀進程的一個共的一個共享文件。這是基于原有的文件系統(tǒng)形成的一種通信方式,享文件。這是基于原有的文件系統(tǒng)形成的一種通信方式,即它利用共享文件實現(xiàn)進程間的通信。即它利用共享文件實現(xiàn)進程間的通信。 u為了協(xié)調(diào)雙方的通信,管道通信機制必須提供三方面的協(xié)為了協(xié)調(diào)雙方的通信,管道通信機制必須提供三方面的
36、協(xié)調(diào)能力:調(diào)能力:p互斥互斥 當一個進程正在對當一個進程正在對pipe進行讀寫操作時,另一進程必須等待。進行讀寫操作時,另一進程必須等待。p同步同步 當寫當寫(輸入輸入)進程把一定數(shù)據(jù)進程把一定數(shù)據(jù)(如如4kB)寫入寫入pipe后便去睡眠等待,直到讀后便去睡眠等待,直到讀(輸出輸出)進程取走數(shù)據(jù)后再把它喚醒。當讀進程讀一空進程取走數(shù)據(jù)后再把它喚醒。當讀進程讀一空pipe時也應(yīng)睡眠時也應(yīng)睡眠等待,直到寫進程將消息寫入管道后,才將它喚醒。等待,直到寫進程將消息寫入管道后,才將它喚醒。p判斷對方是否存在判斷對方是否存在 只有已確定對方存在時,方能進行通信。只有已確定對方存在時,方能進行通信。422.
37、6 線程線程432.6.1 線程的概念線程的概念u線程(線程(thread)是比進程更小的獨立運行單位。)是比進程更小的獨立運行單位。u線程的引入線程的引入p系統(tǒng)在創(chuàng)建進程時,必須為之分配其所必須的、除了系統(tǒng)在創(chuàng)建進程時,必須為之分配其所必須的、除了CPU以外的所有資源。以外的所有資源。 p進程在建立以后到被撤消之前,要經(jīng)歷若干次進程的進程在建立以后到被撤消之前,要經(jīng)歷若干次進程的狀態(tài)轉(zhuǎn)換,在進行進程狀態(tài)轉(zhuǎn)換時,要保留進程執(zhí)行狀態(tài)轉(zhuǎn)換,在進行進程狀態(tài)轉(zhuǎn)換時,要保留進程執(zhí)行時的時的CPU環(huán)境,并設(shè)置新選中進程的環(huán)境,并設(shè)置新選中進程的CPU環(huán)境,為此環(huán)境,為此系統(tǒng)需要花費不少的處理機的時間。系統(tǒng)
38、需要花費不少的處理機的時間。 p由于進程不僅是系統(tǒng)調(diào)度的基本單位還是一個資源的由于進程不僅是系統(tǒng)調(diào)度的基本單位還是一個資源的擁有者,這雙重身份使得進程在創(chuàng)建、撤消以及狀態(tài)擁有者,這雙重身份使得進程在創(chuàng)建、撤消以及狀態(tài)轉(zhuǎn)換中,系統(tǒng)要為之付出較大的時間和空間開銷。轉(zhuǎn)換中,系統(tǒng)要為之付出較大的時間和空間開銷。p現(xiàn)代操作系統(tǒng)把資源分配和調(diào)度分離開來,讓進程仍現(xiàn)代操作系統(tǒng)把資源分配和調(diào)度分離開來,讓進程仍作為資源分配的單位,只作為資源擁有者,而把線程作為資源分配的單位,只作為資源擁有者,而把線程作為系統(tǒng)調(diào)度的單位。作為系統(tǒng)調(diào)度的單位。 442.6.1 線程的概念線程的概念u單線程進程和多線程進程的結(jié)構(gòu)單
39、線程進程和多線程進程的結(jié)構(gòu)p一個進程至少擁有一個線程一個進程至少擁有一個線程(該線程為主線程該線程為主線程),進程根據(jù)需要可以創(chuàng)建若干個線程。進程根據(jù)需要可以創(chuàng)建若干個線程。452.6.1 線程的概念線程的概念u線程的狀態(tài)線程的狀態(tài)p線程創(chuàng)建后運行過程三個主要狀態(tài)是:運行、就緒、阻線程創(chuàng)建后運行過程三個主要狀態(tài)是:運行、就緒、阻塞。塞。 p每個線程都有一個每個線程都有一個thread結(jié)構(gòu),即結(jié)構(gòu),即TCB。462.6.2 線程與進程的比較線程與進程的比較u調(diào)度單位調(diào)度單位p在引入線程的操作系統(tǒng)中,進程作為資源分配的基本單位,線程在引入線程的操作系統(tǒng)中,進程作為資源分配的基本單位,線程作為調(diào)度和
40、分派的基本單位作為調(diào)度和分派的基本單位 。u并發(fā)性并發(fā)性p作為比進程更小的執(zhí)行單位,一個進程中的多個線程之間,也可作為比進程更小的執(zhí)行單位,一個進程中的多個線程之間,也可以并發(fā)執(zhí)行,因而操作系統(tǒng)具有更好的并發(fā)性以并發(fā)執(zhí)行,因而操作系統(tǒng)具有更好的并發(fā)性 。u擁有資源擁有資源p在多線程環(huán)境中,進程仍然有一個進程控制塊和用戶地址空間。在多線程環(huán)境中,進程仍然有一個進程控制塊和用戶地址空間。線程本身基本上不擁有資源,只擁有少量必不可少的資源。線程本身基本上不擁有資源,只擁有少量必不可少的資源。 u系統(tǒng)開銷系統(tǒng)開銷p在一個進程中創(chuàng)建一個新的線程比創(chuàng)建一個全新的進程所需要的在一個進程中創(chuàng)建一個新的線程比創(chuàng)
41、建一個全新的進程所需要的時間要少。撤消一個線程比撤消一個進程所需要的時間要少。時間要少。撤消一個線程比撤消一個進程所需要的時間要少。 472.6.3 線程的實現(xiàn)與模型線程的實現(xiàn)與模型u是否依賴于內(nèi)核:是否依賴于內(nèi)核:用戶級線程用戶級線程、內(nèi)核級線程內(nèi)核級線程、混合式線程混合式線程線程線程實現(xiàn)方式實現(xiàn)方式線程庫線程庫用戶級線程用戶級線程用 戶用 戶空間空間內(nèi) 核內(nèi) 核空間空間P P進程進程內(nèi)核級線程內(nèi)核級線程用 戶用 戶空間空間內(nèi) 核內(nèi) 核空間空間P P進程進程混合式線程混合式線程內(nèi) 核內(nèi) 核空間空間P P線程庫線程庫P P進程進程用 戶用 戶空間空間482.6.3 線程的實現(xiàn)與模型線程的實現(xiàn)與
42、模型u三種模型三種模型p一對一一對一p多對多多對多p多對一多對一一對一一對一模型模型用戶級線程用戶級線程內(nèi)核級線程內(nèi)核級線程內(nèi)核級線程內(nèi)核級線程用戶級線程用戶級線程多多對一模型對一模型內(nèi)核級線程內(nèi)核級線程用戶級線程用戶級線程多多對多模型對多模型492.7 Linux中的進程中的進程uLinux是一個多任務(wù)多用戶的操作系統(tǒng),支是一個多任務(wù)多用戶的操作系統(tǒng),支持多個進程在系統(tǒng)中并發(fā)執(zhí)行,每個進程持多個進程在系統(tǒng)中并發(fā)執(zhí)行,每個進程都具有一定的功能和權(quán)限,它們都運行在都具有一定的功能和權(quán)限,它們都運行在各自獨立的虛擬地址空間中。并且進程也各自獨立的虛擬地址空間中。并且進程也是系統(tǒng)資源分配的基本單位和
43、使用是系統(tǒng)資源分配的基本單位和使用CPU運運行的基本調(diào)度單位。行的基本調(diào)度單位。 502.7.1 Linux中進程的概念中進程的概念uLinux中進程實體的組成中進程實體的組成p正文段正文段:只讀的指令代碼,允許多個進程共享:只讀的指令代碼,允許多個進程共享該代碼段。該代碼段。p用戶數(shù)據(jù)段用戶數(shù)據(jù)段:進程執(zhí)行時直接操作的所有數(shù)據(jù)。:進程執(zhí)行時直接操作的所有數(shù)據(jù)。p系統(tǒng)數(shù)據(jù)段系統(tǒng)數(shù)據(jù)段:存放進程的控制信息,即:存放進程的控制信息,即PCB。512.7.1 Linux中進程的概念中進程的概念uLinux中進程的狀態(tài)中進程的狀態(tài) 被搶先 可中斷狀態(tài) 不可中斷狀態(tài) 僵死狀態(tài) 可運行狀態(tài) 調(diào)度 創(chuàng)建 信
44、號 信號 終止 事件 信號或事件 執(zhí)行 就緒 暫停狀態(tài) 522.7.1 Linux中進程的概念中進程的概念uLinux進程控制塊的組成進程控制塊的組成p進程當前的狀態(tài)進程當前的狀態(tài)p調(diào)度信息調(diào)度信息p進程標識符進程標識符p進程通信信息進程通信信息p進程的家族關(guān)系進程的家族關(guān)系p時間和定時信息時間和定時信息p文件系統(tǒng)信息文件系統(tǒng)信息p存儲管理信息存儲管理信息pCPU現(xiàn)場信息現(xiàn)場信息532.7.2 Linux的進程控制的進程控制u進程的創(chuàng)建進程的創(chuàng)建u進程的執(zhí)行進程的執(zhí)行u進程的終止進程的終止u進程的等待進程的等待542.7.2 Linux的進程控制的進程控制u進程的創(chuàng)建進程的創(chuàng)建p在在Linux系統(tǒng)初啟時,只生成初始化進程,其他進程系統(tǒng)初啟時,只生成初始化進程,其他進程都是由當前進程通過系統(tǒng)調(diào)用都是由當前進程通過系統(tǒng)調(diào)用fork()函數(shù)建立的。調(diào)函數(shù)建立的。調(diào)用進程稱為父進程,通過用進程稱為父進程,通過fork()建立的新進程為子進建立的新進程為子進程。程。u進程的執(zhí)行進程的執(zhí)行p可執(zhí)行的文件名作為可執(zhí)行的文件名作為L1nux的的exect()系統(tǒng)調(diào)用參數(shù)。系統(tǒng)調(diào)用參數(shù)。該可執(zhí)行文件可以是具有不同格式的
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境修復(fù)過程中企業(yè)創(chuàng)新與產(chǎn)業(yè)升級的協(xié)同
- 高技能人才培養(yǎng)的內(nèi)涵與實施路徑探索
- 甘肅省白銀市育才中學(xué)2025屆數(shù)學(xué)八上期末質(zhì)量檢測模擬試題含解析
- 遼寧理工職業(yè)大學(xué)《比較政治制度》2023-2024學(xué)年第一學(xué)期期末試卷
- 城市綠化槽棎種植與養(yǎng)護合同
- 電視臺節(jié)目制作人述職報告
- 如何應(yīng)用基因編輯技術(shù)治療遺傳性疾病
- 企業(yè)培訓(xùn)項目的設(shè)計與實施管理報告
- 公共營養(yǎng)師技能考核教學(xué)計劃
- 游戲策劃與關(guān)卡設(shè)計教程
- 中小學(xué)心理健康教育骨干教師培訓(xùn)考試題庫及答案
- 珍愛生命,預(yù)防自殺(文庫版)
- 《古蘭》中文譯文版
- GB/T 8813-2008硬質(zhì)泡沫塑料壓縮性能的測定
- GB/T 19741-2005液體食品包裝用塑料復(fù)合膜、袋
- 礦相學(xué)課程設(shè)計 -個舊錫礦
- 上海交通大學(xué)學(xué)生生存手冊
- 征信查詢委托書(共4篇)
- 勞動防護用品配備標準(國標)
- 管道工技師理論知識題庫及答案(完整版)
- T∕ZZB 2752-2022 聚合級苯乙烯
評論
0/150
提交評論