版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、進(jìn)程描述與控制課件進(jìn)程描述與控制課件1.順序程序(1/2)程序: 指令或語(yǔ)句序列,體現(xiàn)了某種算法。 所有程序是順序的。順序環(huán)境: 計(jì)算機(jī)系統(tǒng)中,只有一個(gè)程序在運(yùn)行; 該程序獨(dú)占系統(tǒng)中所有資源; 其執(zhí)行不受外界影響。1.順序程序(1/2)程序:特征:程序執(zhí)行的順序性一個(gè)執(zhí)行結(jié)束,另一個(gè)開始執(zhí)行。程序執(zhí)行的封閉性 獨(dú)占資源,執(zhí)行過(guò)程中不受外界影響。程序執(zhí)行結(jié)果的確定性 即:程序結(jié)果的可再現(xiàn)性 程序運(yùn)行結(jié)果與程序執(zhí)行速度無(wú)關(guān),只要初始狀態(tài)相同,結(jié)果應(yīng)相同。順序程序(2/2)特征:順序程序(2/2)2.并發(fā)程序(1/4)并發(fā)環(huán)境: 一定時(shí)間內(nèi),物理機(jī)器上有兩個(gè)或兩個(gè)以上的程序同時(shí)處于開始運(yùn)行但尚未結(jié)束
2、的狀態(tài),并且次序不是事先確定的。BAABBAAB引入并發(fā)的目的: 為了提高資源利用率,從而提高系統(tǒng)效率。2.并發(fā)程序(1/4)并發(fā)環(huán)境:BAABBAAB引入并發(fā)的目在順序環(huán)境下,A先執(zhí)行,B再執(zhí)行 CPU利用率= 40/80 = 50% DEV1利用率= 15/80 =19% DEV2利用率= 25/80 =31% 并發(fā)程序(2/4) t(s) t(s)CPU DEV1 DEV2 CPU CPUA1015203040 DEV2CPUDEV 1 DEV2 CPUB1020304025在順序環(huán)境下,A先執(zhí)行,B再執(zhí)行 CPU利用率=并發(fā)程序(3/4)ABCPUDEV1DEV2CPUCPU10152
3、03040 t(s)25DEV1CPU3545DEV2CPUDEV2在并發(fā)環(huán)境下,A、B可同時(shí)執(zhí)行 CPU利用率= 40/45 = 89% DEV1利用率= 15/45 =33% DEV2利用率= 25/45 =56% 并發(fā)程序(3/4)ABCPUDEV1DEV2CPUCPU10特征:(1)程序執(zhí)行結(jié)果的不可再現(xiàn)性 并發(fā)程序執(zhí)行的結(jié)果與其執(zhí)行的相對(duì)速度有關(guān),是不確定的。(2)在并發(fā)環(huán)境下程序的執(zhí)行是間斷性的 執(zhí)行停執(zhí)行(3)資源共享 系統(tǒng)中資源被多個(gè)程序使用。(4)獨(dú)立性和制約性獨(dú)立的相對(duì)速度、起始時(shí)間。 程序之間可相互作用(相互制約), 可分為直接作用和間接作用。(5)程序和計(jì)算不再一一對(duì)應(yīng)
4、 (計(jì)算:一個(gè)程序的執(zhí)行)并發(fā)程序(4/4)特征:并發(fā)程序(4/4)3.多道程序設(shè)計(jì)(Multiprogramming)多道程序設(shè)計(jì):允許多個(gè)程序同時(shí)進(jìn)入內(nèi)存并運(yùn)行,其目的是為了提高系統(tǒng)效率??紤]因素:在多道程序環(huán)境下如何向用戶提供服務(wù)在并發(fā)程序之間如何正確傳遞消息(通信)如何對(duì)CPU進(jìn)行調(diào)度,保證每個(gè)用戶相對(duì)公平地得到CPU(CPU是一個(gè)只可調(diào)度,不可分配的資源)如何管理其他資源 當(dāng)各用戶對(duì)資源使用上發(fā)生沖突時(shí),如何處理競(jìng)爭(zhēng)。對(duì)CPU只能通過(guò)調(diào)度來(lái)解決競(jìng)爭(zhēng)問(wèn)題,而對(duì)于其他資源通過(guò)申請(qǐng)分配使用回收的辦法進(jìn)行管理,當(dāng)且僅當(dāng)占有CPU的時(shí)候才可以申請(qǐng),否則要排隊(duì)等候。3.多道程序設(shè)計(jì)(Multip
5、rogramming)多道程序4.與時(shí)間有關(guān)的錯(cuò)誤(1/4)一飛機(jī)訂票系統(tǒng),兩個(gè)終端,運(yùn)行T1、T2進(jìn)程T1 : T2:. .read(x); read(x);if x=1 then if x=1 then x:=x-1; x:=x-1;write(x); write(x);. .4.與時(shí)間有關(guān)的錯(cuò)誤(1/4)一飛機(jī)訂票系統(tǒng),兩個(gè)終端,運(yùn)行Cobegin get; copy; put;Coendgetcopyputfstg復(fù)制一個(gè)記錄與時(shí)間有關(guān)的錯(cuò)誤(2/4)Cobegingetcopyputfstg復(fù)制一個(gè)記錄與時(shí)間 f s t g初始狀態(tài) 3,4,.,m 2 2 (1,2)g,c,p 4,
6、5,.,m 3 3 (1,2,3) g,p,c 4,5,.,m 3 3 (1,2,2) Xc,g,p 4,5,.,m 3 2 (1,2,2) Xc,p,g 4,5,.,m 3 2 (1,2,2) Xp,c,g 4,5,.,m 3 2 (1,2,2) Xp,g,c 4,5,.,m 3 3 (1,2,2) X 設(shè)信息長(zhǎng)度為m,有多少種可能性?與時(shí)間有關(guān)的錯(cuò)誤(3/4) f s t gcipic1g2p1c2g3p2g1并發(fā)環(huán)境下程序間的制約關(guān)系與時(shí)間有關(guān)的錯(cuò)誤(4/4)cipic1g2p1c2g3p2g1并發(fā)環(huán)境下程序間的制約關(guān)二、進(jìn)程的基本概念進(jìn)程的概念進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程控制塊(PCB)進(jìn)程
7、映像 (進(jìn)程要素)進(jìn)程控制進(jìn)程的特征二、進(jìn)程的基本概念進(jìn)程的概念1.進(jìn)程的概念定義:Process 進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。又稱任務(wù)(Task) 為了描述程序在并發(fā)執(zhí)行時(shí)對(duì)系統(tǒng)資源的共享,所需的一個(gè)描述程序執(zhí)行時(shí)動(dòng)態(tài)特征的概念。1.進(jìn)程的概念定義:Process進(jìn)程何時(shí)創(chuàng)建?用戶登錄提交一個(gè)程序執(zhí)行由OS創(chuàng)建,以向用戶提供服務(wù)( 如:打印文件) 由已存在的一進(jìn)程創(chuàng)建一個(gè)用戶程序可創(chuàng)建成多個(gè)進(jìn)程進(jìn)程何時(shí)創(chuàng)建?用戶登錄進(jìn)程何時(shí)中止?程序執(zhí)行Halt指令用戶退出登錄進(jìn)程執(zhí)行一個(gè)中止服務(wù)請(qǐng)求出錯(cuò)及失敗因素進(jìn)程何時(shí)中止?程序執(zhí)行Hal
8、t指令進(jìn)程中止的原因(1/2)正常結(jié)束給定時(shí)限到缺少內(nèi)存存儲(chǔ)器出界保護(hù)性出錯(cuò)如,寫只讀文件算術(shù)錯(cuò)超出時(shí)間進(jìn)程等待超過(guò)對(duì)某事件的最大值進(jìn)程中止的原因(1/2)正常結(jié)束進(jìn)程中止的原因(2/2)I/O 失敗無(wú)效指令如,試圖執(zhí)行數(shù)據(jù)特權(quán)指令操作系統(tǒng)干預(yù)如,當(dāng)死鎖發(fā)生時(shí)父進(jìn)程請(qǐng)求中止某一子進(jìn)程父進(jìn)程中止,所以子進(jìn)程也中止進(jìn)程中止的原因(2/2)I/O 失敗程序與進(jìn)程的區(qū)別進(jìn)程能真實(shí)地描述并發(fā)(程序不能)進(jìn)程是由程序和數(shù)據(jù)兩部分組成的程序是靜態(tài)的,進(jìn)程是動(dòng)態(tài)的進(jìn)程有生命周期,有誕生有消亡,短暫的;而程序是相對(duì)長(zhǎng)久的一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程進(jìn)程具有創(chuàng)建其他進(jìn)程的功能程序與進(jìn)程的區(qū)別進(jìn)程能真實(shí)地描述并發(fā)(程序不
9、能)進(jìn)程分類進(jìn)程的分類:系統(tǒng)進(jìn)程用戶進(jìn)程系統(tǒng)進(jìn)程優(yōu)先于用戶進(jìn)程進(jìn)程分類進(jìn)程的分類:2.進(jìn)程的基本狀態(tài)及其轉(zhuǎn)換進(jìn)程的三種基本狀態(tài):運(yùn)行態(tài)、就緒態(tài)、等待態(tài)進(jìn)程在消亡前處于且僅處于三種基本狀態(tài)之一。不同系統(tǒng)設(shè)置的進(jìn)程狀態(tài)數(shù)目不同。2.進(jìn)程的基本狀態(tài)及其轉(zhuǎn)換進(jìn)程的三種基本狀態(tài):進(jìn)程的三種基本狀態(tài)運(yùn)行態(tài)(Running):進(jìn)程占有CPU,并在CPU上運(yùn)行。就緒態(tài)(Ready):一個(gè)進(jìn)程已經(jīng)具備運(yùn)行條件,但由于無(wú)CPU暫時(shí)不能運(yùn)行的狀態(tài)(當(dāng)調(diào)度給其CPU時(shí),立即可以運(yùn)行)。等待態(tài)(Blocked):阻塞態(tài)、封鎖態(tài)、睡眠態(tài)。指進(jìn)程因等待某種事件的發(fā)生而暫時(shí)不能運(yùn)行的狀態(tài)(即使CPU空閑,該進(jìn)程也不可運(yùn)行)。
10、進(jìn)程的三種基本狀態(tài)運(yùn)行態(tài)(Running):運(yùn)行就緒等待進(jìn)程的基本狀態(tài)及其轉(zhuǎn)換運(yùn)行就緒等待進(jìn)程的基本狀態(tài)及其轉(zhuǎn)換進(jìn)程狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換:在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變化,這三種基本狀態(tài)可以依據(jù)一定的條件相互轉(zhuǎn)換。就緒運(yùn)行運(yùn)行就緒運(yùn)行等待等待就緒進(jìn)程狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換:進(jìn)程狀態(tài)轉(zhuǎn)換的原因就緒 - 運(yùn)行調(diào)度程序選擇一個(gè)新的進(jìn)程運(yùn)行。運(yùn)行 - 就緒運(yùn)行進(jìn)程用完了時(shí)間片。一個(gè)高優(yōu)先級(jí)進(jìn)程處于就緒狀態(tài),中斷正在運(yùn)行的進(jìn)程。運(yùn)行 - 等待當(dāng)一個(gè)進(jìn)程必須等待時(shí):OS尚未完成服務(wù);對(duì)一資源的訪問(wèn)尚不能進(jìn)行;初始化I/O 且必須等待結(jié)果;等待某一進(jìn)程提供輸入。等待 - 就緒當(dāng)所等待的事件發(fā)生時(shí)
11、。進(jìn)程狀態(tài)轉(zhuǎn)換的原因就緒 - 運(yùn)行創(chuàng)建狀態(tài),終止?fàn)顟B(tài)掛起(suspend)狀態(tài) 進(jìn)程沒有占用內(nèi)存空間 處在掛起狀態(tài)的進(jìn)程映像在磁盤上 (調(diào)節(jié)負(fù)載,對(duì)換)進(jìn)程的其他狀態(tài)已完成創(chuàng)建一進(jìn)程所必要的工作已構(gòu)造了進(jìn)程標(biāo)識(shí)符已創(chuàng)建了管理進(jìn)程所需的表格但還沒有允許執(zhí)行該進(jìn)程 (尚未同意)因?yàn)橘Y源有限中止后,進(jìn)程移入該狀態(tài)它不再有執(zhí)行資格表格和其它信息暫時(shí)由輔助程序保留可完成一些數(shù)據(jù)統(tǒng)計(jì)工作當(dāng)數(shù)據(jù)不再需要后,進(jìn)程(和它的表格)被刪除創(chuàng)建狀態(tài),終止?fàn)顟B(tài)進(jìn)程的其他狀態(tài)已完成創(chuàng)建一進(jìn)程所必要的工作五狀態(tài)進(jìn)程模型William Stallings五狀態(tài)進(jìn)程模型William Stallings七狀態(tài)進(jìn)程模型(1/4)
12、William Stallings七狀態(tài)進(jìn)程模型(1/4)William Stallings七狀態(tài)進(jìn)程模型(2/4)就緒狀態(tài)(Ready):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行狀態(tài)阻塞狀態(tài)(Blocked):進(jìn)程在內(nèi)存并等待某事件的出現(xiàn)阻塞掛起狀態(tài)(Blocked, suspend):進(jìn)程在外存并等待某事件的出現(xiàn)就緒掛起狀態(tài)(Ready, suspend):進(jìn)程在外存,但只要進(jìn)入內(nèi)存,即可運(yùn)行七狀態(tài)進(jìn)程模型(2/4)就緒狀態(tài)(Ready):掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:阻塞阻塞掛起:沒有進(jìn)程處于就緒狀態(tài)或就緒進(jìn)程要求更多內(nèi)存資源時(shí),發(fā)生這種轉(zhuǎn)換,以提交新進(jìn)程或運(yùn)行
13、就緒進(jìn)程。就緒就緒掛起:當(dāng)有高優(yōu)先級(jí)阻塞(系統(tǒng)認(rèn)為會(huì)很快就緒的)進(jìn)程和低優(yōu)先級(jí)就緒進(jìn)程時(shí),系統(tǒng)會(huì)選擇掛起低優(yōu)先級(jí)就緒進(jìn)程。運(yùn)行就緒掛起:對(duì)搶占式系統(tǒng),當(dāng)有高優(yōu)先級(jí)阻塞掛起進(jìn)程因事件出現(xiàn)而進(jìn)入就緒掛起時(shí),系統(tǒng)可能會(huì)把運(yùn)行進(jìn)程轉(zhuǎn)到就緒掛起狀態(tài)。七狀態(tài)進(jìn)程模型(3/4)掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下激活(Activate):把一個(gè)進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:就緒掛起就緒:沒有就緒進(jìn)程或掛起就緒進(jìn)程優(yōu)先級(jí)高于就緒進(jìn)程時(shí),發(fā)生轉(zhuǎn)換。阻塞掛起阻塞:當(dāng)一個(gè)進(jìn)程釋放足夠內(nèi)存時(shí),系統(tǒng)會(huì)把一個(gè)高優(yōu)先級(jí)阻塞掛起(系統(tǒng)認(rèn)為會(huì)很快出現(xiàn)所等待的事件)進(jìn)程轉(zhuǎn)換為阻塞進(jìn)程(調(diào)入內(nèi)存)
14、。七狀態(tài)進(jìn)程模型(4/4)激活(Activate):把一個(gè)進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以Linux進(jìn)程狀態(tài)(1/3)Linux的進(jìn)程狀態(tài)有五種TASK_RUNNING:表示進(jìn)程具備運(yùn)行的資格,正在運(yùn)行或等待被調(diào)度執(zhí)行。進(jìn)程控制塊中有一個(gè)run_list成員,所有處于TASK_RUNNING狀態(tài)的進(jìn)程都通過(guò)該成員鏈在一起,稱之為可運(yùn)行隊(duì)列。TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE:兩種狀態(tài)均表示進(jìn)程處于等待狀態(tài)。TASK_INTERRUPTIBLE除了資源滿足時(shí)可以被喚醒外,還可以被信號(hào)喚醒,而TASK_UNINTERRUPTIBLE則不行。Linux進(jìn)程
15、狀態(tài)(1/3)Linux的進(jìn)程狀態(tài)有五種Linux進(jìn)程狀態(tài)(2/3)TASK_STOPPED:進(jìn)程處于暫停狀態(tài),主要用于調(diào)試目的。如正在運(yùn)行的進(jìn)程收到SIGSTOP信號(hào)將進(jìn)入TASK_STOPPED狀態(tài)。TASK_ZOMBIE:表示進(jìn)程已經(jīng)結(jié)束運(yùn)行并釋放了大部分占用的資源,但task_struct結(jié)構(gòu)還未被釋放。Linux進(jìn)程狀態(tài)(2/3)TASK_STOPPED:進(jìn)程處Linux進(jìn)程狀態(tài)(3/3)Linux進(jìn)程狀態(tài)(3/3)3.進(jìn)程控制塊(Process Control Block,PCB)概念: 系統(tǒng)為了管理進(jìn)程設(shè)置的一個(gè)專門的數(shù)據(jù)結(jié)構(gòu),用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程(又
16、稱進(jìn)程描述符、進(jìn)程屬性)。 系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。進(jìn)程與PCB是一一對(duì)應(yīng)的。3.進(jìn)程控制塊(Process Control BlockPCB的內(nèi)容(1/3)進(jìn)程描述信息:進(jìn)程標(biāo)識(shí)符(process ID),唯一,通常是一個(gè)整數(shù)進(jìn)程名,通常基于可執(zhí)行文件名(不唯一)用戶標(biāo)識(shí)符(user ID)進(jìn)程控制信息:當(dāng)前狀態(tài)優(yōu)先級(jí)(priority)代碼執(zhí)行入口地址程序的外存地址運(yùn)行統(tǒng)計(jì)信息(執(zhí)行時(shí)間、頁(yè)面調(diào)度)進(jìn)程間同步和通信;阻塞原因PCB的內(nèi)容(1/3)進(jìn)程描述信息:PCB的內(nèi)容(2/3)進(jìn)程的隊(duì)列指針進(jìn)程的消息隊(duì)列指針?biāo)鶕碛械馁Y源和使用情況:虛擬地
17、址空間的現(xiàn)狀打開文件列表CPU現(xiàn)場(chǎng)保護(hù)信息:寄存器值(通用、程序計(jì)數(shù)器PC、程序狀態(tài)字PSW)指向賦予該進(jìn)程的段/頁(yè)表的指針PCB的內(nèi)容(2/3)進(jìn)程的隊(duì)列指針PCB的內(nèi)容(3/3)A. S. TanenbaumPCB的內(nèi)容(3/3)A. S. TanenbaumPCB組織方式(1/5)PCB表:系統(tǒng)把所有PCB組織在一起,并把它們放在內(nèi)存的固定區(qū)域,就構(gòu)成了PCB表。PCB表的大小決定了系統(tǒng)中最多可同時(shí)存在的進(jìn)程個(gè)數(shù),稱為系統(tǒng)的并發(fā)度。(注:多道程序中的多道與系統(tǒng)并發(fā)度不同)PCB組織方式(1/5)PCB表:PCB組織方式(2/5)鏈接結(jié)構(gòu):同一狀態(tài)進(jìn)程的PCB組成一個(gè)鏈表,不同狀態(tài)對(duì)應(yīng)多個(gè)
18、不同的鏈表。就緒鏈表、阻塞鏈表。 索引結(jié)構(gòu):對(duì)具有相同狀態(tài)的進(jìn)程,分別設(shè)置各自的PCB索引表,表明PCB在PCB表中的地址。進(jìn)程隊(duì)列:不同狀態(tài)進(jìn)程分別組成隊(duì)列。運(yùn)行隊(duì)列、就緒隊(duì)列、等待隊(duì)列。PCB組織方式(2/5)鏈接結(jié)構(gòu):PCB組織方式(3/5)William StallingsPCB組織方式(3/5)William StallingsPCB組織方式(4/5)索引表就緒隊(duì)列等待隊(duì)列 1等待隊(duì)列 2PCB 1PCB 2PCB 3PCB 4PCB 5PCB 6PCB 7PCB n PCB表PCB組織方式(4/5)索引表就緒隊(duì)列等待隊(duì)列 1等待隊(duì)列 PCB組織方式(5/5)William Stal
19、lingsPCB組織方式(5/5)William Stallings4.進(jìn)程映像 (進(jìn)程要素)代碼段(用戶程序)數(shù)據(jù)段(用戶數(shù)據(jù))用戶棧(堆棧)用于過(guò)程調(diào)用和參數(shù)傳遞與系統(tǒng)棧區(qū)分進(jìn)程控制塊PCB (進(jìn)程屬性)用戶進(jìn)程不能直接訪問(wèn)、修改自己的PCB4.進(jìn)程映像 (進(jìn)程要素)代碼段(用戶程序)進(jìn)程虛擬地址空間進(jìn)程虛擬地址空間進(jìn)程上下文環(huán)境(context)對(duì)進(jìn)程執(zhí)行活動(dòng)全過(guò)程的靜態(tài)描述。由進(jìn)程的用戶地址空間內(nèi)容、硬件寄存器內(nèi)容及與該進(jìn)程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成。用戶級(jí)上下文:進(jìn)程的用戶地址空間(包括用戶棧各層次),包括用戶正文段、用戶數(shù)據(jù)段和用戶棧。寄存器級(jí)上下文:程序計(jì)數(shù)器、程序狀態(tài)寄存器、棧指針
20、、通用寄存器的值。系統(tǒng)級(jí)上下文:靜態(tài)部分(PCB和資源表格)動(dòng)態(tài)部分:核心棧(核心過(guò)程的棧結(jié)構(gòu),不同進(jìn)程在調(diào)用相同核心過(guò)程時(shí)有不同核心棧) 進(jìn)程上下文環(huán)境(context)對(duì)進(jìn)程執(zhí)行活動(dòng)全過(guò)程的靜態(tài)描5.進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換,由具有特定功能的原語(yǔ)完成。 進(jìn)程創(chuàng)建原語(yǔ) 進(jìn)程撤消原語(yǔ) 阻塞原語(yǔ) 喚醒原語(yǔ) 掛起原語(yǔ) 激活(解掛)原語(yǔ) 改變進(jìn)程優(yōu)先級(jí)5.進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換,由具(1)進(jìn)程的創(chuàng)建創(chuàng)建一個(gè)PCB賦予一個(gè)統(tǒng)一進(jìn)程標(biāo)識(shí)符為進(jìn)程映象分配空間初始化進(jìn)程控制塊許多默認(rèn)值 (如: 狀態(tài)為 New,無(wú)I/O設(shè)備或文件.)設(shè)置相應(yīng)的鏈接如: 把
21、新進(jìn)程加到就緒隊(duì)列的鏈表中(1)進(jìn)程的創(chuàng)建創(chuàng)建一個(gè)PCB(2)進(jìn)程的撤消收回進(jìn)程所占有的資源撤消該進(jìn)程的PCB(3)進(jìn)程阻塞和進(jìn)程喚醒處于運(yùn)行狀態(tài)的進(jìn)程,在其運(yùn)行過(guò)程中期待某一事件發(fā)生,如等待鍵盤輸入、等待磁盤數(shù)據(jù)傳輸完成、等待其它進(jìn)程發(fā)送消息,當(dāng)被等待的事件未發(fā)生時(shí),由進(jìn)程自己執(zhí)行阻塞原語(yǔ),使自己由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。(2)進(jìn)程的撤消收回進(jìn)程所占有的資源(3)進(jìn)程阻塞和進(jìn)程喚醒6.進(jìn)程的特征(1/2) 并發(fā)性任何進(jìn)程都可以同其他進(jìn)程一起向前推進(jìn)動(dòng)態(tài)性進(jìn)程對(duì)應(yīng)程序的執(zhí)行進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的進(jìn)程在其生命周期內(nèi),在三種基本狀態(tài)之間轉(zhuǎn)換動(dòng)態(tài)的地址空間獨(dú)立性進(jìn)程是資源分配的一個(gè)獨(dú)立單位例如:各進(jìn)程
22、的地址空間相互獨(dú)立6.進(jìn)程的特征(1/2) 并發(fā)性進(jìn)程的特征(2/2)交互性指進(jìn)程在執(zhí)行過(guò)程中 可能與其他進(jìn)程產(chǎn)生直接或間接的關(guān)系異步性每個(gè)進(jìn)程都以其相對(duì)獨(dú)立的、不可預(yù)知的速度向前推進(jìn)結(jié)構(gòu)性:進(jìn)程的組成:程序+數(shù)據(jù)+PCB可再入程序(可重入):可被多個(gè)進(jìn)程同時(shí)調(diào)用的程序,具有下列性質(zhì):它是純代碼的,即在執(zhí)行過(guò)程中自身不改變,調(diào)用它的進(jìn)程應(yīng)該提供數(shù)據(jù)區(qū)。進(jìn)程的特征(2/2)交互性指進(jìn)程在執(zhí)行過(guò)程中 可能與其他進(jìn)【思考題】如果一個(gè)單處理機(jī)系統(tǒng)中有N個(gè)進(jìn)程,運(yùn)行的進(jìn)程最多幾個(gè),最少幾個(gè);就緒進(jìn)程最多幾個(gè),最少幾個(gè);等待進(jìn)程最多幾個(gè),最少幾個(gè)?有沒有如下所示的狀態(tài)轉(zhuǎn)換,為什么? 等待運(yùn)行; 就緒等待一
23、個(gè)狀態(tài)轉(zhuǎn)換的發(fā)生,是否一定導(dǎo)致另一個(gè)轉(zhuǎn)換發(fā)生,列出所有的可能?舉3個(gè)日常生活中類似進(jìn)程的例子?【思考題】如果一個(gè)單處理機(jī)系統(tǒng)中有N個(gè)進(jìn)程,運(yùn)行的進(jìn)程最多幾三、線程的基本概念線程的引入線程與進(jìn)程的對(duì)比線程的實(shí)現(xiàn)實(shí)例:Solaris三、線程的基本概念線程的引入1.線程的引入(1/4)進(jìn)程的兩個(gè)基本屬性:資源的擁有者 給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程映像,控制一些資源(文件,I/O設(shè)備),有狀態(tài)、優(yōu)先級(jí)、調(diào)度。調(diào)度單位 進(jìn)程是一個(gè)執(zhí)行軌跡。 以上兩個(gè)屬性構(gòu)成進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)。1.線程的引入(1/4)進(jìn)程的兩個(gè)基本屬性:線程的引入(2/4)系統(tǒng)必須完成的操作:創(chuàng)建進(jìn)程撤消進(jìn)程進(jìn)程通信進(jìn)程切換
24、時(shí)間空間開銷大,限制并發(fā)度的提高。 在操作系統(tǒng)中,進(jìn)程的引入提高了計(jì)算機(jī)資源的利用率。但在進(jìn)一步提高進(jìn)程的并發(fā)性時(shí),人們發(fā)現(xiàn)進(jìn)程切換開銷占的比重越來(lái)越大,同時(shí)進(jìn)程間通信的效率也受到限制。線程的引入正是為了簡(jiǎn)化線程間的通信,以小的開銷來(lái)提高進(jìn)程內(nèi)的并發(fā)程度。線程的引入(2/4)系統(tǒng)必須完成的操作: 在操作系統(tǒng)中,進(jìn)線程的引入(3/4)線程:有時(shí)稱輕量級(jí)進(jìn)程。 進(jìn)程中的一個(gè)運(yùn)行實(shí)體, 是一個(gè)CPU調(diào)度單位, 資源的擁有者還是進(jìn)程或稱任務(wù)。將原來(lái)進(jìn)程的兩個(gè)屬性分開處理。線程的引入(3/4)線程:有時(shí)稱輕量級(jí)進(jìn)程。線程的引入(4/4)線程:有執(zhí)行狀態(tài)(狀態(tài)轉(zhuǎn)換)不運(yùn)行時(shí)保存上下文有一個(gè)執(zhí)行棧有一些局部
25、變量的靜態(tài)存儲(chǔ)可存取所在進(jìn)程的內(nèi)存和其他資源可以創(chuàng)建、撤消另一個(gè)線程線程的引入(4/4)線程:P C B用戶棧單線程進(jìn)程模型用戶地址空間核心棧線程控制塊:包含了寄存器映像,線程優(yōu)先數(shù)和線程狀態(tài)信息P C B用單線程進(jìn)程模型用戶地址空間核線程控制塊:P C B多線程進(jìn)程模型用戶地址空間用戶棧核心棧線程控制塊用戶棧核心棧線程控制塊用戶棧核心棧線程控制塊P C B多線程進(jìn)程模型用戶用核線程用核線程用核線程引入線程的好處創(chuàng)建一個(gè)新線程花費(fèi)時(shí)間少(結(jié)束亦如此)兩個(gè)線程的切換花費(fèi)時(shí)間少 (如果機(jī)器設(shè)有“存儲(chǔ)恢復(fù)所有寄存器”指令,則整個(gè)切換過(guò)程用幾條指令即可完成)線程之間相互通信無(wú)須調(diào)用內(nèi)核(同一進(jìn)程內(nèi)的線
26、程共享內(nèi)存和文件)適合多處理機(jī)系統(tǒng)引入線程的好處創(chuàng)建一個(gè)新線程花費(fèi)時(shí)間少(結(jié)束亦如此)例子例子1:LAN中的一個(gè)文件服務(wù)器,在一段時(shí)間內(nèi)需要處理幾個(gè)文件請(qǐng)求有效的方法是:為每一個(gè)請(qǐng)求創(chuàng)建一個(gè)線程在一個(gè)SMP機(jī)器上:多個(gè)線程可以同時(shí)在不同的處理器上運(yùn)行例子2:一個(gè)線程顯示菜單,并讀入用戶輸入;另一個(gè)線程執(zhí)行用戶命令考慮一個(gè)應(yīng)用:由幾個(gè)獨(dú)立部分組成,這幾個(gè)部分不需要順序執(zhí)行,則每個(gè)部分可以以線程方式實(shí)現(xiàn);當(dāng)一個(gè)線程因I/O阻塞時(shí),可以切換到同一應(yīng)用的另一個(gè)線程例子例子1:例子2:2.線程與進(jìn)程的比較調(diào)度線程是獨(dú)立調(diào)度的基本單位,進(jìn)程是資源擁有的基本單位。并發(fā)性線程可以在進(jìn)程內(nèi)并發(fā)。擁有資源線程基本
27、不擁有資源,進(jìn)程擁有資源。系統(tǒng)開銷線程開銷小。2.線程與進(jìn)程的比較調(diào)度3.線程的實(shí)現(xiàn)機(jī)制用戶級(jí)線程核心級(jí)線程兩者結(jié)合方法3.線程的實(shí)現(xiàn)機(jī)制用戶級(jí)線程(1)用戶級(jí)線程(User Level Thread)由應(yīng)用程序完成所有線程的管理 通過(guò)線程庫(kù)(用戶空間) 一組管理線程的過(guò)程核心不知道線程的存在線程切換不需要核心態(tài)特權(quán)調(diào)度是針對(duì)應(yīng)用的,是特定的創(chuàng)建、撤消線程在線程之間傳遞消息和數(shù)據(jù)調(diào)度線程執(zhí)行保護(hù)和恢復(fù)線程上下文(1)用戶級(jí)線程(User Level Thread)由應(yīng)用對(duì)用戶級(jí)線程的核心活動(dòng)核心不知道線程的活動(dòng),只管理線程的進(jìn)程的活動(dòng)當(dāng)線程調(diào)用系統(tǒng)調(diào)用時(shí),整個(gè)進(jìn)程阻塞對(duì)線程庫(kù)來(lái)說(shuō),線程仍然是運(yùn)
28、行狀態(tài)即線程狀態(tài)是與進(jìn)程狀態(tài)獨(dú)立的對(duì)用戶級(jí)線程的核心活動(dòng)核心不知道線程的活動(dòng),只管理線程的進(jìn)程用戶級(jí)線程的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):線程切換不調(diào)用核心調(diào)度是應(yīng)用程序特定的:可以選擇最好的算法ULT可運(yùn)行在任何操作系統(tǒng)上(只需要線程庫(kù))缺點(diǎn):大多數(shù)系統(tǒng)調(diào)用是阻塞的,因此核心阻塞進(jìn)程,故進(jìn)程中所有線程將被阻塞核心只將處理器分配給進(jìn)程,同一進(jìn)程中的兩個(gè)線程不能同時(shí)運(yùn)行于兩個(gè)處理器上用戶級(jí)線程的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):(2)核心級(jí)線程(Kernel Level Thread)所有線程管理由核心完成沒有線程庫(kù),但對(duì)核心線程工具提供API核心維護(hù)進(jìn)程和線程的上下文線程之間的切換需要核心支持以線程為基礎(chǔ)進(jìn)行調(diào)度例子:Wind
29、ows(2)核心級(jí)線程(Kernel Level Thread)所核心級(jí)線程的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):對(duì)多處理器,核心可以同時(shí)調(diào)度同一進(jìn)程的多個(gè)線程阻塞是在線程一級(jí)完成核心例程是多線程的缺點(diǎn):在同一進(jìn)程內(nèi)的線程切換調(diào)用內(nèi)核,導(dǎo)致速度下降核心級(jí)線程的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):(3)ULT和KLT結(jié)合方法線程創(chuàng)建在用戶空間完成線程調(diào)度等在核心態(tài)完成例子:Solaris(3)ULT和KLT結(jié)合方法線程創(chuàng)建在用戶空間完成4.Solaris 進(jìn)程線程模型Solaris的多線程模型中包括四種實(shí)體:進(jìn)程,內(nèi)核線程,用戶線程和輕量級(jí)進(jìn)程(LWP)Solaris內(nèi)核是多線程的進(jìn)程是資源分配和管理的單元內(nèi)核級(jí)線程是內(nèi)核的調(diào)度單元用戶級(jí)線程是程序執(zhí)行在用戶態(tài)的抽象LWP把用戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省恩施市2025-2026學(xué)年上學(xué)期期末八年級(jí)數(shù)學(xué)試卷(無(wú)答案)
- 廣東省東莞市常平鎮(zhèn)2025-2026學(xué)年九年級(jí)上學(xué)期1月期末歷史試卷(含答案)
- 五年級(jí)測(cè)試卷及答案
- 文員考試試題及答案
- 《遇見未知的自我》讀后感范本
- 2022-2023學(xué)年山東省東營(yíng)市墾利區(qū)九年級(jí)物理第一學(xué)期期末調(diào)研試題含解析
- 2022屆高考數(shù)學(xué)基礎(chǔ)總復(fù)習(xí)提升之專題突破詳解專題10三角函數(shù)的圖象與性質(zhì)含解析
- 六盤水中考滿分作文賞析:書給了我力量
- 22春“安全工程”專業(yè)《安全檢測(cè)及儀表》在線作業(yè)含答案參考2
- 師德以身作則演講稿
- 2025-2026年蘇教版初一歷史上冊(cè)期末熱點(diǎn)題庫(kù)及完整答案
- 規(guī)范園區(qū)環(huán)保工作制度
- 藥理學(xué)試題中國(guó)藥科大學(xué)
- 卓越項(xiàng)目交付之道
- (人教版)八年級(jí)物理下冊(cè)第八章《運(yùn)動(dòng)和力》單元測(cè)試卷(原卷版)
- 2026屆新高考語(yǔ)文熱點(diǎn)沖刺復(fù)習(xí) 賞析小說(shuō)語(yǔ)言-理解重要語(yǔ)句含意
- 2026屆杭州學(xué)軍中學(xué)數(shù)學(xué)高三上期末綜合測(cè)試模擬試題含解析
- 創(chuàng)世紀(jì)3C數(shù)控機(jī)床龍頭、高端智能裝備與產(chǎn)業(yè)復(fù)蘇雙輪驅(qū)動(dòng)
- (新版?。笆逦濉鄙鷳B(tài)環(huán)境保護(hù)規(guī)劃
- 教培行業(yè)年終述職
- 2025中國(guó)西電集團(tuán)有限公司招聘(35人)筆試備考試題附答案
評(píng)論
0/150
提交評(píng)論