




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章第二章 進(jìn)程的描述與控制進(jìn)程的描述與控制2.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行2.2 進(jìn)程的描述進(jìn)程的描述2.3 進(jìn)程的控制進(jìn)程的控制2.4 線程的基本概念線程的基本概念2.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行一、前趨圖的定義一、前趨圖的定義 有向無循環(huán)圖DAG,包括: 結(jié)點(diǎn):可表示一個(gè)語句、程序段或進(jìn)程; 包括 初始結(jié)點(diǎn):無前趨 終止結(jié)點(diǎn):無后繼 有向邊:兩結(jié)點(diǎn)間的前趨關(guān)系; pipj:pi必須在必須在pj開始執(zhí)行之前完成開始執(zhí)行之前完成 pi為為pj的直接前趨,的直接前趨, pj為為pi的直接后繼。的直接后繼。注:前趨圖中必須不存在循環(huán)!注:前趨圖中必須不存在循環(huán)! 正確例子:正確
2、例子:P=p1,p2,p3,p4,p5=(p1,p2),(p1,p3),(p2,p4),(p3,p5),(p4,p5)錯(cuò)誤例子:錯(cuò)誤例子:s2s3, s3s2p1p2p3p4p5s1s2s32.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行二、程序順序執(zhí)行二、程序順序執(zhí)行 一個(gè)程序由若干程序段組成,這些程序段的執(zhí)行必須是順序的;同時(shí)程序與程序之間也必須順序執(zhí)行。例:例:特征:特征: 1. 順序性: 2. 封閉性:程序的執(zhí)行結(jié)果不受外界因素的干擾。 3. 可再現(xiàn)性:只要程序執(zhí)行時(shí)的環(huán)境和初始條件相同,其執(zhí)行結(jié)果 必然相同。 C1P1I1I2C2P2I為輸入操作;為輸入操作;C為計(jì)算操作;為計(jì)算操作;P為打
3、印操作。為打印操作。 程序程序1 程序程序2 2.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行三、程序并發(fā)執(zhí)行三、程序并發(fā)執(zhí)行 多個(gè)程序同時(shí)在系統(tǒng)中運(yùn)行,這些程序的執(zhí)行在時(shí)間上是重疊的,即前一程序的執(zhí)行尚未結(jié)束,后一程序的執(zhí)行已經(jīng)開始。例:例: 程序與程序之間、程序段與程序段之間均可并發(fā)執(zhí)行。C1P1I1I2C2P2程序段之間順序執(zhí)行;程序段之間順序執(zhí)行;程序之間并發(fā)執(zhí)行。程序之間并發(fā)執(zhí)行。2.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行特征:特征: 1. 間斷性:程序執(zhí)行有“執(zhí)行-暫停-執(zhí)行”的活動(dòng)規(guī)律。 2. 失去封閉性:某程序執(zhí)行時(shí),必然受到參與并發(fā)執(zhí)行的其它程序 的影響。 3. 不可再現(xiàn)性 :計(jì)算結(jié)果
4、與并發(fā)程序執(zhí)行速度有關(guān)。即同一程序, 使用相同輸入、在相同環(huán)境下運(yùn)行,卻可能獲得完 全不同的結(jié)果。 2.1 前趨圖和程序執(zhí)行前趨圖和程序執(zhí)行不可再現(xiàn)性的例子:不可再現(xiàn)性的例子:兩個(gè)并發(fā)執(zhí)行的程序A和B,如下所示: A:N:=N+1; B:print(N); N:=0;分析:1)并發(fā):A、B交替占用CPU執(zhí)行;2)異步性 打印結(jié)果:打印結(jié)果: 9 8 89 8 8N N的值:的值: 0 1 00 1 0導(dǎo)致:導(dǎo)致: CPU交替執(zhí)行交替執(zhí)行A、B的語句時(shí)順序可能不同的語句時(shí)順序可能不同!1) N:=N+1; print(N); N:=0;2) print(N); N:=0; N:=N+1; 3)
5、print(N); N:=N+1; N:=0; 設(shè)某次循環(huán)前,N的值為8CPU執(zhí)行順序2.2 進(jìn)程的描述進(jìn)程的描述多道程序環(huán)境下,必須引入進(jìn)程的例子:多道程序環(huán)境下,必須引入進(jìn)程的例子: 編譯程序C編譯源程序1,執(zhí)行到a時(shí)因某種原因無法繼續(xù),致使CPU空閑,此時(shí)轉(zhuǎn)去編譯源程序2,執(zhí)行到b。 begin - b:- - a:- - end編譯程序編譯程序C源程序源程序1 1數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼1目標(biāo)代碼目標(biāo)代碼1 源程序源程序2 2數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼2目標(biāo)代碼目標(biāo)代碼22.2 進(jìn)程的描述進(jìn)程的描述問題問題1 1:誰占用誰占用CPU執(zhí)行?源程序執(zhí)行?源程序1和和2以什么身份出現(xiàn)以
6、什么身份出現(xiàn)?問題問題2 2:程序計(jì)數(shù)器程序計(jì)數(shù)器PC中記錄的是中記錄的是a 還是還是 b?答案答案1 1:占用占用CPU執(zhí)行的是編譯程序執(zhí)行的是編譯程序C 。 源程序源程序1和和2是編譯程序是編譯程序C的數(shù)據(jù)對(duì)象。的數(shù)據(jù)對(duì)象。答案答案2 2:說不清:說不清程序計(jì)數(shù)器程序計(jì)數(shù)器PC中記錄的是中記錄的是a 還是還是 b。引入進(jìn)程后:引入進(jìn)程后:答案答案1:占用:占用CPU執(zhí)行的是分別是進(jìn)程執(zhí)行的是分別是進(jìn)程1和進(jìn)程和進(jìn)程2。 源程序源程序1和和2分別是進(jìn)程分別是進(jìn)程1和進(jìn)程和進(jìn)程2的數(shù)據(jù)對(duì)象。的數(shù)據(jù)對(duì)象。答案答案2:進(jìn)程:進(jìn)程1占用占用CPU執(zhí)行時(shí),執(zhí)行時(shí),PC中記錄的是中記錄的是a; 進(jìn)程進(jìn)程
7、2占用占用CPU執(zhí)行時(shí),執(zhí)行時(shí),PC中記錄的是中記錄的是 b。2.2 進(jìn)程的描述進(jìn)程的描述 引入進(jìn)程:引入進(jìn)程: 進(jìn)程進(jìn)程2 2 進(jìn)程進(jìn)程1 1 begin - b:- - a:- - end編譯程序編譯程序C源程序源程序1 1數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼1目標(biāo)代碼目標(biāo)代碼1 源程序源程序2 2數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼2目標(biāo)代碼目標(biāo)代碼22.2 進(jìn)程的描述進(jìn)程的描述一、進(jìn)程的定義與特征一、進(jìn)程的定義與特征定義:定義: 進(jìn)程:可并發(fā)執(zhí)行的程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過程。一個(gè)進(jìn)程的物理實(shí)體包括:一個(gè)進(jìn)程的物理實(shí)體包括: 程序部分 數(shù)據(jù)部分 進(jìn)程控制塊PCB特征:特征:1. 動(dòng)態(tài)性 4. 異步性
8、2. 并發(fā)性 5. 結(jié)構(gòu)特征3. 獨(dú)立性2.2 進(jìn)程的描述進(jìn)程的描述程序與進(jìn)程的對(duì)應(yīng)關(guān)系程序與進(jìn)程的對(duì)應(yīng)關(guān)系1 1:一個(gè)程序?qū)?yīng)兩個(gè)進(jìn)程:一個(gè)程序?qū)?yīng)兩個(gè)進(jìn)程 進(jìn)程進(jìn)程2 2 進(jìn)程進(jìn)程1 1 begin - b:- - a:- - end編譯程序編譯程序C源程序源程序1 1數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼1目標(biāo)代碼目標(biāo)代碼1 源程序源程序2 2數(shù)據(jù)部分?jǐn)?shù)據(jù)部分源代碼源代碼2目標(biāo)代碼目標(biāo)代碼22.2 進(jìn)程的描述進(jìn)程的描述程序與進(jìn)程的對(duì)應(yīng)關(guān)系程序與進(jìn)程的對(duì)應(yīng)關(guān)系2 2:一個(gè)進(jìn)程對(duì)應(yīng)多個(gè)程序:一個(gè)進(jìn)程對(duì)應(yīng)多個(gè)程序Main( )-open( )-Open( )-return系統(tǒng)調(diào)用系統(tǒng)調(diào)用進(jìn)程進(jìn)程1 1(
9、用戶態(tài))(用戶態(tài)) 用用戶戶棧棧進(jìn)程進(jìn)程1 1(核心態(tài))(核心態(tài))核核心心棧棧2.2 進(jìn)程的描述進(jìn)程的描述二、進(jìn)程的狀態(tài)二、進(jìn)程的狀態(tài)基本狀態(tài):基本狀態(tài):1.就緒就緒狀態(tài)(ready):進(jìn)程等待分配CPU。 系統(tǒng)中同時(shí)處于就緒狀態(tài)的進(jìn)程會(huì)排成就緒隊(duì)列。 2.執(zhí)行執(zhí)行狀態(tài)(running):進(jìn)程正占用CPU執(zhí)行其程序中的指令。 在單處理機(jī)系統(tǒng)中,任何時(shí)刻至多只有一個(gè)進(jìn)程處于執(zhí)行狀態(tài)。3.阻塞阻塞狀態(tài)(blocked):進(jìn)程在等待某個(gè)事件的發(fā)生,故也 稱為等待狀態(tài)(waiting)。 處于阻塞狀態(tài)的進(jìn)程會(huì)按等待原因進(jìn)入不同的阻塞隊(duì)列。4.新新狀態(tài)(new):進(jìn)程正被創(chuàng)建。5.終止終止?fàn)顟B(tài)(term
10、inated):進(jìn)程已經(jīng)結(jié)束執(zhí)行。2.2 進(jìn)程的描述進(jìn)程的描述基本狀態(tài)間的轉(zhuǎn)換:基本狀態(tài)間的轉(zhuǎn)換: 進(jìn)程的狀態(tài)是在不斷變換的。 執(zhí) 行 狀執(zhí) 行 狀態(tài)態(tài)就 緒 狀就 緒 狀態(tài)態(tài)阻 塞 狀阻 塞 狀態(tài)態(tài)新狀態(tài)新狀態(tài)終 止 狀終 止 狀態(tài)態(tài)接收接收進(jìn)程調(diào)度進(jìn)程調(diào)度退出退出中斷中斷等待等待I/O或事件或事件I/O或事件發(fā)生或事件發(fā)生2.2 進(jìn)程的描述進(jìn)程的描述三、進(jìn)程控制塊三、進(jìn)程控制塊PCB(Process Control Block)關(guān)于關(guān)于PCB:定義:定義:存放進(jìn)程的管理和控 制信息的數(shù)據(jù)結(jié)構(gòu),是OS 感知進(jìn)程存在的唯一標(biāo)志。 創(chuàng)建進(jìn)程時(shí),為其建立PCB,并伴隨進(jìn)程運(yùn)行的全過程,直到進(jìn)程撤消
11、而回收。 不同OS,PCB大小不同,包含信息不同。PCB中的信息中的信息進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符進(jìn)程狀態(tài)進(jìn)程狀態(tài)進(jìn)程優(yōu)先級(jí)進(jìn)程優(yōu)先級(jí)進(jìn)程隊(duì)列指針進(jìn)程隊(duì)列指針執(zhí)行程序和數(shù)據(jù)的內(nèi)存開始地址執(zhí)行程序和數(shù)據(jù)的內(nèi)存開始地址程序計(jì)數(shù)器程序計(jì)數(shù)器CPU寄存器寄存器CPU現(xiàn)場(chǎng)保護(hù)區(qū)現(xiàn)場(chǎng)保護(hù)區(qū)進(jìn)程通信進(jìn)程通信家族聯(lián)系家族聯(lián)系占有資源清單占有資源清單棧指針棧指針I(yè)/O狀態(tài)信息狀態(tài)信息打開文件表打開文件表2.2 進(jìn)程的描述進(jìn)程的描述三、進(jìn)程控制塊三、進(jìn)程控制塊PCB(Process Control Block)說明:說明: PCB只能由OS訪問,不允許用戶進(jìn)程訪問。 一個(gè)系統(tǒng)中的PCB數(shù)目是一定的,它規(guī)定了該系統(tǒng) 可同
12、時(shí)擁有的最大進(jìn)程數(shù)目。 每個(gè)PCB是系統(tǒng)PCB表中的一個(gè)表目。 PCB表常駐內(nèi)存,存放于OS中專門開辟的PCB區(qū)。2.3 進(jìn)程控制進(jìn)程控制進(jìn)程是動(dòng)態(tài)的,有它的開始和結(jié)束。在它的生命周期中,在進(jìn)程是動(dòng)態(tài)的,有它的開始和結(jié)束。在它的生命周期中,在 幾種不同的狀態(tài)之間轉(zhuǎn)換。幾種不同的狀態(tài)之間轉(zhuǎn)換。OS提供一些程序段實(shí)現(xiàn)這些轉(zhuǎn)換。這些程序段必須用機(jī)器提供一些程序段實(shí)現(xiàn)這些轉(zhuǎn)換。這些程序段必須用機(jī)器 語言書寫,且在執(zhí)行中不可被中斷。語言書寫,且在執(zhí)行中不可被中斷。原語(原語(Primitive):指用機(jī)器語言書寫的、在執(zhí)行中不可被):指用機(jī)器語言書寫的、在執(zhí)行中不可被 中斷的程序段。中斷的程序段。原語屬
13、于原語屬于OS內(nèi)核(內(nèi)核(Kernal)。)。完成進(jìn)程控制的原語有:創(chuàng)建完成進(jìn)程控制的原語有:創(chuàng)建(Create)、終止、終止(Termination)、 阻塞阻塞(Blocked)、喚醒、喚醒(Wakeup)等。等。2.3 進(jìn)程控制進(jìn)程控制一、進(jìn)程的創(chuàng)建(一、進(jìn)程的創(chuàng)建(Creation)導(dǎo)致創(chuàng)建新進(jìn)程的事件:導(dǎo)致創(chuàng)建新進(jìn)程的事件:1.批處理系統(tǒng)中,接收了一個(gè)新作業(yè)。批處理系統(tǒng)中,接收了一個(gè)新作業(yè)。2.分時(shí)系統(tǒng)中,用戶登錄。分時(shí)系統(tǒng)中,用戶登錄。3.運(yùn)行中的用戶程序提出某種服務(wù)請(qǐng)求。運(yùn)行中的用戶程序提出某種服務(wù)請(qǐng)求。4.基于應(yīng)用進(jìn)程自身的需要?;趹?yīng)用進(jìn)程自身的需要。 OSOS作為創(chuàng)建者作為
14、創(chuàng)建者說明:說明:1)一個(gè)應(yīng)用進(jìn)程在其執(zhí)行期間,通過執(zhí)行創(chuàng)建進(jìn)程系統(tǒng)調(diào))一個(gè)應(yīng)用進(jìn)程在其執(zhí)行期間,通過執(zhí)行創(chuàng)建進(jìn)程系統(tǒng)調(diào) 用命令(例如用命令(例如fork),可以創(chuàng)建幾個(gè)新進(jìn)程。),可以創(chuàng)建幾個(gè)新進(jìn)程。2)而最終進(jìn)程的創(chuàng)建,是由進(jìn)程創(chuàng)建原語)而最終進(jìn)程的創(chuàng)建,是由進(jìn)程創(chuàng)建原語create( )實(shí)現(xiàn)的。實(shí)現(xiàn)的。應(yīng)用進(jìn)程作為創(chuàng)建者應(yīng)用進(jìn)程作為創(chuàng)建者2.3 進(jìn)程控制進(jìn)程控制一、進(jìn)程的創(chuàng)建(一、進(jìn)程的創(chuàng)建(Creation)3)創(chuàng)建者是父進(jìn)程,被創(chuàng)建的新進(jìn)程是子進(jìn)程。子進(jìn)程可以)創(chuàng)建者是父進(jìn)程,被創(chuàng)建的新進(jìn)程是子進(jìn)程。子進(jìn)程可以 創(chuàng)建子子進(jìn)程,如此輪流下去,構(gòu)成一棵進(jìn)程家族樹。創(chuàng)建子子進(jìn)程,如此輪流下
15、去,構(gòu)成一棵進(jìn)程家族樹。4)父、子進(jìn)程的執(zhí)行有兩種可能性:)父、子進(jìn)程的執(zhí)行有兩種可能性: - 父進(jìn)程和子進(jìn)程并發(fā)執(zhí)行;父進(jìn)程和子進(jìn)程并發(fā)執(zhí)行; - 父進(jìn)程等待,直到子進(jìn)程結(jié)束。父進(jìn)程等待,直到子進(jìn)程結(jié)束。2.3 進(jìn)程控制進(jìn)程控制Create()工作流程:()工作流程:入口入口填寫填寫PCBPCB的相關(guān)項(xiàng)的相關(guān)項(xiàng)將將PCBPCB鏈入就緒隊(duì)列鏈入就緒隊(duì)列返回返回出錯(cuò)出錯(cuò)申請(qǐng)內(nèi)存空間申請(qǐng)內(nèi)存空間裝入程序和數(shù)據(jù)裝入程序和數(shù)據(jù)申請(qǐng)空白申請(qǐng)空白PCBPCB分配其它資源分配其它資源申請(qǐng)到申請(qǐng)到申請(qǐng)到申請(qǐng)到申請(qǐng)不到申請(qǐng)不到申請(qǐng)不到申請(qǐng)不到2.3 進(jìn)程控制進(jìn)程控制二、進(jìn)程的終止(二、進(jìn)程的終止( Termin
16、ation )當(dāng)最后一條語句運(yùn)行結(jié)束時(shí),一個(gè)進(jìn)程終止。此時(shí)它使當(dāng)最后一條語句運(yùn)行結(jié)束時(shí),一個(gè)進(jìn)程終止。此時(shí)它使 用相應(yīng)的系統(tǒng)調(diào)用命令(如用相應(yīng)的系統(tǒng)調(diào)用命令(如exit)請(qǐng)求)請(qǐng)求OS將其撤消。將其撤消。在許多系統(tǒng)中,若一個(gè)進(jìn)程終止,則其子孫進(jìn)程也必須在許多系統(tǒng)中,若一個(gè)進(jìn)程終止,則其子孫進(jìn)程也必須 同時(shí)被終止同時(shí)被終止。終止原語的主要操作包括:終止原語的主要操作包括: 1)按照被終止進(jìn)程的標(biāo)識(shí)符找到其)按照被終止進(jìn)程的標(biāo)識(shí)符找到其PCB; 2)將其運(yùn)行的結(jié)果信息返給其父進(jìn)程;)將其運(yùn)行的結(jié)果信息返給其父進(jìn)程; 3)將其所占資源或歸還系統(tǒng),或還給其父進(jìn)程;)將其所占資源或歸還系統(tǒng),或還給其父進(jìn)
17、程; 4)將其)將其PCB置為空;置為空; 5)若被終止進(jìn)程處于執(zhí)行狀態(tài),則引發(fā)進(jìn)程調(diào)度;)若被終止進(jìn)程處于執(zhí)行狀態(tài),則引發(fā)進(jìn)程調(diào)度; 6)若被終止進(jìn)程有子孫進(jìn)程,則將其子孫進(jìn)程同時(shí)終止。)若被終止進(jìn)程有子孫進(jìn)程,則將其子孫進(jìn)程同時(shí)終止。2.3 進(jìn)程控制進(jìn)程控制三、進(jìn)程的阻塞(三、進(jìn)程的阻塞(blocked)和喚醒()和喚醒(wakeup)執(zhí)行狀態(tài)進(jìn)程遇到下列典型事件時(shí),調(diào)用執(zhí)行狀態(tài)進(jìn)程遇到下列典型事件時(shí),調(diào)用blocked()原語()原語 將自己阻塞:將自己阻塞: 1.沒有申請(qǐng)到資源;沒有申請(qǐng)到資源; 2.啟動(dòng)了啟動(dòng)了I/O操作;操作; 3.運(yùn)行所需數(shù)據(jù)尚未到達(dá)。運(yùn)行所需數(shù)據(jù)尚未到達(dá)。當(dāng)阻塞
18、進(jìn)程所等待的事件發(fā)生時(shí),就會(huì)被喚醒。當(dāng)阻塞進(jìn)程所等待的事件發(fā)生時(shí),就會(huì)被喚醒。阻塞過程:阻塞過程: 1)進(jìn)程狀態(tài)置為阻塞狀態(tài),并移入相應(yīng)的阻塞隊(duì)列;)進(jìn)程狀態(tài)置為阻塞狀態(tài),并移入相應(yīng)的阻塞隊(duì)列; 2)引發(fā)進(jìn)程調(diào)度。)引發(fā)進(jìn)程調(diào)度。喚醒過程:?jiǎn)拘堰^程: 進(jìn)程狀態(tài)置為就緒狀態(tài),并移入就緒隊(duì)列。進(jìn)程狀態(tài)置為就緒狀態(tài),并移入就緒隊(duì)列。總結(jié):總結(jié): 進(jìn)程控制原語與進(jìn)程狀態(tài)轉(zhuǎn)換的對(duì)應(yīng):進(jìn)程控制原語與進(jìn)程狀態(tài)轉(zhuǎn)換的對(duì)應(yīng): 執(zhí) 行 狀執(zhí) 行 狀態(tài)態(tài)就 緒 狀就 緒 狀態(tài)態(tài)阻 塞 狀阻 塞 狀態(tài)態(tài)新狀態(tài)新狀態(tài)終 止 狀終 止 狀態(tài)態(tài)create進(jìn)程調(diào)度進(jìn)程調(diào)度termination 中斷中斷blockedwak
19、eup2.3 進(jìn)程控制進(jìn)程控制2.3 進(jìn)程控制進(jìn)程控制UNIX系統(tǒng)實(shí)例:系統(tǒng)實(shí)例:1-進(jìn)程家族樹進(jìn)程家族樹initloginshellloginloginshell終端終端2 2cp終端終端1 1終端終端0 01.1.系統(tǒng)初啟后,由系統(tǒng)核心程序建立init進(jìn)程。init進(jìn)程讀取文件/etc/ttys,該文件告訴系統(tǒng)共有幾個(gè)終端并提供每個(gè)終端的說明。init進(jìn)程將為每個(gè)終端生成一個(gè)子進(jìn)程,然后將自己掛起直到有子進(jìn)程結(jié)束。2.每個(gè)子進(jìn)程等待用戶登記(login)使用系統(tǒng),接著執(zhí)行shell命令解釋程序。3.上圖系統(tǒng)中有三個(gè)終端。運(yùn)行在終端0上的子進(jìn)程仍在等待用戶登錄;在終端1上的子進(jìn)程已成功登錄了
20、用戶,正運(yùn)行shell等待命令輸入;在終端2上的子進(jìn)程也成功登錄了用戶,該用戶正運(yùn)行cp程序,cp是shell的子進(jìn)程,shell 則等待該進(jìn)程結(jié)束。cp結(jié)束后,shell再接收輸入,創(chuàng)建新進(jìn)程執(zhí)行新輸入命令。2.3 進(jìn)程控制進(jìn)程控制UNIX系統(tǒng)實(shí)例:系統(tǒng)實(shí)例:2-相關(guān)系統(tǒng)調(diào)用相關(guān)系統(tǒng)調(diào)用1. fork系統(tǒng)調(diào)用: 功能:建立子進(jìn)程 返回值:fork對(duì)子進(jìn)程返回0,對(duì)父進(jìn)程返回子進(jìn)程的標(biāo)識(shí)符。 具體描述:子進(jìn)程是父進(jìn)程的一個(gè)副本,這就允許父進(jìn)程可以很容易地 與子進(jìn)程通信。父子進(jìn)程都從fork后的那條指令繼續(xù)執(zhí)行。2. exec系統(tǒng)調(diào)用: 輸入?yún)?shù):新程序名, 功能:以指定程序覆蓋當(dāng)前進(jìn)程的程序代
21、碼。3. wait系統(tǒng)調(diào)用: 輸入?yún)?shù):進(jìn)程號(hào) 功能:等待指定進(jìn)程結(jié)束。2.3 進(jìn)程控制進(jìn)程控制UNIX系統(tǒng)實(shí)例:系統(tǒng)實(shí)例:3-shell的內(nèi)部部分代碼的內(nèi)部部分代碼 顯示命令提示符 等待用戶輸入命令行 對(duì)命令行分析和解釋,得到要運(yùn)行的程序(例如cp)及其運(yùn)行參數(shù) if (pid=fork( )0 ) /*父進(jìn)程代碼,典型地如:*/ wait ( pid ); /*等待該子進(jìn)程結(jié)束*/ 顯示下一個(gè)命令提示符 else /*子進(jìn)程代碼,典型地如:*/ exec(cp, ); 2.4 線程的基本概念線程的基本概念一、線程的引入一、線程的引入引入進(jìn)程:使多個(gè)程序并發(fā)運(yùn)行。進(jìn)程:1.擁有資源的獨(dú)立單位
22、; 2.獨(dú)立調(diào)度和分派的基本單位。 進(jìn)程是可獨(dú)立運(yùn)行的基本單位,這正是并發(fā)的基礎(chǔ)。 但也由于1和2,使系統(tǒng)在創(chuàng)建、撤消進(jìn)程及進(jìn)行進(jìn)程切換 時(shí)須付出較大的時(shí)空開銷。 系統(tǒng)會(huì)限制參與并發(fā)運(yùn)行的進(jìn)程數(shù)目及切換頻率。 限制了更高程度上的并發(fā)。2.4 線程的基本概念線程的基本概念一、線程的引入一、線程的引入引入線程:減少程序并發(fā)執(zhí)行時(shí)的時(shí)空開銷,使并發(fā)性更好。將進(jìn)程的兩個(gè)屬性分開。 進(jìn)程:擁有資源的獨(dú)立單位; 線程:進(jìn)程中的一個(gè)實(shí)體,是獨(dú)立調(diào)度和分派的基本單位。 -輕型進(jìn)程線程包含一個(gè)線程ID、一個(gè)程序計(jì)數(shù)器、一組寄存器和棧; 它可與其它線程共享所屬進(jìn)程的全部資源。 2.4 線程的基本概念線程的基本概念
23、一、線程的引入一、線程的引入傳統(tǒng)操作系統(tǒng)中使用的是單線程(單線程(single-threaded)方法,即每個(gè) 進(jìn)程中只包含一個(gè)線程,因而線程的概念不被認(rèn)識(shí)。例, MS-DOS:每次只允許一個(gè)進(jìn)程運(yùn)行,該進(jìn)程中含一個(gè)線程。 UNIX:允許多個(gè)進(jìn)程并發(fā)運(yùn)行,每個(gè)進(jìn)程中只有一個(gè)線程。多線程多線程指操作系統(tǒng)支持在同一進(jìn)程中的多個(gè)線程的并發(fā)運(yùn)行。Windows NT、Solaris和OS/2等操作系統(tǒng)使用支持多個(gè)進(jìn)程并發(fā) 運(yùn)行,且支持同一進(jìn)程中多個(gè)線程并發(fā)運(yùn)行的方法。許多在現(xiàn)代臺(tái)式PC機(jī)上運(yùn)行的軟件包也是多線程的。例如一個(gè)字 處理軟件可以有一個(gè)線程去顯示圖形,另一線程去讀用戶鍵入的 字符,第三個(gè)線程在后臺(tái)執(zhí)行拼寫和語法檢查。2.4 線程的基本概念線程的基本概念二、用戶級(jí)線程和內(nèi)核支持線程二、用戶級(jí)線程和內(nèi)核支持線程線程目錄線程目錄進(jìn)程進(jìn)程用戶空間用戶空間P P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都體育學(xué)院《混合動(dòng)力汽車技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州鐵路職業(yè)技術(shù)學(xué)院《CIS設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 運(yùn)城學(xué)院《資本市場(chǎng)與證券投資》2023-2024學(xué)年第二學(xué)期期末試卷
- 徽商職業(yè)學(xué)院《教育與心理研究方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北傳媒學(xué)院《客艙實(shí)務(wù)綜合訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 秦皇島工業(yè)職業(yè)技術(shù)學(xué)院《建筑結(jié)構(gòu)設(shè)計(jì)軟件應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 楊凌職業(yè)技術(shù)學(xué)院《工業(yè)網(wǎng)絡(luò)技術(shù)及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 復(fù)式樓層設(shè)計(jì)方案
- 江南大學(xué)《戲劇元素訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 危險(xiǎn)化學(xué)品企業(yè)“5.6 設(shè)備完整性”解讀與應(yīng)用指南(雷澤佳編制-2025A1)
- 第五章-包裝容器造型設(shè)計(jì)
- 數(shù)字貿(mào)易學(xué) 課件 第1章 導(dǎo)論
- 《陣列式消聲器技術(shù)要求》(T-CAEPI 17-2019)
- (2024版)應(yīng)對(duì)群體性事件的策略與技巧
- 社區(qū)警務(wù)工作培訓(xùn)
- 角磨機(jī)切割作業(yè)的應(yīng)急預(yù)案
- 搪瓷制品的藝術(shù)創(chuàng)作與文化創(chuàng)意
- 山西省眾輝公司招聘考試題庫(kù)
- 供水公司招聘考試題庫(kù)及答案
- 農(nóng)業(yè)企業(yè)計(jì)劃書
- 2023屆天津市河?xùn)|區(qū)高三二模語文試題(解析)
評(píng)論
0/150
提交評(píng)論