版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)操作系統(tǒng) Operating System第3章 進(jìn)程Chapter 3 Processes 3-2操作系統(tǒng)操作系統(tǒng) Operating SystemAgendav3.1 并發(fā)進(jìn)程3.1.1 程序的順序執(zhí)行3.1.2 程序的并發(fā)執(zhí)行及其特點(diǎn)v3.2 進(jìn)程的描述3.2.1 進(jìn)程的引入3.2.2 進(jìn)程控制塊PCB3.2.3 Linux的進(jìn)程控制塊3-3操作系統(tǒng)操作系統(tǒng) Operating SystemAgendav3.3 進(jìn)程的狀態(tài)及其轉(zhuǎn)換3.3.1 進(jìn)程的不同狀態(tài)3.3.2 狀態(tài)轉(zhuǎn)換模型3.3.3 Linux的進(jìn)程狀態(tài)v3.4 進(jìn)程的控制 3.4.1 原語操作 3.4.2 Linux中的
2、進(jìn)程控制3-4操作系統(tǒng)操作系統(tǒng) Operating SystemAgendav3.5 線程3.5.1 線程的引入3.5.2 線程的概念3.5.3 引入線程的優(yōu)點(diǎn)3.5.4 線程和進(jìn)程的關(guān)系3.5.5 線程的狀態(tài)及其轉(zhuǎn)換3.5.6 用戶級線程和內(nèi)核級線程v3.6 專業(yè)術(shù)語v3.7 習(xí)題3-5操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念v程序在計算機(jī)中的運(yùn)行情況:v1、程序的順序運(yùn)行 這是最自然、也是最初的設(shè)計?;咎卣魇琼樞蛱幚恚撼绦虻牟僮靼茨撤N順序依次執(zhí)行,只有當(dāng)前一個操作完成后,才能執(zhí)行下一個操作。 基本概念3-6操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:
3、程序順序執(zhí)行程序順序執(zhí)行的特點(diǎn):(1)順序性。處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,只有當(dāng)上一個操作完成后,下一個操作才能執(zhí)行。除非有人為的干預(yù)造成機(jī)器暫時停頓外,前一個動作的結(jié)束就意味著下一個操作的開始。因此,程序和處理機(jī)執(zhí)行程序的活動一一對應(yīng)。(2)封閉性。程序運(yùn)行在一個封閉的環(huán)境中,即程序運(yùn)行時獨(dú)占系統(tǒng)的全部資源,這些資源的狀態(tài)只能因程序的執(zhí)行而改變,不受任何外界因素的影響。基本概念3-7操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序順序執(zhí)行(3)可再現(xiàn)性。由于程序順序執(zhí)行的封閉性,只要程序順序執(zhí)行的初始條件相同,則不論何時執(zhí)行,也不論程序執(zhí)行期間是否存在停頓,程
4、序所得的結(jié)果也相同。正由于程序順序執(zhí)行的特點(diǎn),程序員可以檢測和重現(xiàn)程序的錯誤,可以調(diào)試和校正程序?;靖拍?-8操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行v2、程序的并發(fā)執(zhí)行v當(dāng)多道程序在計算機(jī)里同時運(yùn)行時情況就發(fā)生了很大變化。v在內(nèi)存中同時存放多個作業(yè),使多個程序之間可以同時或相互穿插地執(zhí)行,即多個程序段之間可以并發(fā)地執(zhí)行。v所謂并發(fā)執(zhí)行,是指多個程序段之間在執(zhí)行時間是重疊的,即使這些重疊是很小的一部分,而不是指這些程序段在某一時刻同時在處理機(jī)上運(yùn)行。 基本概念3-9操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行基本概念3-10操作
5、系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行v程序并發(fā)執(zhí)行的特點(diǎn):v(1)失去了程序的封閉性程序并發(fā)執(zhí)行時,系統(tǒng)中多道程序共享資源,資源的狀態(tài)不是唯一地取決于某一個程序,因此,必然失去了程序的封閉性,而程序的執(zhí)行結(jié)果因依賴于外部環(huán)境也失去了可再現(xiàn)性。 基本概念3-11操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行procedure push(x); begin top := top + 1; stop = x; end;procedure pop( ); r:integer; begin r=stop; top := top - 1; re
6、turn(r); end;基本概念3-12操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行各個并發(fā)程序段的語句可能交織穿插地執(zhí)行,很可能產(chǎn)生異?;蚴?。 push(6)的top=top+1語句 push(6)的Stop=x語句pop()的r=Stop語句pop()的top=top-1語句 pop()的return(r)語句,則此時存數(shù)與取數(shù)均成功。 push(6)的top=top+1語句pop()的r=Stop語句,此時取數(shù)失敗。上述情形說明,程序并發(fā)執(zhí)行時,由于失去了封閉性,計算結(jié)果與并發(fā)程序執(zhí)行的速度相關(guān),從而使程序失去了可再現(xiàn)性。即使初始條件相同,程序多次執(zhí)行的
7、結(jié)果卻不盡相同?;靖拍?-13操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行v(2)程序和機(jī)器執(zhí)行程序的活動不再一一對應(yīng) 程序程序是指令的有序集合,是靜態(tài)概念。而機(jī)器執(zhí)行程序的活動是指程序的指令序列在處理機(jī)上的執(zhí)行過程,稱為“計算計算”,是一個動態(tài)的概念。在程序順序執(zhí)行時,程序和“計算”是一一對應(yīng)的;在程序并發(fā)執(zhí)行時,系統(tǒng)中的多個硬件設(shè)備在并行工作著,而系統(tǒng)中多個程序并發(fā)運(yùn)行著,這多個“計算”相互穿插,一個程序尚未執(zhí)行完畢另一個程序又開始運(yùn)行,而且一個程序可以為多個作業(yè)調(diào)用,這個程序就形成了多個“計算”,系統(tǒng)的“計算”和“計算”之間的關(guān)系變得非常復(fù)雜,程序和“計算
8、”已經(jīng)不再一一對應(yīng)。 基本概念3-14操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行v(3)并發(fā)程序之間相互制約由于系統(tǒng)中多個程序并發(fā)執(zhí)行著,它們共享系統(tǒng)中的硬件資源和軟件資源,有時相互競爭地使用系統(tǒng)資源,有時又要相互合作共同完成一項任務(wù),因此,并發(fā)程序之間存在著相互制約的關(guān)系?;靖拍?-15操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行這些制約關(guān)系可分為兩類:直接制約和間接制約。直接制約直接制約發(fā)生在具有合作關(guān)系的并發(fā)進(jìn)程之間。例如,一個程序段C執(zhí)行時產(chǎn)生計算結(jié)果,并送到指定的存儲區(qū)M中,而另一個程序段P執(zhí)行時從上述的緩存儲區(qū)M中取出
9、計算結(jié)果,然后打印。很顯然,程序段C和程序段P之間就存在直接制約關(guān)系:如果程序段C沒有產(chǎn)生計算結(jié)果,并送到存儲區(qū)M中,那么程序段P就將一直等待下去。程序段C對程序段P就產(chǎn)生了直接制約。 基本概念3-16操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的概念:程序并發(fā)執(zhí)行間接制約間接制約發(fā)生在彼此間相互獨(dú)立的并發(fā)程序之間,是由于它們競爭使用系統(tǒng)中的資源引起的。例如,兩個并發(fā)程序競爭地使用打印機(jī),得到打印機(jī)的并發(fā)程序就可以繼續(xù)執(zhí)行下去,而未得到打印機(jī)并發(fā)程序只好暫停等待。這兩個并發(fā)程序之間就存在著間接制約?;靖拍?-17操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 1.進(jìn)
10、程的引入v由于在多道系統(tǒng)環(huán)境中,多個程序并發(fā)地執(zhí)行,產(chǎn)生了一些新的特點(diǎn)。它破壞了程序的封閉性和可再現(xiàn)性,程序和計算不再一一對應(yīng),多個并發(fā)程序共享系統(tǒng)資源,彼此之間存在著制約關(guān)系,這些新的特征用程序這個靜態(tài)概念已經(jīng)無法描述。v用什么樣的概念才能給予準(zhǔn)確的描述呢?系統(tǒng)中的資源分配和程序的執(zhí)行又該以何為單位進(jìn)行描述、控制和管理呢?v為此,操作系統(tǒng)需要引入“進(jìn)程”這個概念。進(jìn)程的描述3-18操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 2.進(jìn)程的定義v至今尚無令人滿意的統(tǒng)一定義。現(xiàn)列舉一些權(quán)威人士從不同角度對“進(jìn)程”所作的定義:(1)進(jìn)程是程序在處理機(jī)上執(zhí)行時所發(fā)生的活動;(2)進(jìn)程
11、是可以和其它的計算并發(fā)執(zhí)行的計算;(3)進(jìn)程是一個獨(dú)立的可調(diào)度的活動;(4)順序進(jìn)程是一個程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時所發(fā)生的活動;(5)進(jìn)程是程序在一個數(shù)據(jù)集合上的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。進(jìn)程的描述3-19操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 2.進(jìn)程的定義v綜合各家意見,將“進(jìn)程”表示為:進(jìn)程是可以與其它程序并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集合上的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。 進(jìn)程的描述3-20操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 3.進(jìn)程的特點(diǎn)v(1)動態(tài)性。進(jìn)程是一個動態(tài)的概念,實(shí)質(zhì)上是程序
12、的一次執(zhí)行過程。進(jìn)程具有生命期:它因“創(chuàng)建”而產(chǎn)生,因“調(diào)度”而執(zhí)行,執(zhí)行時還走走停停,因“撤消”而滅亡。v(2)并發(fā)性。在一個系統(tǒng)中,可以同時存在多個進(jìn)程,它們并發(fā)地執(zhí)行,共享系統(tǒng)資源。正由于多個進(jìn)程的并發(fā)執(zhí)行,才使系統(tǒng)資源得到充分的利用,系統(tǒng)的處理能力大大增強(qiáng)。v(3)獨(dú)立性。進(jìn)程是一個能獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。未建立進(jìn)程的程序不能作為一個獨(dú)立單位參與運(yùn)行,并發(fā)進(jìn)程獲得所需的資源才能向前推進(jìn)。進(jìn)程的描述3-21操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 3.進(jìn)程的特點(diǎn)v(4)異步性。每個進(jìn)程按各自獨(dú)立的不可預(yù)知的速度向前推進(jìn)。正由于進(jìn)程
13、的異步性,并發(fā)進(jìn)程相互穿插地執(zhí)行,才失去了程序的可再現(xiàn)性。但由于進(jìn)程之間相互制約,進(jìn)程執(zhí)行時也常間斷,出現(xiàn)走走停停的現(xiàn)象。v(5)結(jié)構(gòu)特征。從結(jié)構(gòu)上看,一個進(jìn)程實(shí)體由三個部分組成,即程序、數(shù)據(jù)和進(jìn)程控制塊。進(jìn)程要完成一個任務(wù),就必須執(zhí)行描述其任務(wù)的程序,并對要求加工的數(shù)據(jù)進(jìn)行處理。為對進(jìn)程實(shí)施有效的管理,系統(tǒng)就必須為進(jìn)程設(shè)立一個專門的數(shù)據(jù)結(jié)構(gòu)進(jìn)程控制塊。 進(jìn)程的描述3-22操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述: 4. 進(jìn)程與程序之間的關(guān)系v(1)進(jìn)程是程序的一次執(zhí)行過程,是一個動態(tài)的概念,而程序是指令的有序集合,是一個靜態(tài)的概念。v(2)進(jìn)程具有生命期,從創(chuàng)建時存在,到
14、撤消時消失,其存在是暫時的,而程序是靜態(tài)的,其存在可以是永久的。v(3)進(jìn)程具有結(jié)構(gòu)特征,由程序、數(shù)據(jù)和進(jìn)程控制塊三者組成,而程序僅是指令的有序集合,是進(jìn)程的組成部分之一。v(4)進(jìn)程和程序之間不是一一對應(yīng)關(guān)系。一個程序可同時運(yùn)行于不同的數(shù)據(jù)集合上,映射成多個進(jìn)程。但內(nèi)存中一個編譯程序副本可同時編譯多個程序,產(chǎn)生多個編譯進(jìn)程;而一個進(jìn)程也可執(zhí)行多個程序,如幾個程序共同組成一個任務(wù)時,進(jìn)程的代碼是由多個程序組成的。程序的代碼是進(jìn)程的執(zhí)行依據(jù),而進(jìn)程的執(zhí)行實(shí)現(xiàn)了程序所設(shè)計的功能。進(jìn)程的描述3-23操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:進(jìn)程控制塊PCB vPCB用于準(zhǔn)確地描述
15、每個進(jìn)程,是進(jìn)程存在的唯一標(biāo)志。v系統(tǒng)根據(jù)進(jìn)程控制塊中各項信息對進(jìn)程進(jìn)行調(diào)度、控制和管理。 v進(jìn)程創(chuàng)建時,系統(tǒng)為它建立一個PCB;當(dāng)進(jìn)程在運(yùn)行中,狀態(tài)發(fā)生變化時,系統(tǒng)將其運(yùn)行信息記錄在PCB中;當(dāng)進(jìn)程執(zhí)行完畢時,系統(tǒng)回收其PCB。 進(jìn)程的描述3-24操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:進(jìn)程控制塊PCBvPCB通常包含了進(jìn)程描述信息、進(jìn)程控制信息和資源信息三部分。如:v(1)進(jìn)程名或進(jìn)程標(biāo)識號。(2)用戶名或標(biāo)識號。v(3)程序和數(shù)據(jù)地址。(4)CPU現(xiàn)場保護(hù)區(qū)。v(5)進(jìn)程當(dāng)前狀態(tài)。(6)進(jìn)程優(yōu)先級。v(7)進(jìn)程隊列指針。(8)通信信息。v(9)家庭關(guān)系。(10)資源
16、清單。v(11)其它。進(jìn)程的描述3-25操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:進(jìn)程控制塊的組織v對于多個進(jìn)程有著多個PCBs,因此對它們的管理有如下一些方法:線性表方式。這種方式把所有不同狀態(tài)的進(jìn)程(甚至是全部進(jìn)程)的PCB組織在一個數(shù)組表格中,系統(tǒng)通過下標(biāo)訪問每一個PCB。這種方法實(shí)現(xiàn)簡單,節(jié)省空間。但為了找至某一狀態(tài)的進(jìn)程的PCB,需要查找整個PCB表。 分類鏈接表方式。這種方式把相同狀態(tài)進(jìn)程的PCB,連接成一個鏈表。 進(jìn)程的描述3-26操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:進(jìn)程控制塊的組織索引方式。這種方式根據(jù)所有進(jìn)程的狀態(tài),為每一種狀態(tài)的
17、進(jìn)程建立一個索引表,并在索引表的表目中設(shè)置一個指針域,記錄相應(yīng)狀態(tài)的某個進(jìn)程在PCB表中的地址。 進(jìn)程的描述3-27操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:Linux進(jìn)程控制v1.Linux的進(jìn)程控制塊(Task_struct) (在include/linux/sched.h)v2. Linux系統(tǒng)中進(jìn)程的組織系統(tǒng)中進(jìn)程的組織Linux系統(tǒng)中可同時存在許多進(jìn)程,而且這些進(jìn)程所處的狀態(tài)也各不相同,為了對進(jìn)程實(shí)現(xiàn)高效的管理,Linux系統(tǒng)采用了如下幾種組織方式。1) 哈希表。 Linux系統(tǒng)為了實(shí)現(xiàn)進(jìn)程的快速查找,專門設(shè)置了一個哈希表,表的每個元素都是指向一個進(jìn)程task_s
18、truct結(jié)構(gòu)的指針,同時,系統(tǒng)還設(shè)置了一個名為pid_hashfn的哈希函數(shù),把進(jìn)程的標(biāo)識符PID映射為表的索引,均勻地把進(jìn)程分布到哈希表中。進(jìn)程的描述3-28操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:Linux進(jìn)程控制2) 雙向循環(huán)鏈表。 哈希表雖然能快速地查找到指定的進(jìn)程,但并不能反映進(jìn)程之間的關(guān)系,為此,系統(tǒng)還設(shè)置了一個雙向循環(huán)鏈表,將進(jìn)程組織在一起。該鏈表的頭為init_task,是所有進(jìn)程的祖先進(jìn)程;每個進(jìn)程通過其prev_task和next_task指針指向其前趨進(jìn)程和后繼進(jìn)程。3) 運(yùn)行隊列。 為實(shí)現(xiàn)進(jìn)程的高效調(diào)度,Linux系統(tǒng)把所有可運(yùn)行的進(jìn)程組織成一個
19、雙向循環(huán)鏈表,稱為可運(yùn)行隊列(run_queue)。另外,系統(tǒng)還可利用進(jìn)程task_struct結(jié)構(gòu)的run_list指針,維持一個運(yùn)行隊列鏈表。進(jìn)程的描述3-29操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的描述:Linux進(jìn)程控制4) 等待隊列。 Linux系統(tǒng)為管理所有處于等待狀態(tài)(TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE)的進(jìn)程,根據(jù)進(jìn)程的狀態(tài)、進(jìn)程所等的對象,將進(jìn)程分成不同的類,組織成不同的等待隊列。進(jìn)程的描述3-30操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及其轉(zhuǎn)換:進(jìn)程的狀態(tài) v一般地講,進(jìn)程具有三種基本狀態(tài):v1.
20、 運(yùn)行狀態(tài)(Running)。當(dāng)進(jìn)程獲得處理機(jī)并在處理機(jī)上運(yùn)行時,則稱進(jìn)程處于運(yùn)行狀態(tài)。在單處理機(jī)系統(tǒng)中,某一時刻只能有一個進(jìn)程處于運(yùn)行狀態(tài);在多處理機(jī)系統(tǒng)中,可能有多個進(jìn)程同時處于運(yùn)行狀態(tài)。v2. 就緒狀態(tài)(Ready)。進(jìn)程獲得了除處理機(jī)之處的所有資源,一旦得到處理機(jī)便可立即運(yùn)行,則稱此進(jìn)程處于就緒狀態(tài)。處于就緒狀態(tài)的進(jìn)程邏輯上講是可運(yùn)行的,只是處理機(jī)被其它進(jìn)程占用而暫時等待。在一個系統(tǒng)中,可以有多個進(jìn)程同時處于就緒狀態(tài)。這些處于就緒狀態(tài)的進(jìn)程常組織成一個或多個就緒隊列。進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-31操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及其轉(zhuǎn)換:進(jìn)程的狀態(tài)v3. 阻塞狀態(tài)
21、(Blocked)。正在運(yùn)行的進(jìn)程,由于等待某種原因或發(fā)生某種事件,如請求I/O、等待可用的資源,或等待合作進(jìn)程的消息,暫時無法繼續(xù)運(yùn)行,便放棄處理機(jī)而等待,則稱進(jìn)程處于阻塞狀態(tài)。在一個系統(tǒng)中,可以有多個進(jìn)程處于等待狀態(tài),這些處于等待狀態(tài)的進(jìn)程常組織成一個阻塞隊列。有時,根據(jù)進(jìn)程執(zhí)行受到阻塞原因,將處于阻塞狀態(tài)的進(jìn)程組織成多個阻塞隊列,如等待打印機(jī)的若干阻塞進(jìn)程組織成打印機(jī)等待隊列。進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-32操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及其轉(zhuǎn)換:進(jìn)程的狀態(tài)v另外,不少系統(tǒng)中還增加了新狀態(tài)(New)和結(jié)束狀態(tài)(Terminated)。v4. 新狀態(tài)(New)。當(dāng)進(jìn)程
22、剛被創(chuàng)建,但尚未進(jìn)入就緒隊列時,進(jìn)程處于新狀態(tài)。v5. 結(jié)束狀態(tài)(Terminated)。當(dāng)進(jìn)程執(zhí)行完畢(正常結(jié)束或異常結(jié)束),但其PCB尚未被系統(tǒng)回收時,進(jìn)程處于結(jié)束狀態(tài)。進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-33操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及轉(zhuǎn)換:狀態(tài)轉(zhuǎn)換模型 進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-34操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及轉(zhuǎn)換:狀態(tài)轉(zhuǎn)換模型v1. 新狀態(tài)就緒狀態(tài)、當(dāng)新創(chuàng)建的進(jìn)程被接納,系統(tǒng)將它移入就緒隊列時,進(jìn)程的狀態(tài)從新進(jìn)程狀態(tài)轉(zhuǎn)換為就緒狀態(tài)。v2. 就緒狀態(tài)運(yùn)行狀態(tài)。處于就緒狀態(tài)的進(jìn)程被進(jìn)程調(diào)度程序選中,并分配處理機(jī)后,進(jìn)程便在處理機(jī)上運(yùn)行,進(jìn)程的
23、狀態(tài)從就緒狀態(tài)轉(zhuǎn)換運(yùn)行狀態(tài)。v3. 運(yùn)行狀態(tài)就緒狀態(tài)。當(dāng)正在運(yùn)行的進(jìn)程所分得的處理機(jī)時間片用完,或更緊迫的進(jìn)程強(qiáng)行搶占處理機(jī),這時進(jìn)程被迫暫停運(yùn)行,從運(yùn)行狀態(tài)轉(zhuǎn)換為就緒狀態(tài)。 進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-35操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及轉(zhuǎn)換:狀態(tài)轉(zhuǎn)換模型v4. 運(yùn)行狀態(tài)阻塞狀態(tài)。當(dāng)運(yùn)行中的進(jìn)程因發(fā)生某事件,如提出I/O請求,等待可用資源,或等待合作進(jìn)程的消息,進(jìn)程暫時無法運(yùn)行而主動放棄處理機(jī),從運(yùn)行狀態(tài)轉(zhuǎn)換為阻塞狀態(tài)。v5. 阻塞狀態(tài)就緒狀態(tài)。當(dāng)處于阻塞狀態(tài)的進(jìn)程,在其等待的事件已經(jīng)發(fā)生,如I/O完成,獲得所需的資源等,進(jìn)程就從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。v6. 運(yùn)行狀態(tài)結(jié)
24、束狀態(tài)。當(dāng)處于運(yùn)行狀態(tài)的進(jìn)程完成所規(guī)定的任務(wù)而正常結(jié)束,或執(zhí)行時遇到嚴(yán)重錯誤而異常結(jié)束時,進(jìn)程從運(yùn)行狀態(tài)轉(zhuǎn)換為結(jié)束狀態(tài)。 進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-36操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及轉(zhuǎn)換:狀態(tài)轉(zhuǎn)換模型進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-37操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程狀態(tài)及轉(zhuǎn)換:Linux進(jìn)程的狀態(tài)及其轉(zhuǎn)換3-38操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的控制v進(jìn)程控制的職責(zé)是對系統(tǒng)中的所有進(jìn)程進(jìn)行有效管理,為此,操作系統(tǒng)提供了若干基本操作,這些操作通常被稱為原語。v所謂原語,是操作系統(tǒng)內(nèi)核中由若干機(jī)器指令構(gòu)成的完成特定功能程序段,這些程序段
25、在執(zhí)行期間不可中斷,以保證其正確性。原語是機(jī)器指令的延伸,由于其在執(zhí)行期間不可分割,所以具有原子性。v所謂原子性,是指這些程序中的所有指令,要么全做,要么全不做,不能只做其中的一部分。 進(jìn)程的控制3-39操作系統(tǒng)操作系統(tǒng) Operating System進(jìn)程的控制v用于進(jìn)程控制的原語有:創(chuàng)建進(jìn)程原語,撤消進(jìn)程原語,阻塞進(jìn)程原語,喚醒進(jìn)程原語,掛起進(jìn)程原語,解除掛起進(jìn)程原語,改變進(jìn)程優(yōu)先級原語,調(diào)度進(jìn)程原語等。 進(jìn)程的控制3-40操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的引入 v早期的操作系統(tǒng)中,引入進(jìn)程的目的是為了實(shí)現(xiàn)程序的并發(fā)執(zhí)行,改善系統(tǒng)資源的利用率,提高系統(tǒng)的處理能力
26、和吞吐量。從進(jìn)程的定義,我們可以發(fā)現(xiàn)進(jìn)程在操作系統(tǒng)中擔(dān)任著兩個不同的角色:v1. 進(jìn)程是擁有自己資源的獨(dú)立單位,它不僅有著自己的虛擬地址空間,還控制著其運(yùn)行所需的其他資源,如I/O資源等。v2. 進(jìn)程是可獨(dú)立調(diào)度和分派在處理機(jī)上運(yùn)行的基本單位。 線程3-41操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的引入v進(jìn)程具有自己的生命期,它由創(chuàng)建而產(chǎn)生,并分配必要的資源;因撤消而滅亡,并釋放或回收其資源。在進(jìn)程的生命期中,進(jìn)程與其它進(jìn)程并發(fā)執(zhí)行時,隨著進(jìn)程自身的推進(jìn),不斷地改變著外界環(huán)境,而且也隨著外界的變化自身的狀態(tài)也不斷變化,經(jīng)常走走停停。因此系統(tǒng)中經(jīng)常需要進(jìn)程調(diào)度,進(jìn)行進(jìn)程切換,
27、系統(tǒng)為此付出較大的時間和空間開銷,系統(tǒng)進(jìn)程數(shù)量越多,切換越頻繁,這種開銷就越大。線程3-42操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的引入v那么,如何才能保證、甚至提高程序并發(fā)執(zhí)行的程度,而又盡量減少系統(tǒng)開銷呢?v不少專家學(xué)者在研究進(jìn)程的特性之后,提出了新的方案,引入了線程的概念。將進(jìn)程原有的兩個角色分派給兩種不同實(shí)體來實(shí)現(xiàn):第一個角色仍由進(jìn)程擔(dān)當(dāng),即進(jìn)程仍作為資源分配的獨(dú)立單位,在運(yùn)行中不必頻繁切換;第二個角色由線程擔(dān)當(dāng),即線程作為可獨(dú)立調(diào)度的一個執(zhí)行單位,它基本上不擁有或只擁有極少的資源。v同一個進(jìn)程可擁有多個線程,這些線程共享進(jìn)程的全部資源,并發(fā)地執(zhí)行。線程之間也存在
28、制約,其狀態(tài)也不斷變化,也需要調(diào)度和切換,但這種開銷很小。 線程3-43操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的定義v傳統(tǒng)意義上的進(jìn)程是一個單線程的進(jìn)程,而現(xiàn)代意義上的線程可以視為輕量化的進(jìn)程(lightweight process)。線程概念自從引入之后,已廣獲應(yīng)用,但至今也無統(tǒng)一定義,這里列出一些較權(quán)威的定義:(1)線程是進(jìn)程內(nèi)的一個執(zhí)行單元。(2)線程是一個可調(diào)度實(shí)體。(3)線程是進(jìn)程中相對獨(dú)立的一個控制流。(4)線程是同一個進(jìn)程中獨(dú)立的執(zhí)行上下文。v這些定義相互補(bǔ)充,我們可以綜合出:線程是進(jìn)程內(nèi)一個相對獨(dú)立的可調(diào)度的執(zhí)行單元或?qū)嶓w。 線程3-44操作系統(tǒng)操作系統(tǒng)
29、Operating System線程:引入線程的優(yōu)點(diǎn)引入線程的優(yōu)點(diǎn)v1. 提高了程序并發(fā)執(zhí)行的程度,加快了系統(tǒng)的執(zhí)行速度v2. 大大降低了系統(tǒng)的開銷v3. 提高了資源的利用率v4. 更好地為用戶提供服務(wù)v5. 更利于發(fā)揮多處理機(jī)系統(tǒng)的優(yōu)越性 線程3-45操作系統(tǒng)操作系統(tǒng) Operating System線程:線程和進(jìn)程的關(guān)系線程和進(jìn)程的關(guān)系v1. 線程是進(jìn)程的一個組成部分,進(jìn)程創(chuàng)建時一般只有一個線程,需要時可由這個線程創(chuàng)建其它線程。v2. 一個進(jìn)程可以有多個線程,這些共享進(jìn)程的資源,在進(jìn)程的空間中并發(fā)活動。v3. 進(jìn)程是資源分配的基本單位,資源并不分配給線程,線程基本上不擁有資源,只使用進(jìn)程的
30、資源。線程3-46操作系統(tǒng)操作系統(tǒng) Operating System線程:線程和進(jìn)程的關(guān)系線程和進(jìn)程的關(guān)系v4. 線程是處理機(jī)調(diào)度的執(zhí)行單位,即處理機(jī)是分給線程的,線程使用的資源是進(jìn)程所分到的資源。v5. 進(jìn)程可以并發(fā)執(zhí)行,線程也可以并發(fā)執(zhí)行。v6. 進(jìn)程切換的開銷遠(yuǎn)大于線程切換的開銷。v7. 線程也有生命期,在行過程中也需要同步。 線程3-47操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的狀態(tài)及其轉(zhuǎn)換線程的狀態(tài)及其轉(zhuǎn)換 v線程作為調(diào)度和執(zhí)行的基本單位,在其生命期中狀態(tài)也不斷變化。實(shí)際上線程狀態(tài)的劃分與系統(tǒng)設(shè)計的目標(biāo)與調(diào)度方法密切相關(guān)。v線程像進(jìn)程一樣,至少包含就緒、等待和運(yùn)行
31、三個基本狀態(tài), Windows NT操作系統(tǒng)中,將線程的狀態(tài)細(xì)化為6個狀態(tài) . v就緒狀態(tài):該線程已具備執(zhí)行條件,以等待CPU的執(zhí)行,線程調(diào)度程序只從就緒線程池中選擇線程進(jìn)入備用狀態(tài)。v備用狀態(tài):系統(tǒng)中每個處理機(jī)上可以有一個線程處于備用狀態(tài),實(shí)際上該線程已經(jīng)被選定為該處理機(jī)上的一個執(zhí)行對象。條件合適時,調(diào)度程序就將該線程切換到處理機(jī)上運(yùn)行。線程3-48操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的狀態(tài)及其轉(zhuǎn)換線程的狀態(tài)及其轉(zhuǎn)換 v運(yùn)行狀態(tài):當(dāng)線程被切換到處理機(jī)上運(yùn)行時,該線程就轉(zhuǎn)換為運(yùn)行狀態(tài)。v等待狀態(tài):當(dāng)運(yùn)行中的線程因等待某種事件時,便將自己阻塞而成為等待狀態(tài)。導(dǎo)致線程阻塞的
32、事件一般有:等待一個同步對象或事件,等待I/O,或環(huán)境子系統(tǒng)的影響等。v轉(zhuǎn)換狀態(tài):當(dāng)線程已經(jīng)準(zhǔn)備好執(zhí)行,但資源不可用,線程就變?yōu)檗D(zhuǎn)換狀態(tài)。當(dāng)資源變得可用時,線程變會從轉(zhuǎn)換狀態(tài)變?yōu)榫途w狀態(tài)。v終止?fàn)顟B(tài):線程完成了所有任務(wù),就變成了終止?fàn)顟B(tài)。線程3-49操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的狀態(tài)及其轉(zhuǎn)換線程的狀態(tài)及其轉(zhuǎn)換 vWindows NT中的線程調(diào)度程序采用了可搶占調(diào)度方式,即當(dāng)就緒隊列中某個就緒線程優(yōu)先級高于正在運(yùn)行的線程的優(yōu)先級時,它就強(qiáng)行占用處理機(jī),使原運(yùn)行中的線程停止運(yùn)行,并將它移入就緒隊列。線程3-50操作系統(tǒng)操作系統(tǒng) Operating System線程:
33、線程的狀態(tài)及其轉(zhuǎn)換線程的狀態(tài)及其轉(zhuǎn)換 線程3-51操作系統(tǒng)操作系統(tǒng) Operating System線程:線程的狀態(tài)及其轉(zhuǎn)換線程的狀態(tài)及其轉(zhuǎn)換 v在進(jìn)程中設(shè)有掛起操作,但在線程中一般不設(shè)置掛起操作,因?yàn)榫€程不是資源的擁有者,它只是進(jìn)程諸線程中的一個,沒有能力決定整個進(jìn)程的狀態(tài),也不能因?yàn)闀和R粋€線程而停止整個進(jìn)程。 v在進(jìn)程的多個線程中,如果某個線程阻塞,并不能阻塞其它線程,更不能阻塞整個進(jìn)程,這樣才能保證并發(fā)執(zhí)行程度和系統(tǒng)靈活性,保持多線程的優(yōu)勢。線程3-52操作系統(tǒng)操作系統(tǒng) Operating System線程:Java語言中線程的狀態(tài)及其轉(zhuǎn)換語言中線程的狀態(tài)及其轉(zhuǎn)換 v在Java語言中,
34、一個進(jìn)程被創(chuàng)建后但尚未執(zhí)行start方法之前,處于已出生狀態(tài)(born)。當(dāng)新創(chuàng)建在執(zhí)行start方法后就變?yōu)榫途w狀態(tài)(ready)。在就緒狀態(tài)下,當(dāng)系統(tǒng)后把處理機(jī)分配給線程時,線程就變?yōu)檫\(yùn)行狀態(tài)(running)。在運(yùn)行狀態(tài)下,如分配給線程的處理機(jī)時間片用完,線程又變?yōu)榫途w狀態(tài);如線程提出I/O請求,則變?yōu)樽枞麪顟B(tài)(blocked);如執(zhí)行wait方法,則變?yōu)榈却隣顟B(tài)(waiting);線程3-53操作系統(tǒng)操作系統(tǒng) Operating Systemv如執(zhí)行sleep方法,則變?yōu)樗郀顟B(tài)(sleeping);如執(zhí)行suspend方法,則變?yōu)楸粧炱馉顟B(tài)(suspended);如執(zhí)行stop方法,
35、則變?yōu)樗劳鰻顟B(tài)(dead)。在阻塞狀態(tài)下,如線程所需的I/O已完成,則變?yōu)榫途w狀態(tài)。在被掛起狀態(tài)下,執(zhí)行resume方法后,則變?yōu)榫途w狀態(tài)。在睡眠狀態(tài)下,如睡眠時間到,則變?yōu)榫途w狀態(tài)。在等待狀態(tài)下,如遇到notify方法,則變?yōu)榫途w狀態(tài)。線程:Java語言中線程的狀態(tài)及其轉(zhuǎn)換語言中線程的狀態(tài)及其轉(zhuǎn)換 線程3-54操作系統(tǒng)操作系統(tǒng) Operating System線程:Java語言中線程的狀態(tài)及其轉(zhuǎn)換語言中線程的狀態(tài)及其轉(zhuǎn)換 線程3-55操作系統(tǒng)操作系統(tǒng) Operating System線程:用戶級線程和內(nèi)核級線程用戶級線程和內(nèi)核級線程v用戶級線程KLT 有的系統(tǒng)中,線程完全是由用戶的應(yīng)用程序負(fù)責(zé)創(chuàng)建、調(diào)度和管理的,并不需要操作系統(tǒng)內(nèi)核的支持,而且操作系統(tǒng)內(nèi)核對此也毫無知覺。這樣的線程稱為用戶級線程。線程3-56操作系統(tǒng)操作系統(tǒng) Operating System線程:用戶級線程和內(nèi)核級線程用戶級線程和內(nèi)核級線程v用戶級線程自身的優(yōu)勢 對操作系統(tǒng)的要求較低,只要操作系統(tǒng)能
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健康協(xié)議模板
- 2025年會員注冊合同書
- 2025年食品進(jìn)口與代理銷售一體化合同范本3篇
- 期末復(fù)習(xí)綜合模擬卷 統(tǒng)編版語文八年級上冊
- 二零二五年度西餐廚師聘用合同3篇
- 二零二五年度二手房買賣合同交易信息保密協(xié)議3篇
- 二零二五版科研實(shí)驗(yàn)室場地租賃與科研設(shè)備維護(hù)保養(yǎng)協(xié)議3篇
- 2025年度新能源汽車整車買賣交易合同4篇
- 二零二五年度馬戲團(tuán)安全設(shè)施與人員培訓(xùn)合同4篇
- 門衛(wèi)安全責(zé)任書2025年版:智能化社區(qū)安全協(xié)議2篇
- 人教版高中數(shù)學(xué)必修二《第十章 概率》單元同步練習(xí)及答案
- 智慧校園信息化建設(shè)項目組織人員安排方案
- 浙教版七年級上冊數(shù)學(xué)第4章代數(shù)式單元測試卷(含答案)
- 一病一品成果護(hù)理匯報
- AQ-T 1009-2021礦山救護(hù)隊標(biāo)準(zhǔn)化考核規(guī)范
- 鹽酸??颂婺崤R床療效、不良反應(yīng)與藥代動力學(xué)的相關(guān)性分析的開題報告
- 消防設(shè)施安全檢查表
- 組合結(jié)構(gòu)設(shè)計原理 第2版 課件 第6、7章 鋼-混凝土組合梁、鋼-混凝土組合剪力墻
- 建筑公司資質(zhì)常識培訓(xùn)課件
- GB/T 26316-2023市場、民意和社會調(diào)查(包括洞察與數(shù)據(jù)分析)術(shù)語和服務(wù)要求
- 春節(jié)值班安全教育培訓(xùn)
評論
0/150
提交評論