版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章進(jìn)程與線(xiàn)程現(xiàn)代操作系統(tǒng)在管理處理機(jī)資源時(shí),在執(zhí)行層面的基本單位是進(jìn)程,即進(jìn)程是獨(dú)立運(yùn)行和擁有資源的基本單位。而進(jìn)程是隨著現(xiàn)代操作系統(tǒng)必然遵循的多道程序設(shè)計(jì)技術(shù)的出現(xiàn)而提出的。為此,本章首先從多道程序設(shè)計(jì)的角度引入進(jìn)程概念;然后,圍繞進(jìn)程在內(nèi)存的演變過(guò)程,逐步說(shuō)明進(jìn)程的控制、組織與通信,以對(duì)單個(gè)進(jìn)程以及它們之間的相互作用有一整體性的了解;最后,由于線(xiàn)程是進(jìn)程的一種發(fā)展與細(xì)化,線(xiàn)程的基本知識(shí)也在本章的最后給出了簡(jiǎn)單的闡述。第二章進(jìn)程與線(xiàn)程現(xiàn)代操作系統(tǒng)在管理處理機(jī)資源時(shí),在執(zhí)行層面2.1 多道程序設(shè)計(jì)與進(jìn)程概念2.1.1 多道程序設(shè)計(jì)技術(shù)2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.3 進(jìn)程的概念2.1.4 進(jìn)程的特征2.1 多道程序設(shè)計(jì)與進(jìn)程概念2.1.1 多道程序設(shè)計(jì)技術(shù)多道程序設(shè)計(jì)的引入操作系統(tǒng)從單道方式發(fā)展到多道方式是一次巨大的飛躍。在單道批處理操作系統(tǒng)中,內(nèi)存中至多只有一個(gè)作業(yè);從用戶(hù)的角度來(lái)看,用戶(hù)的一個(gè)程序從提交系統(tǒng)到最終完成的整個(gè)過(guò)程不會(huì)受到其它程序的任何影響;同時(shí),多個(gè)程序在內(nèi)存的執(zhí)行是順序的,即所有程序依次獨(dú)占內(nèi)存、處理機(jī)等資源執(zhí)行。而在多道批處理操作系統(tǒng)中,多個(gè)作業(yè)一次性裝入到內(nèi)存中。從系統(tǒng)管理的角度來(lái)看,內(nèi)存中多個(gè)作業(yè)的執(zhí)行是并發(fā)的。同時(shí),各程序由于同時(shí)存在于內(nèi)存中,它們之間必定會(huì)存在相互依賴(lài)、相互制約的關(guān)系。顯然,相對(duì)于單道批處理系統(tǒng),在多道批處理系統(tǒng)中,多個(gè)作業(yè)在內(nèi)存中的工作過(guò)程的管理將更加困難。多道程序設(shè)計(jì)技術(shù)正是解決這一問(wèn)題的專(zhuān)門(mén)技術(shù)。2.1.1 多道程序設(shè)計(jì)技術(shù)2.1.1 多道程序設(shè)計(jì)技術(shù)可以看出,在多道批處理操作系統(tǒng)中,從用戶(hù)編寫(xiě)一個(gè)程序開(kāi)始、組織成作業(yè)的形式放在外存、一直到裝入內(nèi)存執(zhí)行這樣一個(gè)完整的過(guò)程中,程序在不同的階段其組成和特性是各不相同的。
處理機(jī)用戶(hù)1用戶(hù)2用戶(hù)n…外存內(nèi)存
作業(yè)提交
作業(yè)裝入作業(yè)進(jìn)程圖2.1程序、作業(yè)與進(jìn)程2.1.1 多道程序設(shè)計(jì)技術(shù)處理機(jī)用戶(hù)1用戶(hù)2用戶(hù)n…外存內(nèi)2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.1 前趨圖程序在單道運(yùn)行方式和多道運(yùn)行方式下,具有不同的執(zhí)行次序。為準(zhǔn)確描述多個(gè)程序之間的執(zhí)行次序,采用圖形工具是最自然的。前趨圖(ProcedenceGraph)就是用來(lái)描述程序執(zhí)行先后次序關(guān)系的一個(gè)圖形工具。注意:前趨圖中不可能存在循環(huán)。因此,前趨圖一定是一個(gè)有向無(wú)循環(huán)圖(DAG:DirectedAcyclicGraph)。P1P3P2P4圖2.2前趨圖示例2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.1 前趨2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序的順序執(zhí)行(一)程序順序執(zhí)行過(guò)程在單道方式下,程序處在一個(gè)順序的執(zhí)行環(huán)境中,多個(gè)程序在這一環(huán)境中是順序執(zhí)行的。順序的執(zhí)行環(huán)境意指:在計(jì)算機(jī)系統(tǒng)中,只有一個(gè)程序在運(yùn)行;該程序獨(dú)占系統(tǒng)中所有資源;其執(zhí)行不受外界影響。P1P2P3Pn圖2.3程序的順序執(zhí)行過(guò)程2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序的順序執(zhí)行(二)程序順序執(zhí)行的特征(1)程序執(zhí)行的順序性(Sequential)程序依次分別裝入內(nèi)存;一個(gè)程序在內(nèi)存中執(zhí)行時(shí),其它程序只能在外存等待。因?yàn)檫M(jìn)入內(nèi)存的唯一的一個(gè)程序獨(dú)占處理機(jī),所以該程序的各部分能夠嚴(yán)格地按程序所確定的邏輯次序順序地執(zhí)行下去。(2)程序執(zhí)行的封閉性(Closeness)在內(nèi)存中的程序只有一個(gè),該程序執(zhí)行時(shí)獨(dú)占全部系統(tǒng)資源;同時(shí),程序在封閉的環(huán)境下運(yùn)行,資源的狀態(tài)除初始狀態(tài)外,只有該程序才能改變它;所以,程序一旦開(kāi)始運(yùn)行,其執(zhí)行結(jié)果不受外界因素的影響。(3)程序運(yùn)行結(jié)果的確定性(Recurrence)程序運(yùn)行的結(jié)果與程序的執(zhí)行速度、執(zhí)行時(shí)間與方式無(wú)關(guān)。只要程序執(zhí)行時(shí)的環(huán)境和初始條件相同,當(dāng)程序多次運(yùn)行時(shí),不論它的運(yùn)行方式如何,是從頭到尾連續(xù)執(zhí)行,還是"走走停停"式地執(zhí)行,都將獲得相同的結(jié)果。也稱(chēng)程序運(yùn)行結(jié)果的可再現(xiàn)性。2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行
2.1.2.3 程序的并發(fā)執(zhí)行(一)程序并發(fā)執(zhí)行過(guò)程I1I2I3圖2.4程序的并發(fā)執(zhí)行過(guò)程C1C2C32.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序的并發(fā)執(zhí)行(二)程序并發(fā)執(zhí)行的特征(1)程序并發(fā)執(zhí)行是間斷性的這就是并發(fā)執(zhí)行的程序具有“執(zhí)行-暫停-執(zhí)行”的活動(dòng)規(guī)律,它與程序執(zhí)行的順序性明顯不同。(2)程序并發(fā)執(zhí)行是開(kāi)放性的在并發(fā)環(huán)境下,程序的并發(fā)執(zhí)行否定了封閉性,而體現(xiàn)出開(kāi)放性的特征。資源共享性相互制約性程序與執(zhí)行不再一一對(duì)應(yīng)(3)程序執(zhí)行結(jié)果的可能不再現(xiàn)性顯然,程序執(zhí)行結(jié)果的可能不再現(xiàn)性是并發(fā)方式下的一個(gè)不良的后果,有必要引入專(zhuān)門(mén)的處理策略加以解決。2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行例如,現(xiàn)有兩個(gè)循環(huán)程序P、Q。程序P每執(zhí)行一次循環(huán)都要對(duì)變量n做加1操作;程序Q每隔一定時(shí)間打印變量n的值,然后將n清成0。顯然P、Q共享一個(gè)變量n。
intn=0;
cobegin
voidP(void)
{
while(TRUE)
{…
n=n+1;
remainderofP;
}
}
voidQ(void){while(TRUE){…print(n);n=0;remainderofQ;}}coend2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行例如,現(xiàn)有兩個(gè)循環(huán)程序P2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行P、Q這些不同的并發(fā)執(zhí)行次序可能導(dǎo)致不同的結(jié)果:1) n=n+1在print(n)和n=0之前,此時(shí)得到的n值分別為1,1,02) n=n+1在print(n)和n=0之后,此時(shí)得到的n值分別為0,0,13) n=n+1在print(n)和n=0之間,此時(shí)得到的n值分別為0,1,0并發(fā)(Concurrency)與并行(parallel)兩個(gè)概念的區(qū)別。并行性是指多個(gè)程序真正各自占有處理機(jī)并同時(shí)運(yùn)行,所以嚴(yán)格地說(shuō),它只會(huì)出現(xiàn)在多處理機(jī)系統(tǒng)中;而并發(fā)是出現(xiàn)在單處理機(jī)系統(tǒng)中的概念,可以認(rèn)為并發(fā)是“邏輯上并行、物理上串行”。
2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行P、Q這些不同的并發(fā)執(zhí)行2.1.3 進(jìn)程的概念本質(zhì)上,進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。至今,人們提出了各式各樣的進(jìn)程定義,它們?cè)趯?shí)質(zhì)上是一致的。例如:進(jìn)程是程序在內(nèi)存的一次執(zhí)行;進(jìn)程是可以并發(fā)執(zhí)行的計(jì)算;進(jìn)程是一個(gè)抽象的實(shí)體,當(dāng)它執(zhí)行某個(gè)任務(wù)時(shí),將要分配和釋放各種資源;進(jìn)程是一個(gè)具有獨(dú)立功能的程序,是對(duì)某個(gè)數(shù)據(jù)集在處理機(jī)上的執(zhí)行過(guò)程和分配資源的基本單位;進(jìn)程是一個(gè)獨(dú)立的可以調(diào)度的活動(dòng)。上述定義分別從不同的角度揭示了進(jìn)程的本質(zhì)。我們沒(méi)有必要死記硬背這些定義,而應(yīng)該關(guān)注于對(duì)進(jìn)程概念本質(zhì)的理解。進(jìn)程概念主要出現(xiàn)在Unix操作系統(tǒng)系列中,在Linux中將之稱(chēng)為任務(wù)(Task)。2.1.3 進(jìn)程的概念本質(zhì)上,進(jìn)程是具有獨(dú)立功能的程序關(guān)于某2.1.4 進(jìn)程特征(1)動(dòng)態(tài)性動(dòng)態(tài)性是進(jìn)程最重要的一個(gè)特征。進(jìn)程的動(dòng)態(tài)性表現(xiàn)在它具有一定的生命周期性。即它“由"創(chuàng)建"而產(chǎn)生,由"調(diào)度"而執(zhí)行,因得不到資源而阻塞,最后由"撤銷(xiāo)"而消亡”;進(jìn)一步,進(jìn)程的“生”(產(chǎn)生)、“死”(消亡)只有一次,而在其生命期中間的“執(zhí)行”、“阻塞”等狀態(tài)可以多次反復(fù)。與進(jìn)程的動(dòng)態(tài)性對(duì)應(yīng),程序是靜態(tài)的,即程序只是始終存儲(chǔ)在外存中的一個(gè)靜態(tài)實(shí)體。(2)并發(fā)性進(jìn)程的并發(fā)性是指多個(gè)進(jìn)程可以同時(shí)裝入到內(nèi)存,并能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。引入進(jìn)程的目的也正是為了使其程序能和其他進(jìn)程的程序在內(nèi)存中通過(guò)分時(shí)共享處理機(jī)等資源的方式,并發(fā)執(zhí)行。與進(jìn)程的并發(fā)性對(duì)應(yīng),程序始終處于外存中,因此沒(méi)有并發(fā)的性質(zhì)。2.1.4 進(jìn)程特征(1)動(dòng)態(tài)性2.1.4 進(jìn)程特征(3)獨(dú)立性進(jìn)程的獨(dú)立性是指進(jìn)程是操作系統(tǒng)完成工作的基本單元。進(jìn)程的獨(dú)立性同時(shí)體現(xiàn)在如下幾個(gè)方面:1)進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單元。即只有進(jìn)程才能作為一個(gè)獨(dú)立的單元,去占有處理機(jī)運(yùn)行;2)進(jìn)程是申請(qǐng)、擁有系統(tǒng)資源的基本單位。即只有進(jìn)程才能發(fā)出資源申請(qǐng)并擁有資源;3)進(jìn)程是獨(dú)立參與調(diào)度的基本單位。即在處理機(jī)空閑時(shí),只有進(jìn)程才能作為一個(gè)獨(dú)立的單元去參與競(jìng)爭(zhēng)并獲得處理機(jī)資源。與進(jìn)程的獨(dú)立性對(duì)應(yīng),而程序作為一個(gè)靜態(tài)實(shí)體,既不可能去獨(dú)立運(yùn)行,也不可能去申請(qǐng)資源、擁有資源或參與調(diào)度。2.1.4 進(jìn)程特征(3)獨(dú)立性2.1.4 進(jìn)程特征(4)異步性進(jìn)程的異步性是指并發(fā)的進(jìn)程各自以其相對(duì)獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。而程序既然沒(méi)有動(dòng)態(tài)執(zhí)行,當(dāng)然也就不存在異步性。在進(jìn)程并發(fā)執(zhí)行時(shí),進(jìn)程間的相互作用(包括直接作用和間接作用)導(dǎo)致了進(jìn)程間的相互制約性,相互制約性導(dǎo)致了進(jìn)程執(zhí)行的間斷性,間斷性又導(dǎo)致了進(jìn)程的異步性;正是異步性導(dǎo)致了進(jìn)程執(zhí)行的可能不再現(xiàn)性。而程序既然沒(méi)有動(dòng)態(tài)執(zhí)行,當(dāng)然也就不存在異步性。(5)結(jié)構(gòu)性進(jìn)程是一個(gè)在內(nèi)存中的實(shí)體,遵循數(shù)據(jù)結(jié)構(gòu)的規(guī)范,它必須要有自己的數(shù)據(jù)結(jié)構(gòu)描述部分。因此,從結(jié)構(gòu)上看,每個(gè)進(jìn)程除對(duì)應(yīng)的程序段(對(duì)應(yīng)程序的操作部分)、數(shù)據(jù)段(對(duì)應(yīng)程序執(zhí)行需要的數(shù)據(jù)部分)以外,還應(yīng)該有一個(gè)自己的數(shù)據(jù)結(jié)構(gòu)部分。這一數(shù)據(jù)結(jié)構(gòu)稱(chēng)為進(jìn)程控制塊(PCB:ProcessControllingBlock)。因此,進(jìn)程的結(jié)構(gòu)性是指進(jìn)程是由程序段、數(shù)據(jù)段和PCB等組成的一個(gè)實(shí)體,有時(shí)也稱(chēng)為“進(jìn)程映像”。與進(jìn)程的結(jié)構(gòu)性對(duì)應(yīng),程序沒(méi)有這種結(jié)構(gòu)描述,它主要程序只是進(jìn)程中的程序段一部分。2.1.4 進(jìn)程特征(4)異步性2.2
進(jìn)程的狀態(tài)與轉(zhuǎn)換2.2.1 三狀態(tài)模型及其轉(zhuǎn)換2.2.2 五狀態(tài)模型及其轉(zhuǎn)換2.2.3 七狀態(tài)模型及其轉(zhuǎn)換2.2 進(jìn)程的狀態(tài)與轉(zhuǎn)換2.2.1 三狀態(tài)模型及其轉(zhuǎn)換(一)三種基本狀態(tài)(二)三種基本狀態(tài)的轉(zhuǎn)換就緒圖2.5進(jìn)程的三種基本狀態(tài)內(nèi)存執(zhí)行阻塞進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生2.2.1 三狀態(tài)模型及其轉(zhuǎn)換(一)三種基本狀態(tài)就緒圖2.52.2.2 五狀態(tài)模型及其轉(zhuǎn)換(一)五種基本狀態(tài)(二)五種基本狀態(tài)的轉(zhuǎn)換圖2.6進(jìn)程的五種基本狀態(tài)就緒內(nèi)存執(zhí)行阻塞進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生新接收衰亡2.2.2 五狀態(tài)模型及其轉(zhuǎn)換(一)五種基本狀態(tài)圖2.6進(jìn)2.2.3
七狀態(tài)模型及其轉(zhuǎn)換(略)(二)七種基本狀態(tài)(三)七種基本狀態(tài)的轉(zhuǎn)換圖2.7進(jìn)程的七種基本狀態(tài)就緒內(nèi)存執(zhí)行進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生新接收衰亡阻塞就緒掛起I/O完成或事件發(fā)生阻塞掛起掛起掛起激活激活掛起外存2.2.3 七狀態(tài)模型及其轉(zhuǎn)換(略)(二)七種基本狀態(tài)圖2.2.3
進(jìn)程組織2.3.1 進(jìn)程控制塊2.3.2 進(jìn)程的組織方式2.3 進(jìn)程組織2.3.1
進(jìn)程控制塊(一)進(jìn)程控制塊概念進(jìn)程作為內(nèi)存中的一種實(shí)體,在對(duì)其進(jìn)行各種管理時(shí),首先需要為之設(shè)置一個(gè)專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu),然后操作系統(tǒng)才能利用這一數(shù)據(jù)結(jié)構(gòu)來(lái)控制與管理進(jìn)程,這是數(shù)據(jù)結(jié)構(gòu)規(guī)范的要求。進(jìn)程控制塊(PCB:ProcessControllingBlock)就是操作系統(tǒng)為進(jìn)程設(shè)置的專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu),用它來(lái)描述進(jìn)程的特征以及控制進(jìn)程運(yùn)行需要的全部信息。系統(tǒng)在控制和管理進(jìn)程時(shí),都是基于PCB進(jìn)行的??梢哉f(shuō),進(jìn)程在內(nèi)存的一切活動(dòng)都基于PCB進(jìn)行;所以,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。進(jìn)程與PCB是一一對(duì)應(yīng)的。即一個(gè)進(jìn)程被創(chuàng)建,就有與之對(duì)應(yīng)的PCB;一直到該進(jìn)程消亡,相應(yīng)的PCB也被收回。PCB應(yīng)常駐內(nèi)存,因?yàn)樗沁M(jìn)程的數(shù)據(jù)結(jié)構(gòu)描述,同時(shí)也因?yàn)樗辉L(fǎng)問(wèn)的頻率很高(例如被運(yùn)行頻率很高的進(jìn)程調(diào)度程序所訪(fǎng)問(wèn))。2.3.1 進(jìn)程控制塊(一)進(jìn)程控制塊概念2.3.1
進(jìn)程控制塊(二)進(jìn)程控制塊的內(nèi)容進(jìn)程描述信息:進(jìn)程標(biāo)識(shí)符(ProcessID)即內(nèi)部標(biāo)識(shí)符、進(jìn)程名即外部標(biāo)識(shí)符、用戶(hù)標(biāo)識(shí)符進(jìn)程調(diào)度信息:當(dāng)前狀態(tài)、優(yōu)先級(jí)、運(yùn)行統(tǒng)計(jì)信息、阻塞原因進(jìn)程控制信息:數(shù)據(jù)段與程序段地址、同步與通信、鏈接指針、資源進(jìn)程狀態(tài)信息:寄存器、棧指針2.3.1 進(jìn)程控制塊(二)進(jìn)程控制塊的內(nèi)容2.3.2
進(jìn)程的組織方式(一)PCB的邏輯組織遵循數(shù)據(jù)結(jié)構(gòu)的規(guī)范,進(jìn)程作為內(nèi)存中的一種實(shí)體,對(duì)其組織實(shí)際上就是針對(duì)進(jìn)程的數(shù)據(jù)結(jié)構(gòu)—PCB進(jìn)行的。在邏輯上,系統(tǒng)可以將所有進(jìn)程的PCB組織在一起,并把它們放在內(nèi)存的固定區(qū)域,就構(gòu)成了PCB表。PCB表的大小決定了系統(tǒng)中最多可同時(shí)存在的進(jìn)程個(gè)數(shù),稱(chēng)為系統(tǒng)的并發(fā)度。進(jìn)一步,對(duì)PCB表中的進(jìn)程,可以根據(jù)進(jìn)程的狀態(tài),將具有相同狀態(tài)的進(jìn)程組織在一起,形成相應(yīng)的進(jìn)程隊(duì)列。
2.3.2 進(jìn)程的組織方式(一)PCB的邏輯組織2.3.2
進(jìn)程的組織方式完成阻塞原因n阻塞原因2阻塞原因1時(shí)間片到進(jìn)程就緒隊(duì)列進(jìn)程阻塞隊(duì)列1進(jìn)程阻塞隊(duì)列2進(jìn)程阻塞隊(duì)列n占有處理機(jī)執(zhí)行
圖2.10進(jìn)程多隊(duì)列組織2.3.2 進(jìn)程的組織方式完成阻塞原因n阻塞原因2阻塞原因12.3.2
進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織(1)鏈接方式執(zhí)行進(jìn)程指針就緒鏈表頭指針阻塞鏈表頭指針空閑鏈表頭指針PCB14PCB23PCB30PCB48PCB50PCB67PCB79PCB80PCB912
圖2.11PCB鏈接組織方式示意圖PCB表2.3.2 進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織執(zhí)行進(jìn)程指針2.3.2
進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織(1)索引方式PCB表空閑索引表阻塞索引表就緒索引表執(zhí)行進(jìn)程指針就緒索引表指針阻塞索引表指針空閑索引表指針PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9
圖2.12PCB索引組織方式示意圖
2.3.2 進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織PCB表空閑2.4
進(jìn)程通信2.4 進(jìn)程通信2.4.1 進(jìn)程通信概述(一)進(jìn)程通信方式(1)直接通信方式這種方式要求發(fā)送進(jìn)程和接收進(jìn)程都顯式地提供給對(duì)方自己的地址或標(biāo)識(shí)符;然后,發(fā)送進(jìn)程利用操作系統(tǒng)提供的發(fā)送指令,直接把信息傳遞給接收進(jìn)程。在發(fā)送時(shí),指定接收方的地址或標(biāo)識(shí),也可以指定多個(gè)接收方或廣播式地址;在接收時(shí),允許接收來(lái)自任意發(fā)送方的信息,并同時(shí)獲取發(fā)送方的地址。(2)間接通信方式這種方式要求借助于收發(fā)雙方進(jìn)程之外的某種中間實(shí)體作為通信中轉(zhuǎn)。這種中間實(shí)體是某種可共享的數(shù)據(jù)結(jié)構(gòu),用來(lái)暫存發(fā)送進(jìn)程傳遞給接收進(jìn)程的信息。2.4.1 進(jìn)程通信概述(一)進(jìn)程通信方式2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(1)共享存儲(chǔ)系統(tǒng)(SharedMemorySystem)在共享存儲(chǔ)系統(tǒng)中,為了傳送大量數(shù)據(jù),首先在內(nèi)存中劃出一塊共享存儲(chǔ)區(qū);然后,需要通信的進(jìn)程可通過(guò)對(duì)此共享存儲(chǔ)區(qū)進(jìn)行讀或?qū)憯?shù)據(jù)來(lái)實(shí)現(xiàn)通信。即:一組進(jìn)程向該共享內(nèi)存中寫(xiě),另一組進(jìn)程從共享內(nèi)存中讀,通過(guò)這種方式實(shí)現(xiàn)兩組進(jìn)程間的信息交換。采用共享存儲(chǔ)系統(tǒng)的進(jìn)程通信過(guò)程大致為:STEP1:申請(qǐng)共享存儲(chǔ)區(qū)。進(jìn)程在通信之前,向系統(tǒng)申請(qǐng)共享存儲(chǔ)區(qū)中的一個(gè)分區(qū),并為它指定一個(gè)分區(qū)關(guān)鍵字。若該分區(qū)已被系統(tǒng)分配給了其它進(jìn)程,系統(tǒng)將該分區(qū)的關(guān)鍵字返回給申請(qǐng)者,然后繼續(xù)申請(qǐng)直至成功;STEP2:合并分配的存儲(chǔ)分區(qū)。申請(qǐng)者把獲得的共享存儲(chǔ)區(qū)的該分區(qū)鏈接到本進(jìn)程上。STEP3:讀寫(xiě)公用存儲(chǔ)分區(qū)。進(jìn)程可像讀、寫(xiě)普通存儲(chǔ)器一樣,讀、寫(xiě)這一共享的存儲(chǔ)分區(qū),完成進(jìn)程信息的傳遞。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(2)消息傳遞系統(tǒng)(MessagePassingSystem)消息傳遞系統(tǒng)首先對(duì)待傳遞的信息規(guī)定了一定的格式,按照這一格式組織的信息稱(chēng)為“消息”(Message),進(jìn)程間的數(shù)據(jù)交換就以消息為單位。然后,消息傳遞系統(tǒng)提供了一組支持指令來(lái)實(shí)現(xiàn)進(jìn)程通信,使進(jìn)程通信無(wú)需用戶(hù)考慮通信的管理細(xì)節(jié)。因而,消息傳遞系統(tǒng)是目前單機(jī)系統(tǒng)、多機(jī)系統(tǒng)包括計(jì)算機(jī)網(wǎng)絡(luò)中最主要的一種進(jìn)程高級(jí)通信方式。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(3)管道通信系統(tǒng)(PipeSystem)管道通信方式首先出現(xiàn)于Unix系統(tǒng)。管道(Pipe)是指用于連接一個(gè)發(fā)送進(jìn)程和一個(gè)接收進(jìn)程,以實(shí)現(xiàn)它們間通信的共享文件,又稱(chēng)pipe文件。在這種進(jìn)程通信方式中,發(fā)送進(jìn)程向管道寫(xiě)入待傳遞的信息,而接收進(jìn)程從此管道中讀出信息。管道通信屬于進(jìn)程的直接通信方式。為了協(xié)調(diào)發(fā)送和接收雙方的通信,管道通信機(jī)制必須提供以下三方面的協(xié)調(diào)功能:1) 互斥。當(dāng)一個(gè)進(jìn)程正在對(duì)pipe文件進(jìn)行讀或?qū)懖僮鲿r(shí),另一個(gè)進(jìn)程必須等待。2) 同步。當(dāng)發(fā)送進(jìn)程把一定數(shù)量的數(shù)據(jù)寫(xiě)入pipe文件后,該進(jìn)程便等待(阻塞);直到接收進(jìn)程取走數(shù)據(jù)后,再把它喚醒。同樣,當(dāng)接收進(jìn)程從pipe文件中取走數(shù)據(jù)后,該進(jìn)程也將等待(阻塞);直到發(fā)送進(jìn)程又向pipe文件寫(xiě)入數(shù)據(jù)后,才把它喚醒。3) 確認(rèn)對(duì)方是否存在。只有確認(rèn)對(duì)方已存在時(shí),才能進(jìn)行管道通信;否則,會(huì)造成因?qū)Ψ讲淮嬖诙鵁o(wú)限制地等待。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.5
線(xiàn)程基礎(chǔ)2.5.1 線(xiàn)程引入2.5.2 線(xiàn)程定義與特征2.5.2 線(xiàn)程實(shí)現(xiàn)2.5 線(xiàn)程基礎(chǔ)2.5.1 線(xiàn)程引入線(xiàn)程的引入可以從進(jìn)程的獨(dú)立性入手。進(jìn)程的獨(dú)立性包括三重含義,即:1)進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單元;2)進(jìn)程是申請(qǐng)、擁有系統(tǒng)資源的基本單位;3)進(jìn)程是獨(dú)立參與調(diào)度的基本單位。其中,后兩點(diǎn)是第1)點(diǎn)的前提條件,使進(jìn)程可以獨(dú)立地參與并發(fā)執(zhí)行。2.5.1 線(xiàn)程引入線(xiàn)程的引入可以從進(jìn)程的獨(dú)立性入手。2.5.1 線(xiàn)程引入獨(dú)立性導(dǎo)致不必要的負(fù)重而行為此,一個(gè)可行的改進(jìn)策略是:將進(jìn)程的獨(dú)立運(yùn)行性和獨(dú)立擁有資源性分開(kāi)。具體做法是:作為獨(dú)立參與調(diào)度的基本單位,不同時(shí)作為獨(dú)立擁有資源的基本單位,使之能夠在擁有最少必要資源的前提下,獨(dú)立地參加進(jìn)程調(diào)度;同時(shí),對(duì)擁有資源的基本單位,盡可能不頻繁地對(duì)之進(jìn)行進(jìn)程切換。遵循上述策略,我們可以將進(jìn)程概念保留,作為獨(dú)立擁有資源的基本單位;同時(shí),又引入線(xiàn)程概念,作為獨(dú)立參與調(diào)度的基本單位。2.5.1 線(xiàn)程引入獨(dú)立性導(dǎo)致不必要的負(fù)重而行2.5.2 線(xiàn)程的定義與特征(一)線(xiàn)程的定義線(xiàn)程(Thread)是進(jìn)程中的一個(gè)實(shí)體,是可獨(dú)立參與調(diào)度的基本單位。一個(gè)進(jìn)程可以有一個(gè)或多個(gè)線(xiàn)程,它們共享所屬進(jìn)程所擁有的資源。線(xiàn)程具有如下屬性:(1)多個(gè)線(xiàn)程可以并發(fā)執(zhí)行。(2)一個(gè)線(xiàn)程可以創(chuàng)建、撤消另一個(gè)線(xiàn)程。(3)線(xiàn)程具有動(dòng)態(tài)性。一個(gè)線(xiàn)程被創(chuàng)建后便開(kāi)始了它的生命周期,可能處于不同的狀態(tài),直至衰亡。(4)每個(gè)線(xiàn)程同樣有自己的數(shù)據(jù)結(jié)構(gòu)即線(xiàn)程控制塊TCB(ThreadControllingBlock),其中記錄了該線(xiàn)程的標(biāo)識(shí)符、線(xiàn)程執(zhí)行時(shí)的寄存器和棧等現(xiàn)場(chǎng)狀態(tài)信息。(5)在同一進(jìn)程內(nèi),各線(xiàn)程共享同一地址空間(即所屬進(jìn)程的存儲(chǔ)空間)。(6)一進(jìn)程中的線(xiàn)程在另一進(jìn)程中是不可見(jiàn)的。2.5.2 線(xiàn)程的定義與特征(一)線(xiàn)程的定義2.5.2 線(xiàn)程的定義與特征(二)線(xiàn)程與進(jìn)程的對(duì)應(yīng)PCB用戶(hù)地址空間用戶(hù)棧核心棧線(xiàn)程控制塊TCB(寄存器映像、線(xiàn)程優(yōu)先數(shù)和線(xiàn)程狀態(tài)信息等)圖2.14單線(xiàn)程進(jìn)程模型2.5.2 線(xiàn)程的定義與特征(二)線(xiàn)程與進(jìn)程的對(duì)應(yīng)PCB用戶(hù)2.5.2 線(xiàn)程的定義與特征(二)線(xiàn)程與進(jìn)程的對(duì)應(yīng)PCB用戶(hù)地址空間用戶(hù)棧核心棧圖2.15多線(xiàn)程進(jìn)程模型TCB1用戶(hù)棧核心棧TCB2用戶(hù)棧核心棧TCB32.5.2 線(xiàn)程的定義與特征(二)線(xiàn)程與進(jìn)程的對(duì)應(yīng)PCB用戶(hù)2.5.2 線(xiàn)程的定義與特征(三)線(xiàn)程的特征線(xiàn)程具有許多類(lèi)似于進(jìn)程的特征,有時(shí)稱(chēng)線(xiàn)程為輕量級(jí)進(jìn)程。(1) 擁有資源方面不管是在以進(jìn)程為基本單位的操作系統(tǒng),還是在引入線(xiàn)程的操作系統(tǒng)中,進(jìn)程都是獨(dú)立擁有資源的一個(gè)基本單位;它可以申請(qǐng)并擁有自己的資源,也可以訪(fǎng)問(wèn)其所屬進(jìn)程的資源。而線(xiàn)程只擁有一點(diǎn)在運(yùn)行中必要的資源,如程序計(jì)數(shù)器、寄存器和棧;當(dāng)然,它可以訪(fǎng)問(wèn)其所屬進(jìn)程的資源(注意:資源仍然是分給進(jìn)程的)。(2) 調(diào)度方面在引入線(xiàn)程的操作系統(tǒng)中,進(jìn)程作為獨(dú)立擁有資源的基本單位,而線(xiàn)程是獨(dú)立參與調(diào)度的基本單位。這樣,引入線(xiàn)程的操作系統(tǒng)中存在著兩級(jí)調(diào)度:同一進(jìn)程內(nèi)線(xiàn)程之間的調(diào)度、不同進(jìn)程之間的調(diào)度(由分屬于不同進(jìn)程的線(xiàn)程之間的調(diào)度引起)。同一個(gè)進(jìn)程內(nèi)的線(xiàn)程切換不會(huì)引起進(jìn)程切換;而在由一個(gè)進(jìn)程內(nèi)的線(xiàn)程切換到另一進(jìn)程內(nèi)的線(xiàn)程時(shí),將引起進(jìn)程切換。2.5.2 線(xiàn)程的定義與特征(三)線(xiàn)程的特征2.5.2 線(xiàn)程的定義與特征(三)線(xiàn)程的特征(3)并發(fā)性方面在引入線(xiàn)程的操作系統(tǒng)中,不僅不同進(jìn)程的線(xiàn)程之間可以并發(fā)執(zhí)行,而且在同一個(gè)進(jìn)程的多個(gè)線(xiàn)程間亦可并發(fā)執(zhí)行,因而使系統(tǒng)具有更好的并發(fā)性。(4)系統(tǒng)開(kāi)銷(xiāo)方面相比于沒(méi)有引入線(xiàn)程的操作系統(tǒng),引入線(xiàn)程的系統(tǒng)其系統(tǒng)開(kāi)銷(xiāo)將顯著降低。例如,在創(chuàng)建或撤銷(xiāo)線(xiàn)程時(shí),系統(tǒng)只需分配與回收很少的資源,而無(wú)需像進(jìn)程創(chuàng)建或撤消那樣,花費(fèi)開(kāi)銷(xiāo)來(lái)分配或回收如內(nèi)存空間、I/O設(shè)備等資源;又如,在線(xiàn)程切換時(shí),只需保存和設(shè)置少量的寄存器的內(nèi)容,而無(wú)需像進(jìn)程切換那樣,花費(fèi)開(kāi)銷(xiāo)來(lái)保存和設(shè)置很多的現(xiàn)場(chǎng)信息。另外,同一個(gè)進(jìn)程內(nèi)線(xiàn)程之間的通信由于共享所屬進(jìn)程的存儲(chǔ)空間,也比進(jìn)程通信更加容易。2.5.2 線(xiàn)程的定義與特征(三)線(xiàn)程的特征2.6
本章小結(jié)進(jìn)程管理是處理機(jī)管理最主要的部分。本章全面介紹了進(jìn)程管理覆蓋的基礎(chǔ)知識(shí),可以看作是操作系統(tǒng)中處理機(jī)管理的一個(gè)總領(lǐng),也是后續(xù)重點(diǎn)介紹的進(jìn)程同步、處理機(jī)調(diào)度等的基礎(chǔ)。本章的內(nèi)容大致可以分為兩個(gè)層次的知識(shí):一是對(duì)進(jìn)程的認(rèn)識(shí),包括進(jìn)程的引入、進(jìn)程的概念與特征、以及進(jìn)程在內(nèi)存中的狀態(tài)及轉(zhuǎn)換。另一是對(duì)進(jìn)程的管理,包括進(jìn)程控制、進(jìn)程組織與進(jìn)程通信。另外,由于線(xiàn)程是進(jìn)程的一種發(fā)展與細(xì)化,線(xiàn)程的基本知識(shí)也在本章的最后給出了簡(jiǎn)單的闡述。2.6 本章小結(jié)進(jìn)程管理是處理機(jī)管理最主要的部分。本章全面介第二章進(jìn)程與線(xiàn)程現(xiàn)代操作系統(tǒng)在管理處理機(jī)資源時(shí),在執(zhí)行層面的基本單位是進(jìn)程,即進(jìn)程是獨(dú)立運(yùn)行和擁有資源的基本單位。而進(jìn)程是隨著現(xiàn)代操作系統(tǒng)必然遵循的多道程序設(shè)計(jì)技術(shù)的出現(xiàn)而提出的。為此,本章首先從多道程序設(shè)計(jì)的角度引入進(jìn)程概念;然后,圍繞進(jìn)程在內(nèi)存的演變過(guò)程,逐步說(shuō)明進(jìn)程的控制、組織與通信,以對(duì)單個(gè)進(jìn)程以及它們之間的相互作用有一整體性的了解;最后,由于線(xiàn)程是進(jìn)程的一種發(fā)展與細(xì)化,線(xiàn)程的基本知識(shí)也在本章的最后給出了簡(jiǎn)單的闡述。第二章進(jìn)程與線(xiàn)程現(xiàn)代操作系統(tǒng)在管理處理機(jī)資源時(shí),在執(zhí)行層面2.1 多道程序設(shè)計(jì)與進(jìn)程概念2.1.1 多道程序設(shè)計(jì)技術(shù)2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.3 進(jìn)程的概念2.1.4 進(jìn)程的特征2.1 多道程序設(shè)計(jì)與進(jìn)程概念2.1.1 多道程序設(shè)計(jì)技術(shù)多道程序設(shè)計(jì)的引入操作系統(tǒng)從單道方式發(fā)展到多道方式是一次巨大的飛躍。在單道批處理操作系統(tǒng)中,內(nèi)存中至多只有一個(gè)作業(yè);從用戶(hù)的角度來(lái)看,用戶(hù)的一個(gè)程序從提交系統(tǒng)到最終完成的整個(gè)過(guò)程不會(huì)受到其它程序的任何影響;同時(shí),多個(gè)程序在內(nèi)存的執(zhí)行是順序的,即所有程序依次獨(dú)占內(nèi)存、處理機(jī)等資源執(zhí)行。而在多道批處理操作系統(tǒng)中,多個(gè)作業(yè)一次性裝入到內(nèi)存中。從系統(tǒng)管理的角度來(lái)看,內(nèi)存中多個(gè)作業(yè)的執(zhí)行是并發(fā)的。同時(shí),各程序由于同時(shí)存在于內(nèi)存中,它們之間必定會(huì)存在相互依賴(lài)、相互制約的關(guān)系。顯然,相對(duì)于單道批處理系統(tǒng),在多道批處理系統(tǒng)中,多個(gè)作業(yè)在內(nèi)存中的工作過(guò)程的管理將更加困難。多道程序設(shè)計(jì)技術(shù)正是解決這一問(wèn)題的專(zhuān)門(mén)技術(shù)。2.1.1 多道程序設(shè)計(jì)技術(shù)2.1.1 多道程序設(shè)計(jì)技術(shù)可以看出,在多道批處理操作系統(tǒng)中,從用戶(hù)編寫(xiě)一個(gè)程序開(kāi)始、組織成作業(yè)的形式放在外存、一直到裝入內(nèi)存執(zhí)行這樣一個(gè)完整的過(guò)程中,程序在不同的階段其組成和特性是各不相同的。
處理機(jī)用戶(hù)1用戶(hù)2用戶(hù)n…外存內(nèi)存
作業(yè)提交
作業(yè)裝入作業(yè)進(jìn)程圖2.1程序、作業(yè)與進(jìn)程2.1.1 多道程序設(shè)計(jì)技術(shù)處理機(jī)用戶(hù)1用戶(hù)2用戶(hù)n…外存內(nèi)2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.1 前趨圖程序在單道運(yùn)行方式和多道運(yùn)行方式下,具有不同的執(zhí)行次序。為準(zhǔn)確描述多個(gè)程序之間的執(zhí)行次序,采用圖形工具是最自然的。前趨圖(ProcedenceGraph)就是用來(lái)描述程序執(zhí)行先后次序關(guān)系的一個(gè)圖形工具。注意:前趨圖中不可能存在循環(huán)。因此,前趨圖一定是一個(gè)有向無(wú)循環(huán)圖(DAG:DirectedAcyclicGraph)。P1P3P2P4圖2.2前趨圖示例2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.1 前趨2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序的順序執(zhí)行(一)程序順序執(zhí)行過(guò)程在單道方式下,程序處在一個(gè)順序的執(zhí)行環(huán)境中,多個(gè)程序在這一環(huán)境中是順序執(zhí)行的。順序的執(zhí)行環(huán)境意指:在計(jì)算機(jī)系統(tǒng)中,只有一個(gè)程序在運(yùn)行;該程序獨(dú)占系統(tǒng)中所有資源;其執(zhí)行不受外界影響。P1P2P3Pn圖2.3程序的順序執(zhí)行過(guò)程2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序的順序執(zhí)行(二)程序順序執(zhí)行的特征(1)程序執(zhí)行的順序性(Sequential)程序依次分別裝入內(nèi)存;一個(gè)程序在內(nèi)存中執(zhí)行時(shí),其它程序只能在外存等待。因?yàn)檫M(jìn)入內(nèi)存的唯一的一個(gè)程序獨(dú)占處理機(jī),所以該程序的各部分能夠嚴(yán)格地按程序所確定的邏輯次序順序地執(zhí)行下去。(2)程序執(zhí)行的封閉性(Closeness)在內(nèi)存中的程序只有一個(gè),該程序執(zhí)行時(shí)獨(dú)占全部系統(tǒng)資源;同時(shí),程序在封閉的環(huán)境下運(yùn)行,資源的狀態(tài)除初始狀態(tài)外,只有該程序才能改變它;所以,程序一旦開(kāi)始運(yùn)行,其執(zhí)行結(jié)果不受外界因素的影響。(3)程序運(yùn)行結(jié)果的確定性(Recurrence)程序運(yùn)行的結(jié)果與程序的執(zhí)行速度、執(zhí)行時(shí)間與方式無(wú)關(guān)。只要程序執(zhí)行時(shí)的環(huán)境和初始條件相同,當(dāng)程序多次運(yùn)行時(shí),不論它的運(yùn)行方式如何,是從頭到尾連續(xù)執(zhí)行,還是"走走停停"式地執(zhí)行,都將獲得相同的結(jié)果。也稱(chēng)程序運(yùn)行結(jié)果的可再現(xiàn)性。2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.2 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行
2.1.2.3 程序的并發(fā)執(zhí)行(一)程序并發(fā)執(zhí)行過(guò)程I1I2I3圖2.4程序的并發(fā)執(zhí)行過(guò)程C1C2C32.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序的并發(fā)執(zhí)行(二)程序并發(fā)執(zhí)行的特征(1)程序并發(fā)執(zhí)行是間斷性的這就是并發(fā)執(zhí)行的程序具有“執(zhí)行-暫停-執(zhí)行”的活動(dòng)規(guī)律,它與程序執(zhí)行的順序性明顯不同。(2)程序并發(fā)執(zhí)行是開(kāi)放性的在并發(fā)環(huán)境下,程序的并發(fā)執(zhí)行否定了封閉性,而體現(xiàn)出開(kāi)放性的特征。資源共享性相互制約性程序與執(zhí)行不再一一對(duì)應(yīng)(3)程序執(zhí)行結(jié)果的可能不再現(xiàn)性顯然,程序執(zhí)行結(jié)果的可能不再現(xiàn)性是并發(fā)方式下的一個(gè)不良的后果,有必要引入專(zhuān)門(mén)的處理策略加以解決。2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行2.1.2.3 程序2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行例如,現(xiàn)有兩個(gè)循環(huán)程序P、Q。程序P每執(zhí)行一次循環(huán)都要對(duì)變量n做加1操作;程序Q每隔一定時(shí)間打印變量n的值,然后將n清成0。顯然P、Q共享一個(gè)變量n。
intn=0;
cobegin
voidP(void)
{
while(TRUE)
{…
n=n+1;
remainderofP;
}
}
voidQ(void){while(TRUE){…print(n);n=0;remainderofQ;}}coend2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行例如,現(xiàn)有兩個(gè)循環(huán)程序P2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行P、Q這些不同的并發(fā)執(zhí)行次序可能導(dǎo)致不同的結(jié)果:1) n=n+1在print(n)和n=0之前,此時(shí)得到的n值分別為1,1,02) n=n+1在print(n)和n=0之后,此時(shí)得到的n值分別為0,0,13) n=n+1在print(n)和n=0之間,此時(shí)得到的n值分別為0,1,0并發(fā)(Concurrency)與并行(parallel)兩個(gè)概念的區(qū)別。并行性是指多個(gè)程序真正各自占有處理機(jī)并同時(shí)運(yùn)行,所以嚴(yán)格地說(shuō),它只會(huì)出現(xiàn)在多處理機(jī)系統(tǒng)中;而并發(fā)是出現(xiàn)在單處理機(jī)系統(tǒng)中的概念,可以認(rèn)為并發(fā)是“邏輯上并行、物理上串行”。
2.1.2 程序的順序執(zhí)行與并發(fā)執(zhí)行P、Q這些不同的并發(fā)執(zhí)行2.1.3 進(jìn)程的概念本質(zhì)上,進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。至今,人們提出了各式各樣的進(jìn)程定義,它們?cè)趯?shí)質(zhì)上是一致的。例如:進(jìn)程是程序在內(nèi)存的一次執(zhí)行;進(jìn)程是可以并發(fā)執(zhí)行的計(jì)算;進(jìn)程是一個(gè)抽象的實(shí)體,當(dāng)它執(zhí)行某個(gè)任務(wù)時(shí),將要分配和釋放各種資源;進(jìn)程是一個(gè)具有獨(dú)立功能的程序,是對(duì)某個(gè)數(shù)據(jù)集在處理機(jī)上的執(zhí)行過(guò)程和分配資源的基本單位;進(jìn)程是一個(gè)獨(dú)立的可以調(diào)度的活動(dòng)。上述定義分別從不同的角度揭示了進(jìn)程的本質(zhì)。我們沒(méi)有必要死記硬背這些定義,而應(yīng)該關(guān)注于對(duì)進(jìn)程概念本質(zhì)的理解。進(jìn)程概念主要出現(xiàn)在Unix操作系統(tǒng)系列中,在Linux中將之稱(chēng)為任務(wù)(Task)。2.1.3 進(jìn)程的概念本質(zhì)上,進(jìn)程是具有獨(dú)立功能的程序關(guān)于某2.1.4 進(jìn)程特征(1)動(dòng)態(tài)性動(dòng)態(tài)性是進(jìn)程最重要的一個(gè)特征。進(jìn)程的動(dòng)態(tài)性表現(xiàn)在它具有一定的生命周期性。即它“由"創(chuàng)建"而產(chǎn)生,由"調(diào)度"而執(zhí)行,因得不到資源而阻塞,最后由"撤銷(xiāo)"而消亡”;進(jìn)一步,進(jìn)程的“生”(產(chǎn)生)、“死”(消亡)只有一次,而在其生命期中間的“執(zhí)行”、“阻塞”等狀態(tài)可以多次反復(fù)。與進(jìn)程的動(dòng)態(tài)性對(duì)應(yīng),程序是靜態(tài)的,即程序只是始終存儲(chǔ)在外存中的一個(gè)靜態(tài)實(shí)體。(2)并發(fā)性進(jìn)程的并發(fā)性是指多個(gè)進(jìn)程可以同時(shí)裝入到內(nèi)存,并能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。引入進(jìn)程的目的也正是為了使其程序能和其他進(jìn)程的程序在內(nèi)存中通過(guò)分時(shí)共享處理機(jī)等資源的方式,并發(fā)執(zhí)行。與進(jìn)程的并發(fā)性對(duì)應(yīng),程序始終處于外存中,因此沒(méi)有并發(fā)的性質(zhì)。2.1.4 進(jìn)程特征(1)動(dòng)態(tài)性2.1.4 進(jìn)程特征(3)獨(dú)立性進(jìn)程的獨(dú)立性是指進(jìn)程是操作系統(tǒng)完成工作的基本單元。進(jìn)程的獨(dú)立性同時(shí)體現(xiàn)在如下幾個(gè)方面:1)進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單元。即只有進(jìn)程才能作為一個(gè)獨(dú)立的單元,去占有處理機(jī)運(yùn)行;2)進(jìn)程是申請(qǐng)、擁有系統(tǒng)資源的基本單位。即只有進(jìn)程才能發(fā)出資源申請(qǐng)并擁有資源;3)進(jìn)程是獨(dú)立參與調(diào)度的基本單位。即在處理機(jī)空閑時(shí),只有進(jìn)程才能作為一個(gè)獨(dú)立的單元去參與競(jìng)爭(zhēng)并獲得處理機(jī)資源。與進(jìn)程的獨(dú)立性對(duì)應(yīng),而程序作為一個(gè)靜態(tài)實(shí)體,既不可能去獨(dú)立運(yùn)行,也不可能去申請(qǐng)資源、擁有資源或參與調(diào)度。2.1.4 進(jìn)程特征(3)獨(dú)立性2.1.4 進(jìn)程特征(4)異步性進(jìn)程的異步性是指并發(fā)的進(jìn)程各自以其相對(duì)獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。而程序既然沒(méi)有動(dòng)態(tài)執(zhí)行,當(dāng)然也就不存在異步性。在進(jìn)程并發(fā)執(zhí)行時(shí),進(jìn)程間的相互作用(包括直接作用和間接作用)導(dǎo)致了進(jìn)程間的相互制約性,相互制約性導(dǎo)致了進(jìn)程執(zhí)行的間斷性,間斷性又導(dǎo)致了進(jìn)程的異步性;正是異步性導(dǎo)致了進(jìn)程執(zhí)行的可能不再現(xiàn)性。而程序既然沒(méi)有動(dòng)態(tài)執(zhí)行,當(dāng)然也就不存在異步性。(5)結(jié)構(gòu)性進(jìn)程是一個(gè)在內(nèi)存中的實(shí)體,遵循數(shù)據(jù)結(jié)構(gòu)的規(guī)范,它必須要有自己的數(shù)據(jù)結(jié)構(gòu)描述部分。因此,從結(jié)構(gòu)上看,每個(gè)進(jìn)程除對(duì)應(yīng)的程序段(對(duì)應(yīng)程序的操作部分)、數(shù)據(jù)段(對(duì)應(yīng)程序執(zhí)行需要的數(shù)據(jù)部分)以外,還應(yīng)該有一個(gè)自己的數(shù)據(jù)結(jié)構(gòu)部分。這一數(shù)據(jù)結(jié)構(gòu)稱(chēng)為進(jìn)程控制塊(PCB:ProcessControllingBlock)。因此,進(jìn)程的結(jié)構(gòu)性是指進(jìn)程是由程序段、數(shù)據(jù)段和PCB等組成的一個(gè)實(shí)體,有時(shí)也稱(chēng)為“進(jìn)程映像”。與進(jìn)程的結(jié)構(gòu)性對(duì)應(yīng),程序沒(méi)有這種結(jié)構(gòu)描述,它主要程序只是進(jìn)程中的程序段一部分。2.1.4 進(jìn)程特征(4)異步性2.2
進(jìn)程的狀態(tài)與轉(zhuǎn)換2.2.1 三狀態(tài)模型及其轉(zhuǎn)換2.2.2 五狀態(tài)模型及其轉(zhuǎn)換2.2.3 七狀態(tài)模型及其轉(zhuǎn)換2.2 進(jìn)程的狀態(tài)與轉(zhuǎn)換2.2.1 三狀態(tài)模型及其轉(zhuǎn)換(一)三種基本狀態(tài)(二)三種基本狀態(tài)的轉(zhuǎn)換就緒圖2.5進(jìn)程的三種基本狀態(tài)內(nèi)存執(zhí)行阻塞進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生2.2.1 三狀態(tài)模型及其轉(zhuǎn)換(一)三種基本狀態(tài)就緒圖2.52.2.2 五狀態(tài)模型及其轉(zhuǎn)換(一)五種基本狀態(tài)(二)五種基本狀態(tài)的轉(zhuǎn)換圖2.6進(jìn)程的五種基本狀態(tài)就緒內(nèi)存執(zhí)行阻塞進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生新接收衰亡2.2.2 五狀態(tài)模型及其轉(zhuǎn)換(一)五種基本狀態(tài)圖2.6進(jìn)2.2.3
七狀態(tài)模型及其轉(zhuǎn)換(略)(二)七種基本狀態(tài)(三)七種基本狀態(tài)的轉(zhuǎn)換圖2.7進(jìn)程的七種基本狀態(tài)就緒內(nèi)存執(zhí)行進(jìn)程調(diào)度時(shí)間片到完成I/O請(qǐng)求或等待事件I/O完成或事件發(fā)生新接收衰亡阻塞就緒掛起I/O完成或事件發(fā)生阻塞掛起掛起掛起激活激活掛起外存2.2.3 七狀態(tài)模型及其轉(zhuǎn)換(略)(二)七種基本狀態(tài)圖2.2.3
進(jìn)程組織2.3.1 進(jìn)程控制塊2.3.2 進(jìn)程的組織方式2.3 進(jìn)程組織2.3.1
進(jìn)程控制塊(一)進(jìn)程控制塊概念進(jìn)程作為內(nèi)存中的一種實(shí)體,在對(duì)其進(jìn)行各種管理時(shí),首先需要為之設(shè)置一個(gè)專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu),然后操作系統(tǒng)才能利用這一數(shù)據(jù)結(jié)構(gòu)來(lái)控制與管理進(jìn)程,這是數(shù)據(jù)結(jié)構(gòu)規(guī)范的要求。進(jìn)程控制塊(PCB:ProcessControllingBlock)就是操作系統(tǒng)為進(jìn)程設(shè)置的專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu),用它來(lái)描述進(jìn)程的特征以及控制進(jìn)程運(yùn)行需要的全部信息。系統(tǒng)在控制和管理進(jìn)程時(shí),都是基于PCB進(jìn)行的??梢哉f(shuō),進(jìn)程在內(nèi)存的一切活動(dòng)都基于PCB進(jìn)行;所以,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。進(jìn)程與PCB是一一對(duì)應(yīng)的。即一個(gè)進(jìn)程被創(chuàng)建,就有與之對(duì)應(yīng)的PCB;一直到該進(jìn)程消亡,相應(yīng)的PCB也被收回。PCB應(yīng)常駐內(nèi)存,因?yàn)樗沁M(jìn)程的數(shù)據(jù)結(jié)構(gòu)描述,同時(shí)也因?yàn)樗辉L(fǎng)問(wèn)的頻率很高(例如被運(yùn)行頻率很高的進(jìn)程調(diào)度程序所訪(fǎng)問(wèn))。2.3.1 進(jìn)程控制塊(一)進(jìn)程控制塊概念2.3.1
進(jìn)程控制塊(二)進(jìn)程控制塊的內(nèi)容進(jìn)程描述信息:進(jìn)程標(biāo)識(shí)符(ProcessID)即內(nèi)部標(biāo)識(shí)符、進(jìn)程名即外部標(biāo)識(shí)符、用戶(hù)標(biāo)識(shí)符進(jìn)程調(diào)度信息:當(dāng)前狀態(tài)、優(yōu)先級(jí)、運(yùn)行統(tǒng)計(jì)信息、阻塞原因進(jìn)程控制信息:數(shù)據(jù)段與程序段地址、同步與通信、鏈接指針、資源進(jìn)程狀態(tài)信息:寄存器、棧指針2.3.1 進(jìn)程控制塊(二)進(jìn)程控制塊的內(nèi)容2.3.2
進(jìn)程的組織方式(一)PCB的邏輯組織遵循數(shù)據(jù)結(jié)構(gòu)的規(guī)范,進(jìn)程作為內(nèi)存中的一種實(shí)體,對(duì)其組織實(shí)際上就是針對(duì)進(jìn)程的數(shù)據(jù)結(jié)構(gòu)—PCB進(jìn)行的。在邏輯上,系統(tǒng)可以將所有進(jìn)程的PCB組織在一起,并把它們放在內(nèi)存的固定區(qū)域,就構(gòu)成了PCB表。PCB表的大小決定了系統(tǒng)中最多可同時(shí)存在的進(jìn)程個(gè)數(shù),稱(chēng)為系統(tǒng)的并發(fā)度。進(jìn)一步,對(duì)PCB表中的進(jìn)程,可以根據(jù)進(jìn)程的狀態(tài),將具有相同狀態(tài)的進(jìn)程組織在一起,形成相應(yīng)的進(jìn)程隊(duì)列。
2.3.2 進(jìn)程的組織方式(一)PCB的邏輯組織2.3.2
進(jìn)程的組織方式完成阻塞原因n阻塞原因2阻塞原因1時(shí)間片到進(jìn)程就緒隊(duì)列進(jìn)程阻塞隊(duì)列1進(jìn)程阻塞隊(duì)列2進(jìn)程阻塞隊(duì)列n占有處理機(jī)執(zhí)行
圖2.10進(jìn)程多隊(duì)列組織2.3.2 進(jìn)程的組織方式完成阻塞原因n阻塞原因2阻塞原因12.3.2
進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織(1)鏈接方式執(zhí)行進(jìn)程指針就緒鏈表頭指針阻塞鏈表頭指針空閑鏈表頭指針PCB14PCB23PCB30PCB48PCB50PCB67PCB79PCB80PCB912
圖2.11PCB鏈接組織方式示意圖PCB表2.3.2 進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織執(zhí)行進(jìn)程指針2.3.2
進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織(1)索引方式PCB表空閑索引表阻塞索引表就緒索引表執(zhí)行進(jìn)程指針就緒索引表指針阻塞索引表指針空閑索引表指針PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9
圖2.12PCB索引組織方式示意圖
2.3.2 進(jìn)程的組織方式(二)PCB的存儲(chǔ)組織PCB表空閑2.4
進(jìn)程通信2.4 進(jìn)程通信2.4.1 進(jìn)程通信概述(一)進(jìn)程通信方式(1)直接通信方式這種方式要求發(fā)送進(jìn)程和接收進(jìn)程都顯式地提供給對(duì)方自己的地址或標(biāo)識(shí)符;然后,發(fā)送進(jìn)程利用操作系統(tǒng)提供的發(fā)送指令,直接把信息傳遞給接收進(jìn)程。在發(fā)送時(shí),指定接收方的地址或標(biāo)識(shí),也可以指定多個(gè)接收方或廣播式地址;在接收時(shí),允許接收來(lái)自任意發(fā)送方的信息,并同時(shí)獲取發(fā)送方的地址。(2)間接通信方式這種方式要求借助于收發(fā)雙方進(jìn)程之外的某種中間實(shí)體作為通信中轉(zhuǎn)。這種中間實(shí)體是某種可共享的數(shù)據(jù)結(jié)構(gòu),用來(lái)暫存發(fā)送進(jìn)程傳遞給接收進(jìn)程的信息。2.4.1 進(jìn)程通信概述(一)進(jìn)程通信方式2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(1)共享存儲(chǔ)系統(tǒng)(SharedMemorySystem)在共享存儲(chǔ)系統(tǒng)中,為了傳送大量數(shù)據(jù),首先在內(nèi)存中劃出一塊共享存儲(chǔ)區(qū);然后,需要通信的進(jìn)程可通過(guò)對(duì)此共享存儲(chǔ)區(qū)進(jìn)行讀或?qū)憯?shù)據(jù)來(lái)實(shí)現(xiàn)通信。即:一組進(jìn)程向該共享內(nèi)存中寫(xiě),另一組進(jìn)程從共享內(nèi)存中讀,通過(guò)這種方式實(shí)現(xiàn)兩組進(jìn)程間的信息交換。采用共享存儲(chǔ)系統(tǒng)的進(jìn)程通信過(guò)程大致為:STEP1:申請(qǐng)共享存儲(chǔ)區(qū)。進(jìn)程在通信之前,向系統(tǒng)申請(qǐng)共享存儲(chǔ)區(qū)中的一個(gè)分區(qū),并為它指定一個(gè)分區(qū)關(guān)鍵字。若該分區(qū)已被系統(tǒng)分配給了其它進(jìn)程,系統(tǒng)將該分區(qū)的關(guān)鍵字返回給申請(qǐng)者,然后繼續(xù)申請(qǐng)直至成功;STEP2:合并分配的存儲(chǔ)分區(qū)。申請(qǐng)者把獲得的共享存儲(chǔ)區(qū)的該分區(qū)鏈接到本進(jìn)程上。STEP3:讀寫(xiě)公用存儲(chǔ)分區(qū)。進(jìn)程可像讀、寫(xiě)普通存儲(chǔ)器一樣,讀、寫(xiě)這一共享的存儲(chǔ)分區(qū),完成進(jìn)程信息的傳遞。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(2)消息傳遞系統(tǒng)(MessagePassingSystem)消息傳遞系統(tǒng)首先對(duì)待傳遞的信息規(guī)定了一定的格式,按照這一格式組織的信息稱(chēng)為“消息”(Message),進(jìn)程間的數(shù)據(jù)交換就以消息為單位。然后,消息傳遞系統(tǒng)提供了一組支持指令來(lái)實(shí)現(xiàn)進(jìn)程通信,使進(jìn)程通信無(wú)需用戶(hù)考慮通信的管理細(xì)節(jié)。因而,消息傳遞系統(tǒng)是目前單機(jī)系統(tǒng)、多機(jī)系統(tǒng)包括計(jì)算機(jī)網(wǎng)絡(luò)中最主要的一種進(jìn)程高級(jí)通信方式。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型(3)管道通信系統(tǒng)(PipeSystem)管道通信方式首先出現(xiàn)于Unix系統(tǒng)。管道(Pipe)是指用于連接一個(gè)發(fā)送進(jìn)程和一個(gè)接收進(jìn)程,以實(shí)現(xiàn)它們間通信的共享文件,又稱(chēng)pipe文件。在這種進(jìn)程通信方式中,發(fā)送進(jìn)程向管道寫(xiě)入待傳遞的信息,而接收進(jìn)程從此管道中讀出信息。管道通信屬于進(jìn)程的直接通信方式。為了協(xié)調(diào)發(fā)送和接收雙方的通信,管道通信機(jī)制必須提供以下三方面的協(xié)調(diào)功能:1) 互斥。當(dāng)一個(gè)進(jìn)程正在對(duì)pipe文件進(jìn)行讀或?qū)懖僮鲿r(shí),另一個(gè)進(jìn)程必須等待。2) 同步。當(dāng)發(fā)送進(jìn)程把一定數(shù)量的數(shù)據(jù)寫(xiě)入pipe文件后,該進(jìn)程便等待(阻塞);直到接收進(jìn)程取走數(shù)據(jù)后,再把它喚醒。同樣,當(dāng)接收進(jìn)程從pipe文件中取走數(shù)據(jù)后,該進(jìn)程也將等待(阻塞);直到發(fā)送進(jìn)程又向pipe文件寫(xiě)入數(shù)據(jù)后,才把它喚醒。3) 確認(rèn)對(duì)方是否存在。只有確認(rèn)對(duì)方已存在時(shí),才能進(jìn)行管道通信;否則,會(huì)造成因?qū)Ψ讲淮嬖诙鵁o(wú)限制地等待。2.4.1 進(jìn)程通信概述(二)進(jìn)程通信類(lèi)型2.5
線(xiàn)程基礎(chǔ)2.5.1 線(xiàn)程引入2.5.2 線(xiàn)程定義與特征2.5.2 線(xiàn)程實(shí)現(xiàn)2.5 線(xiàn)程基礎(chǔ)2.5.1 線(xiàn)程引入線(xiàn)程的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西京學(xué)院《室內(nèi)陳設(shè)設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 音樂(lè)萬(wàn)馬奔騰課件
- 西京學(xué)院《版面設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《小學(xué)語(yǔ)文課程與教學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《水污染防治技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《攝影與攝像技藝》2021-2022學(xué)年第一學(xué)期期末試卷
- 9正確認(rèn)識(shí)廣告 說(shuō)課稿-2024-2025學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 電工高級(jí)工專(zhuān)項(xiàng)測(cè)試題及答案
- 第十二章第二節(jié)《滑輪》說(shuō)課稿 -2023-2024學(xué)年人教版八年級(jí)物理下冊(cè)
- 2024年代森錳鋅行業(yè)前景分析:代森錳鋅行業(yè)發(fā)展趨勢(shì)推動(dòng)行業(yè)國(guó)際化
- 期末復(fù)習(xí)重要考點(diǎn)03 《一元一次方程》十大考點(diǎn)題型(熱點(diǎn)題型+限時(shí)測(cè)評(píng))(原卷版)
- 生物丨金太陽(yáng)(25-69C)廣東省2025屆高三10月大聯(lián)考生物試卷及答案
- 期中測(cè)試卷(試題)2024-2025學(xué)年人教版數(shù)學(xué)三年級(jí)上冊(cè)
- 車(chē)隊(duì)車(chē)輛掛靠合同模板
- 冷庫(kù)保潔服務(wù)方案
- 中國(guó)戲曲 昆曲學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 期中 (試題) -2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 動(dòng)物疫病防治員(高級(jí))理論考試題及答案
- 跨境電商行業(yè)研究框架專(zhuān)題報(bào)告
- 2024-2030年中國(guó)移動(dòng)云行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 提升初中生英語(yǔ)寫(xiě)作
評(píng)論
0/150
提交評(píng)論