進(jìn)程描述與控制及其管理_第1頁
進(jìn)程描述與控制及其管理_第2頁
進(jìn)程描述與控制及其管理_第3頁
進(jìn)程描述與控制及其管理_第4頁
進(jìn)程描述與控制及其管理_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、進(jìn)程描述與控制及其管理12進(jìn)程的特征和定義進(jìn)程的三種基本狀態(tài)進(jìn)程控制塊進(jìn)程控制 線程和SMP 線程及其管理3進(jìn)程的引入進(jìn)程是現(xiàn)代操作系統(tǒng)中最重要的構(gòu)件。操作系統(tǒng)的重要功能就是創(chuàng)建、管理和終止進(jìn)程。為什么要在操作系統(tǒng)中引入進(jìn)程這樣一個概念?4進(jìn)程的引入(續(xù))在多道程序環(huán)境下,程序的執(zhí)行屬于并發(fā)執(zhí)行,這時,程序?qū)⑹テ浞忾]性,并具有間斷性及不可再現(xiàn)性的特征。這決定了通常的程序是不能參與并發(fā)執(zhí)行的,因?yàn)槌绦驁?zhí)行的結(jié)果是不可再現(xiàn)的。這樣程序的執(zhí)行也就失去了意義5進(jìn)程的引入(續(xù))為了使程序能并發(fā)執(zhí)行,且為了使對并發(fā)執(zhí)行的程序加以描述和控制,人們引入了“進(jìn)程”的概念。為了能比較深刻地了解什么是進(jìn)程,先對進(jìn)

2、程的特征加以描述。6進(jìn)程的特征和定義1)結(jié)構(gòu)特征2) 動態(tài)性 3) 并發(fā)性 4) 獨(dú)立性 5) 異步性 71)結(jié)構(gòu)特征程序不能并發(fā)執(zhí)行,為了使程序(含數(shù)據(jù))能獨(dú)立運(yùn)行,應(yīng)為之配置一個進(jìn)程控制塊,即PCB;而由程序段、相關(guān)的數(shù)據(jù)段和PCB三部分便構(gòu)成了進(jìn)程實(shí)體,在早期的UNIX版本中把這三部分稱為“進(jìn)程映像”。82) 動態(tài)性動態(tài)性是進(jìn)程最基本的特征。它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷而消亡,因而具有一定的生命期。而程序是靜態(tài)的,它是一組有序指令的集合,并存放于某種介質(zhì)上,其本身并不具有運(yùn)動的含義。93) 并發(fā)性指多個進(jìn)程共存于內(nèi)存中,且能在一段時間內(nèi)同時運(yùn)行。并發(fā)性是進(jìn)程的重要特征,也成為OS

3、的重要特征。引入進(jìn)程的目的也就是為了使多個進(jìn)程能夠并發(fā)執(zhí)行;而程序(沒有建立PCB)是不能并發(fā)執(zhí)行的。104) 獨(dú)立性指進(jìn)程實(shí)體是一個能獨(dú)立運(yùn)行,獨(dú)立分配資源和獨(dú)立接受調(diào)度的基本單位。凡未建立PCB的程序都不能作為一個獨(dú)立的單位參與運(yùn)行。115) 異步性指進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn),或者說進(jìn)程實(shí)體按異步方式運(yùn)行。12進(jìn)程的定義進(jìn)程的定義有多種,比較典型的有:1)進(jìn)程是程序在處理器上的一次執(zhí)行過程。2)進(jìn)程是一個程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時所發(fā)生的活動。3)進(jìn)程是程序在一個數(shù)據(jù)集合上的運(yùn)行的過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。通常人們定義進(jìn)程為:進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過

4、程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。13 進(jìn)程的三種基本狀態(tài)1)就緒(Ready)狀態(tài) 2) 執(zhí)行狀態(tài) 3) 阻塞狀態(tài) 141)就緒(Ready)狀態(tài)當(dāng)進(jìn)程已分配到除CPU以外的的所有必要資源后,只要再獲得CPU就可以立即執(zhí)行,這時的進(jìn)程狀態(tài)稱為就緒狀態(tài)。在一個系統(tǒng)中處于就緒狀態(tài)的進(jìn)程可能有多個,通常將他們排成一個隊(duì)列,稱為就緒隊(duì)列152)執(zhí)行狀態(tài)進(jìn)程已獲得CPU,其程序正在執(zhí)行。在單處理機(jī)系統(tǒng)中,只有一個進(jìn)程處于執(zhí)行狀態(tài);在多處理器系統(tǒng)中,則有多個進(jìn)程處于執(zhí)行狀態(tài)。163)阻塞狀態(tài)正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時無法繼續(xù)執(zhí)行時,便放棄處理機(jī)而處于暫停狀態(tài),即進(jìn)程的執(zhí)行受到阻塞,這種

5、暫停的狀態(tài)成為阻塞狀態(tài)。致使進(jìn)程阻塞的典型事件有:請求I/O,申請緩沖空間等。通常將阻塞進(jìn)程也排成隊(duì)列,有的系統(tǒng)根據(jù)阻塞的原因不同,而把處于阻塞狀態(tài)的進(jìn)程拍成多個隊(duì)列。17進(jìn)程的三種狀態(tài)及其轉(zhuǎn)換18進(jìn)程的另一個狀態(tài) 掛起狀態(tài)盡管引入了多道程序設(shè)計(jì),在內(nèi)存中有多道程序在共享處理機(jī)和外圍設(shè)備,使得處理機(jī)利用率提高,但由于其運(yùn)行速度的懸殊,還可能出現(xiàn)在內(nèi)存中的所有進(jìn)程都在等待CPU的情形。為了充分利用CPU的寶貴資源,又引入了“掛起”狀態(tài)。191. 進(jìn)程掛起的狀態(tài) 由于I/O操作比CPU計(jì)算慢得多,故常會出現(xiàn)內(nèi)存中所有進(jìn)程都等待I/O的現(xiàn)象。即使運(yùn)行多個程序,處理器在大多數(shù)時間仍處于空閑狀態(tài)。為此可

6、采用交換方法,將內(nèi)存中的一部分進(jìn)程轉(zhuǎn)移到磁盤中。20 那么需要在進(jìn)程行為模式中需增加一個新的掛起狀態(tài),當(dāng)內(nèi)存所有進(jìn)程阻塞時,操作系統(tǒng)可將一進(jìn)程置為掛起狀態(tài)并交換到磁盤,再調(diào)入另一進(jìn)程執(zhí)行。掛起狀態(tài)與原有的阻塞和就緒狀態(tài)結(jié)合為阻塞掛起狀態(tài)和就緒掛起狀態(tài)。21引入掛起狀態(tài)的其它原因(1)終端用戶的請求。 (2) 父進(jìn)程請求。 (3) 負(fù)荷調(diào)節(jié)的需要。 (4) 操作系統(tǒng)的需要22引入掛起狀態(tài)后進(jìn)程狀態(tài)的轉(zhuǎn)換引入掛起狀態(tài)后,又會增加從掛起狀態(tài)(靜止?fàn)顟B(tài))到非掛起狀態(tài)(活動狀態(tài))的轉(zhuǎn)換;或者相反??梢杂幸韵聨追N情況:(1) 活動就緒靜止就緒。(通過掛起原語將其掛起 )(2) 活動阻塞靜止阻塞。 (3)

7、靜止就緒活動就緒。(用激活原語將靜止?fàn)顟B(tài)變?yōu)榛顒訝顟B(tài)) (4) 靜止阻塞活動阻塞。23進(jìn)程控制塊 進(jìn)程控制塊的作用是使一個在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個能獨(dú)立運(yùn)行的基本單位,一個能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f,OS是根據(jù)PCB來對并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的。24進(jìn)程控制塊中的信息 1) 進(jìn)程標(biāo)識符 進(jìn)程標(biāo)識符用于惟一地標(biāo)識一個進(jìn)程。一個進(jìn)程通常有兩種標(biāo)識符: (1) 內(nèi)部標(biāo)識符。在所有的操作系統(tǒng)中,都為每一個進(jìn)程賦予一個惟一的數(shù)字標(biāo)識符,它通常是一個進(jìn)程的序號。 設(shè)置內(nèi)部標(biāo)識符主要是為了方便系統(tǒng)使用。25(2) 外部標(biāo)識符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成

8、,往往是由用戶(進(jìn)程)在訪問該進(jìn)程時使用。為了描述進(jìn)程的家族關(guān)系, 還應(yīng)設(shè)置父進(jìn)程標(biāo)識及子進(jìn)程標(biāo)識。此外,還可設(shè)置用戶標(biāo)識,以指示擁有該進(jìn)程的用戶261. 進(jìn)程控制塊中的信息(續(xù)) 2) 處理機(jī)狀態(tài) 處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。 通用寄存器,又稱為用戶可視寄存器,它們是用戶程序可以訪問的,用于暫存信息, 在大多數(shù)處理機(jī)中,有 832 個通用寄存器,在RISC結(jié)構(gòu)的計(jì)算機(jī)中可超過 100 個;27 指令計(jì)數(shù)器,其中存放了要訪問的下一條指令的地址; 程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼、執(zhí)行方式、 中斷屏蔽標(biāo)志等; 用戶棧指針, 指每個用戶進(jìn)程都有一個或若干個與

9、之相關(guān)的系統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。 28進(jìn)程控制塊(PCB)是進(jìn)程映象中最關(guān)鍵的部分,它含有進(jìn)程的描述信息和控制信息,是進(jìn)程動態(tài)特性的集中反映,是系統(tǒng)對進(jìn)程施行識別和控制的依據(jù)。操作系統(tǒng)管理進(jìn)程所需的信息類型都收集在進(jìn)程控制塊中29進(jìn)程產(chǎn)生和終止 通常有4種事件會導(dǎo)致新進(jìn)程產(chǎn)生: 在一個交互式環(huán)境中,當(dāng)一個新用戶在終端鍵入登錄命令后,若是合法用戶,系統(tǒng)將為該用戶建立一個進(jìn)程。 在一個批處理環(huán)境中,為了響應(yīng)一個任務(wù)的要求而產(chǎn)生進(jìn)程。 當(dāng)運(yùn)行中獲取用戶程序提出的某種請求后,OS可以代用戶程序產(chǎn)生進(jìn)程以實(shí)現(xiàn)某種功能,使用戶不必等待。 基于應(yīng)用進(jìn)程的需要,由已

10、存在的進(jìn)程產(chǎn)生另一個進(jìn)程,以便使新程序以并發(fā)運(yùn)行方式完成特定任務(wù)。 30進(jìn)程產(chǎn)生和終止 導(dǎo)致進(jìn)程終止的事件大致有14種 :正常結(jié)束 、超時限制 、內(nèi)存不足 、超界 、保護(hù)錯誤 、算術(shù)錯誤 、超越時限 、I/O失敗 、非法指令 、特權(quán)指令 、錯誤使用數(shù)據(jù) 、操作員或OS干預(yù) 、父進(jìn)程終止 、父進(jìn)程需要 。31進(jìn)程產(chǎn)生和終止進(jìn)程的動態(tài)性質(zhì)是由其狀態(tài)變化決定的。通常操作系統(tǒng)中進(jìn)程都具有三種狀態(tài):運(yùn)行態(tài)、就緒態(tài)和阻塞態(tài)。進(jìn)程的生命周期中通常還有創(chuàng)建和消失兩種狀態(tài)。創(chuàng)建和終止?fàn)顟B(tài)對進(jìn)程管理非常有用。 32進(jìn)程狀態(tài)模型 運(yùn)行:進(jìn)程當(dāng)前處于運(yùn)行狀態(tài)。 就緒;進(jìn)程已準(zhǔn)備好運(yùn)行。 阻塞;進(jìn)程等待某些事件發(fā)生(如

11、I/O操作)后才能運(yùn)行。 創(chuàng)建:進(jìn)程剛產(chǎn)生,但還未被操作系統(tǒng)提交到可運(yùn)行進(jìn)程池中。 消失:進(jìn)程被操作系統(tǒng)從可運(yùn)行進(jìn)程池中釋放。 33進(jìn)程控制 在計(jì)算機(jī)系統(tǒng)中,操作系統(tǒng)負(fù)責(zé)調(diào)度進(jìn)程、分配資源、響應(yīng)用戶程序服務(wù)的請求,可以認(rèn)為操作系統(tǒng)管理整個系統(tǒng)資源的使用和控制整個系統(tǒng)的事件。34進(jìn)程控制(續(xù)) 操作系統(tǒng)內(nèi)核負(fù)責(zé)控制和管理進(jìn)程的產(chǎn)生、執(zhí)行和消亡的整個過程,這主要通過對它們的控制操作實(shí)現(xiàn)。操作系統(tǒng)的進(jìn)程控制操作主要有: 創(chuàng)建進(jìn)程、撤消進(jìn)程、掛起進(jìn)程、恢復(fù)進(jìn)程、改變進(jìn)程優(yōu)先級、封鎖進(jìn)程、喚醒進(jìn)程、調(diào)度進(jìn)程等。 35執(zhí)行模式 大多數(shù)處理器都至少支持兩種執(zhí)行模式,一種是同操作系統(tǒng)有關(guān)的模式,另一種則是同用

12、戶程序有關(guān)的模式。較低特權(quán)模式稱為用戶模式。較高特權(quán)模式指系統(tǒng)模式、控制模式或內(nèi)核模式。內(nèi)核是操作系統(tǒng)中最核心功能的集合。 36進(jìn)程創(chuàng)建 一旦OS決定創(chuàng)建一個進(jìn)程時,便調(diào)用進(jìn)程創(chuàng)建原語Creat( ),進(jìn)行如下操作: 給新進(jìn)程一個編號并申請空白PCB。 為進(jìn)程分配空間。 初始化PCB。 設(shè)置合適的鏈接。 生成其他一些數(shù)據(jù)結(jié)構(gòu)。 37 原語(primitive):內(nèi)核的執(zhí)行是通過各種原語操作實(shí)現(xiàn)的。它是機(jī)器指令的延伸,由若干條機(jī)器指令構(gòu)成用以完成特定功能的一段程序。它執(zhí)行時不可中斷,作為一個基本的執(zhí)行單位出現(xiàn)(原子操作 Atomie operation)。38進(jìn)程切換 在某時刻,一個正在運(yùn)行的進(jìn)

13、程被中斷,操作系統(tǒng)就將另一個進(jìn)程置為運(yùn)行狀態(tài),并對其進(jìn)行控制。當(dāng)操作系統(tǒng)掌握控制權(quán)時,切換隨時會發(fā)生??赡軐⒖刂茩?quán)交給操作系統(tǒng)的事件有:中斷 、陷阱39中斷:計(jì)算機(jī)系統(tǒng)內(nèi)發(fā)生了某一急需處理的事件,使得CPU暫停正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回到原來被中斷處繼續(xù)執(zhí)行自陷(陷阱)40上下文切換 上下文切換發(fā)生時,可能并不改變當(dāng)前處于運(yùn)行態(tài)的進(jìn)程狀態(tài)。當(dāng)前運(yùn)行進(jìn)程的狀態(tài)要改變時,操作系統(tǒng)將進(jìn)行以下步驟完成進(jìn)程切換: 保存處理器內(nèi)容。 對當(dāng)前運(yùn)行進(jìn)程的PCB進(jìn)行更新。 將這個進(jìn)程的PCB移入適當(dāng)?shù)年?duì)列。 挑選其他進(jìn)程執(zhí)行。 對挑選進(jìn)程的PCB進(jìn)行更新。 對存儲器管理數(shù)據(jù)結(jié)

14、構(gòu)進(jìn)行更新。 將被選中進(jìn)程上次移出時的處理器狀態(tài)進(jìn)行恢復(fù)。41微核 微核是一個操作系統(tǒng)的核心,它為組件擴(kuò)展提供了基礎(chǔ)。微核所應(yīng)遵循的原理是:只有那些絕對必要的操作系統(tǒng)核心功能才能放在內(nèi)核中。次重要的服務(wù)和應(yīng)用功能則建立在微核之外。 42線程和SMP 線程(Thread)是近年來操作系統(tǒng)中出現(xiàn)的一個非常重要的技術(shù)。線程的引入,進(jìn)一步提高了程序并發(fā)執(zhí)行的程度,從而進(jìn)一步提高了系統(tǒng)的吞吐量。 432.4.1 線程及其管理 為了既能提高程序的并發(fā)程度,又能減少OS的開銷,操作系統(tǒng)設(shè)計(jì)者引入了線程,把進(jìn)程的兩個基本屬性分離開來。引入線程還有一個好處,就是能較好地支持對稱多處理器系統(tǒng)(Symmetric

15、Multiprocessor,簡稱SMP)。44線程及其管理2.線程的定義及特征 線程是進(jìn)程內(nèi)的一個相對獨(dú)立的、可獨(dú)立調(diào)度和指派的執(zhí)行單元。線程具有以下性質(zhì): 線程是進(jìn)程內(nèi)的一個相對獨(dú)立的可執(zhí)行單元。 線程是操作系統(tǒng)中的基本調(diào)度單元 。 一個進(jìn)程中至少應(yīng)有一個線程 。線程并不擁有資源,而是共享和使用包含它的進(jìn)程所擁有的所有資源。 線程在需要時也可創(chuàng)建其他線程。 45線程及其管理進(jìn)程和線程的區(qū)別與聯(lián)系: 調(diào)度擁有資源 并發(fā)性 系統(tǒng)開銷 46線程及其管理 線程也有一個從創(chuàng)建到消亡的生命過程,雖然在不同的操作系統(tǒng),線程的狀態(tài)設(shè)計(jì)不完全相同,但就緒、運(yùn)行、阻塞3個關(guān)鍵的狀態(tài)是共有的。線程中不具有進(jìn)程中

16、的掛起狀態(tài)。對具有多線程的進(jìn)程狀態(tài),若一個線程被阻塞,整個進(jìn)程不被阻塞。線程使用線程控制塊(TCB)來描述其數(shù)據(jù)結(jié)構(gòu)。線程的狀態(tài)轉(zhuǎn)換是通過相關(guān)的控制原語來實(shí)現(xiàn)的。 47多線程的實(shí)現(xiàn) 多線程機(jī)制是指OS支持在一個進(jìn)程內(nèi)執(zhí)行多個線程的能力。線程雖在許多系統(tǒng)中實(shí)現(xiàn),但實(shí)現(xiàn)的方式并不完全相同。 48多線程的實(shí)現(xiàn) 用戶級線程ULT由用戶應(yīng)用程序建立,由用戶應(yīng)用程序負(fù)責(zé)對這些線程進(jìn)行調(diào)度和管理,操作系統(tǒng)內(nèi)核并不知道有用戶級線程的存在。因而這種線程與內(nèi)核無關(guān)。49多線程的實(shí)現(xiàn) 內(nèi)核級線程KLT中的所有線程的創(chuàng)建、調(diào)度和管理全部由操作系統(tǒng)內(nèi)核負(fù)責(zé)。一個應(yīng)用進(jìn)程可按多線程方式編制程序,當(dāng)它被提交給多線程操作系統(tǒng)運(yùn)行時,內(nèi)核為它創(chuàng)建一個進(jìn)程和一個線程,線程在運(yùn)行中還會創(chuàng)建新的線程。這就是通常所說的“純KLT方法”。 50多線程的實(shí)現(xiàn)3.KLT和ULT結(jié)合 由于純KLT和純ULT各有自己的優(yōu)點(diǎn)和缺點(diǎn),因此,如果將兩種方法結(jié)合起來,則可得到兩者的全部優(yōu)點(diǎn),將兩種方法結(jié)合起來的系統(tǒng)稱之為多線程的操作系統(tǒng)。51進(jìn)程與線程的關(guān)系線程進(jìn)程描 述11每個線程的執(zhí)行就是一個進(jìn)程n1每個進(jìn)程定義一個地址空間并動態(tài)擁有資源;同一進(jìn)程可產(chǎn)生多個線程并運(yùn)行1

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論