操作系統(tǒng)課件os02進(jìn)程控制_第1頁(yè)
操作系統(tǒng)課件os02進(jìn)程控制_第2頁(yè)
操作系統(tǒng)課件os02進(jìn)程控制_第3頁(yè)
操作系統(tǒng)課件os02進(jìn)程控制_第4頁(yè)
操作系統(tǒng)課件os02進(jìn)程控制_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、操作系統(tǒng)Operating Systems,第二章 進(jìn)程,第二章進(jìn)程管理,2.1進(jìn)程的基本概念 2.2進(jìn)程控制 2.3進(jìn)程同步 2.4經(jīng)典進(jìn)程的同步問(wèn)題 2.5 進(jìn)程通信 2.6線程,2.1 進(jìn)程的基本概念,2.1.1 程序的順序執(zhí)行及其特征 S1: a:=x+y; S2: b:=a-5; S3: c:=b+1; 順序性-順序執(zhí)行; 封閉性-程序運(yùn)行時(shí)獨(dú)占全機(jī)資源,不受外界影響; 可再現(xiàn)性-程序重復(fù)執(zhí)行時(shí)將得到相同結(jié)果;,S1,S2,S3,2.1.3 程序的并發(fā)執(zhí)行及其特征,對(duì)于具有下述四條語(yǔ)句的程序段: S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+b,

2、S1,S3,S4,a,c,S2,b,d,程序的并發(fā)執(zhí)行時(shí)的特征,間斷性-并發(fā)執(zhí)行導(dǎo)致間斷性; 失去封閉性-多個(gè)程序共享資源,受外界影響; 不可再現(xiàn)性-程序重復(fù)執(zhí)行時(shí)可能到不同結(jié)果;,緩存區(qū)BUF,P1,P2,案例,例如:某交通路口設(shè)置了一個(gè)自動(dòng)計(jì)數(shù)系統(tǒng),該系統(tǒng)由觀察者和報(bào)告者共同組成。 觀察者 報(bào)告者,交通路口自動(dòng)計(jì)數(shù)系統(tǒng),7,Procedure 觀察者 begin 觀察到一輛卡車; N=N+1; end,Procedure 報(bào)告者 begin print N; N=0; end,假設(shè)某時(shí)刻N(yùn)的值為m,可能出現(xiàn)下面情況: print的N值 N的最終取值 (1)m+1 0 (2)m 1 (3)m

3、 0,觀察者 ;報(bào)告者,報(bào)告者; 觀察者,報(bào)告者Print N; 觀察者N=N+1;報(bào)告者N=0,操作系統(tǒng)為什么要引入進(jìn)程概念?,刻畫系統(tǒng)的動(dòng)態(tài)性,發(fā)揮系統(tǒng)的并發(fā)性,提高資源利用率。 程序是并發(fā)執(zhí)行的,即不是連續(xù)而是走走停停的。 程序的并發(fā)執(zhí)行引起資源共享和競(jìng)爭(zhēng)問(wèn)題,執(zhí)行的程序不再處在封閉環(huán)境中。 “程序”自身只是計(jì)算任務(wù)的指令和數(shù)據(jù)的描述,是靜態(tài)概念 無(wú)法刻畫程序的并發(fā)特性, 系統(tǒng)需要尋找一個(gè)能描述程序動(dòng)態(tài)執(zhí)行過(guò)程的概念,進(jìn)程的特征,結(jié)構(gòu)特征 動(dòng)態(tài)性 并發(fā)性 獨(dú)立性 異步性,進(jìn)程的特征,結(jié)構(gòu)特征 為使程序(含數(shù)據(jù))能獨(dú)立運(yùn)行,應(yīng)為之配置一進(jìn)程控制塊(PCB,Process Control B

4、lock); 由程序段、相關(guān)的數(shù)據(jù)段和PCB三部分便構(gòu)成了進(jìn)程實(shí)體。 PCB常駐內(nèi)存,程序段,數(shù)據(jù)段,PCB,動(dòng)態(tài)特征的集中反映,描述要完成的功能,操作對(duì)象及工作區(qū),進(jìn)程的特征,動(dòng)態(tài)性 進(jìn)程的最基本的特征。 程序只是一組有序指令的集合,并存放于某種介質(zhì)上,其本身并不具有運(yùn)動(dòng)的含義,因而是靜態(tài)的。 進(jìn)程實(shí)體有一定的生命期: “它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤消而消亡” 作業(yè)調(diào)度與進(jìn)程調(diào)度,進(jìn)程的特征,并發(fā)性 并發(fā)性是進(jìn)程的重要特征,也成為OS的重要特征。 引入進(jìn)程的目的:正是為了使其進(jìn)程實(shí)體能和其它進(jìn)程實(shí)體并發(fā)執(zhí)行; 獨(dú)立性 在傳統(tǒng)的OS中,獨(dú)立性是指進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行、獨(dú)立分配資源和獨(dú)

5、立接受調(diào)度的基本單位。 異步性 進(jìn)程按各自獨(dú)立的、 不可預(yù)知的速度向前推進(jìn),或說(shuō)進(jìn)程實(shí)體按異步方式運(yùn)行。,進(jìn)程的定義,較典型的進(jìn)程定義有: (1)進(jìn)程是程序的一次執(zhí)行。 (2)進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)。 (3)進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過(guò)程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。 我們可以把傳統(tǒng)OS中的進(jìn)程定義為: “進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過(guò)程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位”,進(jìn)程的三種基本狀態(tài),就緒(Ready)狀態(tài) 進(jìn)程已分配到除CPU以外的所有必要資源。 就緒隊(duì)列 執(zhí)行狀態(tài) 進(jìn)程已獲得CPU,其程序正在執(zhí)行。 在單處理機(jī)系統(tǒng)中,只有一個(gè)進(jìn)程

6、處于執(zhí)行狀態(tài); 在多處理機(jī)系統(tǒng)中,則有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。 阻塞狀態(tài) 正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無(wú)法繼續(xù)執(zhí)行時(shí),便放棄處理機(jī)而處于暫停狀態(tài)。 引起阻塞的事件,進(jìn)程三個(gè)基本狀態(tài)及其轉(zhuǎn)換,執(zhí)行,就緒,阻塞,進(jìn)程調(diào)度,時(shí)間片完,I/O請(qǐng)求,I/O完成,掛起狀態(tài),引入掛起狀態(tài)的原因 終端用戶的請(qǐng)求。 (2) 父進(jìn)程請(qǐng)求。 (3) 負(fù)荷調(diào)節(jié)的需要。 為了讓某些進(jìn)程暫時(shí)不參與進(jìn)程調(diào)度,對(duì)換到外存中,釋放它占有的資源 (4) 操作系統(tǒng)的需要。 掛起狀態(tài)(靜止?fàn)顟B(tài))非掛起狀態(tài)(活動(dòng)狀態(tài)),具有掛起狀態(tài)的進(jìn)程狀態(tài)圖,創(chuàng)建狀態(tài)和終止?fàn)顟B(tài),創(chuàng)建狀態(tài) 為一個(gè)新進(jìn)程創(chuàng)建PCB,并填寫必要的管理信息; 該進(jìn)程所

7、必需的資源或其它信息尚未分配 終止?fàn)顟B(tài) 當(dāng)一個(gè)進(jìn)程到達(dá)了自然結(jié)束點(diǎn),或是出現(xiàn)了無(wú)法克服的錯(cuò)誤,或是被操作系統(tǒng)所終結(jié),或是被其他有終止權(quán)的進(jìn)程所終結(jié),它將進(jìn)入終止?fàn)顟B(tài)。 終止態(tài)的進(jìn)程不能再執(zhí)行。 一旦其它進(jìn)程完成了對(duì)終止?fàn)顟B(tài)進(jìn)程的信息提取之后,操作系統(tǒng)將刪除該進(jìn)程。,進(jìn)程的五種基本狀態(tài)及轉(zhuǎn)換,執(zhí)行,就緒,阻塞,進(jìn)程調(diào)度,時(shí)間片完,I/O請(qǐng)求,I/O完成,創(chuàng)建,終止,許可,結(jié)束,具有創(chuàng)建、終止和掛起狀態(tài)的進(jìn)程狀態(tài)圖,創(chuàng)建,許可,許可,終止,結(jié)束,2.1.5進(jìn)程控制塊,進(jìn)程控制塊PCB(Process Control Block) 系統(tǒng)為每個(gè)進(jìn)程定義的一個(gè)數(shù)據(jù)結(jié)構(gòu) PCB中記錄了操作系統(tǒng)所需的、用于

8、描述進(jìn)程的當(dāng)前情況以及控制進(jìn)程運(yùn)行的全部信息。 PCB是進(jìn)程存在的惟一標(biāo)志。 最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。 PCB應(yīng)常駐內(nèi)存 專門開(kāi)辟的PCB區(qū)內(nèi),進(jìn)程控制塊中的信息,進(jìn)程標(biāo)識(shí)符 處理機(jī)狀態(tài) 進(jìn)程調(diào)度信息 進(jìn)程控制信息,1 進(jìn)程控制塊進(jìn)程標(biāo)識(shí)符,內(nèi)部標(biāo)識(shí)符 一個(gè)惟一的數(shù)字標(biāo)識(shí)符,它通常是一個(gè)進(jìn)程的序號(hào)。 外部標(biāo)識(shí)符 它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(進(jìn)程)在訪問(wèn)該進(jìn)程時(shí)使用。 為了描述進(jìn)程的家族關(guān)系,還應(yīng)設(shè)置父進(jìn)程標(biāo)識(shí)及子進(jìn)程標(biāo)識(shí)。 設(shè)置用戶標(biāo)識(shí),以指示擁有該進(jìn)程的用戶。,2 進(jìn)程控制塊處理機(jī)狀態(tài),處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的 這些寄存器包括: 通用寄

9、存器,它們是用戶程序可以訪問(wèn)的,用于暫存信息; 指令計(jì)數(shù)器,其中存放了要訪問(wèn)的下一條指令的地址 程序狀態(tài)字PSW,含有狀態(tài)信息,如條件碼、執(zhí)行方式、中斷屏蔽標(biāo)志等; 用戶棧指針,指每個(gè)用戶進(jìn)程都有一個(gè)或若干個(gè)與之相關(guān)的系統(tǒng)棧,用于存放過(guò)程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址,棧指針指向該棧的棧頂。,3 進(jìn)程控制塊進(jìn)程調(diào)度信息,在PCB中還存放一些與進(jìn)程調(diào)度和進(jìn)程對(duì)換有關(guān)的信息,包括: 進(jìn)程狀態(tài); 進(jìn)程優(yōu)先級(jí),優(yōu)先級(jí)高的進(jìn)程應(yīng)優(yōu)先獲得處理機(jī); 進(jìn)程調(diào)度所需的其它信息,它們與所采用的進(jìn)程調(diào)度算法有關(guān),比如,進(jìn)程已等待CPU的時(shí)間總和、進(jìn)程已執(zhí)行的時(shí)間總和等; 事件,指進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的事

10、件,即阻塞原因。,4 進(jìn)程控制信息, 程序和數(shù)據(jù)的地址,指進(jìn)程的程序和數(shù)據(jù)所在的內(nèi)存或外存地(首)址 進(jìn)程同步和通信機(jī)制,指實(shí)現(xiàn)進(jìn)程同步和進(jìn)程通信時(shí)必需的機(jī)制; 資源清單,即一張列出了除CPU以外的、進(jìn)程所需的全部資源及已經(jīng)分配到該進(jìn)程的資源的清單; 鏈接指針,它給出了本進(jìn)程(PCB)所在隊(duì)列中的下一個(gè)進(jìn)程的PCB的首地址。,進(jìn)程控制塊的組織方式,鏈接方式 索引方式,鏈接方式,PCB表,執(zhí)行指針,就緒隊(duì)列指針,阻塞隊(duì)列1指針,阻塞隊(duì)列2指針,空閑隊(duì)列指針,鏈接方式,索引方式,執(zhí)行指針,就緒表指針,阻塞表1指針,PCB表,PCB1,PCB2,PCB3,PCB4,PCB5,PCB6,PCBn,阻塞

11、索引表1,阻塞表2指針,2.2 進(jìn)程控制,進(jìn)程控制是進(jìn)程管理中最基本的功能。 進(jìn)程控制任務(wù): 進(jìn)程創(chuàng)建、終止、進(jìn)程狀態(tài)的轉(zhuǎn)變 進(jìn)程控制一般是由OS的內(nèi)核中的原語(yǔ)來(lái)實(shí)現(xiàn)的。 原語(yǔ)是由若干條指令組成的,用于完成一定功能的一個(gè)過(guò)程。 它與一般過(guò)程的區(qū)別在于:它們是“原子操作”。因此,在執(zhí)行過(guò)程中不允許被中斷。 原子操作在管態(tài)下執(zhí)行,常駐內(nèi)存。,2.2.1 進(jìn)程的創(chuàng)建進(jìn)程樹,引起創(chuàng)建進(jìn)程的事件,用戶登錄。 作業(yè)調(diào)度。 提供服務(wù)。 應(yīng)用請(qǐng)求。,進(jìn)程的創(chuàng)建,調(diào)用進(jìn)程創(chuàng)建原語(yǔ)Create( )按下述步驟創(chuàng)建一個(gè)新進(jìn)程: 申請(qǐng)空白PCB。 為新進(jìn)程分配資源。 初始化進(jìn)程控制塊:初始化標(biāo)識(shí)信息、初始化處理機(jī)狀態(tài)

12、信息、初始化處理機(jī)控制信息。 將新進(jìn)程插入就緒隊(duì)列,如果進(jìn)程就緒隊(duì)列能夠接納新進(jìn)程, 便將新進(jìn)程插入就緒隊(duì)列。,2.2.2 進(jìn)程的終止,引起進(jìn)程終止的事件 正常結(jié)束 異常結(jié)束 越界錯(cuò)誤。 保護(hù)錯(cuò)。 非法指令。 特權(quán)指令錯(cuò)。 運(yùn)行超時(shí)。 等待超時(shí)。 算術(shù)運(yùn)算錯(cuò)。 I/O故障。 外界干預(yù) 操作員或操作系統(tǒng)干預(yù)。 父進(jìn)程請(qǐng)求。 父進(jìn)程終止。,進(jìn)程的終止過(guò)程,從PCB集合中檢索出該進(jìn)程的PCB,讀出該進(jìn)程的狀態(tài)。 若正處于執(zhí)行狀態(tài),應(yīng)立即終止該進(jìn)程的執(zhí)行,并置調(diào)度標(biāo)志為真,重新調(diào)度。 若還有子孫進(jìn)程,還應(yīng)將其所有子孫進(jìn)程予以終止。 將被終止進(jìn)程所擁有的全部資源,或者歸還給其父進(jìn)程, 或者歸還給系統(tǒng)。

13、將被終止進(jìn)程(它的PCB)從所在隊(duì)列(或鏈表)中移出, 等待其他程序來(lái)搜集信息。,2.2.3 進(jìn)程的阻塞與喚醒,引起進(jìn)程阻塞和喚醒的事件 請(qǐng)求系統(tǒng)服務(wù) 啟動(dòng)某種操作 新數(shù)據(jù)尚未到達(dá) 無(wú)新工作可做,進(jìn)程阻塞過(guò)程,進(jìn)程通過(guò)調(diào)用阻塞原語(yǔ)block把自己阻塞: 該進(jìn)程還處于執(zhí)行狀態(tài),應(yīng)先立即停止執(zhí)行, 把進(jìn)程控制塊中的現(xiàn)行狀態(tài)由“執(zhí)行”改為阻塞,并將PCB插入阻塞隊(duì)列。 應(yīng)將本進(jìn)程插入到具有相同事件的阻塞(等待)隊(duì)列。 重新調(diào)度,并進(jìn)行切換。 保留被阻塞進(jìn)程的處理機(jī)狀態(tài)(在PCB中) 再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置CPU的環(huán)境,進(jìn)程喚醒過(guò)程,有關(guān)進(jìn)程調(diào)用喚醒原語(yǔ)wakeup( ),將等待該事件的

14、進(jìn)程喚醒: 把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出 將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒 將該P(yáng)CB插入到就緒隊(duì)列中。,進(jìn)程的喚醒,block原語(yǔ)和wakeup原語(yǔ)是一對(duì)作用剛好相反的原語(yǔ)。 如果在某進(jìn)程中調(diào)用了阻塞原語(yǔ),則必須在與之相合作的另一進(jìn)程中或其他相關(guān)的進(jìn)程中安排喚醒原語(yǔ).,進(jìn)程A,進(jìn)程B,等待事件1,調(diào)用阻塞原語(yǔ)阻塞自己,事件1發(fā)生,調(diào)用喚醒原語(yǔ)喚醒被阻塞進(jìn)程,2.2.4 進(jìn)程的掛起與激活,掛起原語(yǔ)suspend( ) 將指定進(jìn)程或處于阻塞狀態(tài)的進(jìn)程掛起。 掛起原語(yǔ)的執(zhí)行過(guò)程是: 檢查被掛起進(jìn)程的狀態(tài) 若處于活動(dòng)就緒狀態(tài),便將其改為靜止就緒; 對(duì)于活動(dòng)阻塞狀態(tài)的進(jìn)程,則將之改為靜止阻塞。 把該進(jìn)程的PCB復(fù)制到某指定的內(nèi)存區(qū)域。 若被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論