操作系統(tǒng)教程第2章進(jìn)程管理_第1頁(yè)
操作系統(tǒng)教程第2章進(jìn)程管理_第2頁(yè)
操作系統(tǒng)教程第2章進(jìn)程管理_第3頁(yè)
操作系統(tǒng)教程第2章進(jìn)程管理_第4頁(yè)
操作系統(tǒng)教程第2章進(jìn)程管理_第5頁(yè)
已閱讀5頁(yè),還剩59頁(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、2.1進(jìn)程(jnchng)的基本概念2.2進(jìn)程(jnchng)控制2.4進(jìn)程調(diào)度2.3進(jìn)程互斥、同步和通信2.5死鎖2.6線程2.7 Windows Server 2003進(jìn)程管理 第2章進(jìn)程管理 共六十四頁(yè)2.1進(jìn)程(jnchng)的基本概念 程序的執(zhí)行與特征進(jìn)程的概念(ginin)與特征進(jìn)程的狀態(tài)及狀態(tài)轉(zhuǎn)換進(jìn)程控制塊共六十四頁(yè)2.1.1程序(chngx)的執(zhí)行與特征程序順序執(zhí)行程序順序執(zhí)行 :一個(gè)較大的程序通常都由若干個(gè)程序段組成。程序在執(zhí)行時(shí),必須按照某種先后次序逐個(gè)執(zhí)行,僅當(dāng)前一操作執(zhí)行完后,才能執(zhí)行后繼操作。程序順序執(zhí)行時(shí)的特征(tzhng) 順序性可再現(xiàn)性封閉性共六十四頁(yè)在早期的單

2、道程序系統(tǒng)中,程序執(zhí)行時(shí)獨(dú)占系統(tǒng)資源,數(shù)據(jù)輸入、數(shù)據(jù)處理、結(jié)果輸出這三個(gè)程序段只能?chē)?yán)格按程序規(guī)定的順序一個(gè)接一個(gè)地順序執(zhí)行。圖2.1所示為程序的順序執(zhí)行,其中, I代表數(shù)據(jù)輸入操作, C代表計(jì)算操作, P為打印操作。 I1C1P1I2C2P2作業(yè)1作業(yè)2圖 2.1 程序的順序執(zhí)行共六十四頁(yè)程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行 :是指各程序在執(zhí)行時(shí)間上是可重疊的。我們把執(zhí)行時(shí)間上有重疊的幾個(gè)程序稱為(chn wi)并發(fā)程序。 程序并發(fā)執(zhí)行時(shí)的特征 間斷性失去封閉性不可再現(xiàn)性共六十四頁(yè)如圖2.2所示,對(duì)一個(gè)作業(yè)而言,其輸入程序(chngx)、計(jì)算程序(chngx)和打印程序(chngx)這三個(gè)操作必須順序執(zhí)行

3、;但對(duì)一批作業(yè)而言,許多程序(chngx)之間就有可能并發(fā)執(zhí)行。例如,輸入程序(chngx)在輸入第一個(gè)程序(chngx)后,在計(jì)算程序(chngx)對(duì)該程序(chngx)進(jìn)行計(jì)算的同時(shí),可由輸入程序(chngx)再輸入第二個(gè)程序(chngx),從而使第一個(gè)程序(chngx)的計(jì)算操作與第二個(gè)程序(chngx)的輸入操作并發(fā)執(zhí)行。一般說(shuō),輸入程序(chngx)在輸入第I+1個(gè)程序(chngx)時(shí),計(jì)算程序(chngx)可能正在對(duì)第I個(gè)程序(chngx)進(jìn)行計(jì)算,而打印程序(chngx)正在打印第I-1個(gè)程序(chngx)的計(jì)算結(jié)果。共六十四頁(yè)I1I2I3I4C1C2C3C4P1P2P3P4圖

4、2.2 程序并發(fā)執(zhí)行圖2.2表示出了輸入、計(jì)算、打印三個(gè)程序?qū)σ慌鳂I(yè)進(jìn)行處理的情況。共六十四頁(yè)2.1.2進(jìn)程(jnchng)的概念與特性進(jìn)程的概念與特征進(jìn)程的概念:可并發(fā)(bngf)執(zhí)行的程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過(guò)程進(jìn)程和程序是兩個(gè)既有聯(lián)系又有區(qū)別的概念,它們的區(qū)別和聯(lián)系可簡(jiǎn)述如下: 進(jìn)程是一個(gè)動(dòng)態(tài)概念,而程序則是一個(gè)靜態(tài)概念。程序是指令的有序集合,沒(méi)有任何執(zhí)行的含義;而進(jìn)程則強(qiáng)調(diào)執(zhí)行過(guò)程,它動(dòng)態(tài)地被創(chuàng)建,并被調(diào)度執(zhí)行后消亡。共六十四頁(yè)進(jìn)程具有并行特征,而程序沒(méi)有。由進(jìn)程的定義可知,進(jìn)程具有并行特征的兩個(gè)方面,即獨(dú)立性和異步性。也就是說(shuō),在不考慮資源共享的情況下,各進(jìn)程的執(zhí)行是獨(dú)立的,執(zhí)行

5、速度是異步的。顯然,由于程序不反映執(zhí)行過(guò)程,所以不具有并行特征進(jìn)程是競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)(xtng)資源的基本單位,從而其并行性受到系統(tǒng)(xtng)自己的制約。這里,制約就是對(duì)進(jìn)程獨(dú)立性和異步性的限制。不同的進(jìn)程可以包含同一程序,只要該程序所對(duì)應(yīng)的數(shù)據(jù)集不同。共六十四頁(yè)2.1.3進(jìn)程的狀態(tài)(zhungti)及狀態(tài)(zhungti)轉(zhuǎn)換 進(jìn)程的狀態(tài)在進(jìn)程的生命期內(nèi),一個(gè)進(jìn)程至少具有三種(sn zhn)基本狀態(tài),它們是:執(zhí)行狀態(tài)、等待狀態(tài)和就緒狀態(tài)。 進(jìn)程的狀態(tài)轉(zhuǎn)換進(jìn)程的狀態(tài)反映進(jìn)程執(zhí)行過(guò)程的變化。這些狀態(tài)隨著進(jìn)程的執(zhí)行和外界條件發(fā)生變化和轉(zhuǎn)換。那么,是什么樣的條件使得進(jìn)程各狀態(tài)發(fā)生轉(zhuǎn)換呢?圖2.3 給

6、出了三個(gè)基本狀態(tài),即就緒狀態(tài)、執(zhí)行狀態(tài)與等待狀態(tài)之間的轉(zhuǎn)換關(guān)系。共六十四頁(yè)圖 2.3 進(jìn)程狀態(tài)轉(zhuǎn)換共六十四頁(yè)2.1.4進(jìn)程(jnchng)控制塊PCB 從處理機(jī)的活動(dòng)角度來(lái)看,如何識(shí)別、描述進(jìn)程呢?顯然,系統(tǒng)中需要有描述進(jìn)程存在和能夠反映其變化的物理實(shí)體,即進(jìn)程的靜態(tài)描述。進(jìn)程的靜態(tài)描述由三部分組成:進(jìn)程控制塊PCB,有關(guān)程序段和該程序段對(duì)其進(jìn)行操作的數(shù)據(jù)結(jié)構(gòu)集。進(jìn)程控制塊包含了有關(guān)進(jìn)程的描述信息、控制信息以及(yj)資源信息,是進(jìn)程動(dòng)態(tài)特征的集中反映。系統(tǒng)根據(jù)PCB感知進(jìn)程的存在和通過(guò)PCB中所包含的各項(xiàng)變量的變化,掌握進(jìn)程所處的狀態(tài)以達(dá)到控制進(jìn)程活動(dòng)的目的。由于進(jìn)程的PCB 是系統(tǒng)感知進(jìn)程

7、的唯一實(shí)體,因此,在幾乎所有的多道操作系統(tǒng)中,一個(gè)進(jìn)程的PCB結(jié)構(gòu)都是全部或部分常駐內(nèi)存的。 共六十四頁(yè)一般來(lái)說(shuō),根據(jù)操作系統(tǒng)的要求不同,進(jìn)程的 PCB所包含(bohn)的內(nèi)容會(huì)多少有所不同,但是下面所示基本內(nèi)容是必需的:(1) 描述信息 進(jìn)程名或進(jìn)程標(biāo)識(shí)號(hào) 用戶名或用戶標(biāo)識(shí)號(hào) 家族關(guān)系(2) 控制信息 進(jìn)程當(dāng)前狀態(tài)進(jìn)程在活動(dòng)期間可分為就緒態(tài)、執(zhí)行態(tài)和等待狀態(tài)。 進(jìn)程優(yōu)先級(jí)進(jìn)程優(yōu)先級(jí)是選取進(jìn)程占有處理機(jī)的重要依據(jù)。與進(jìn)程優(yōu)先級(jí)有關(guān)的PCB表項(xiàng)有:a. 占有CPU時(shí)間;共六十四頁(yè)b. 進(jìn)程優(yōu)先級(jí)偏移;c. 占據(jù)(zhnj)內(nèi)存時(shí)間等。 程序開(kāi)始地址 各種計(jì)時(shí)信息給出進(jìn)程占有和利用資源的有關(guān)情況。

8、 通信信息通信信息用來(lái)說(shuō)明該進(jìn)程在執(zhí)行過(guò)程中與別的進(jìn)程所發(fā)生的信息交換情況。(3) 資源管理信息PCB 中包含最多的是資源管理信息,包括有關(guān)存儲(chǔ)器的信息、使用輸入輸出設(shè)備的信息、有關(guān)文件系統(tǒng)的信息等,這些信息有: 占用內(nèi)存大小及其管理用數(shù)據(jù)結(jié)構(gòu)指針,例如,后述內(nèi)存管理中所用到的進(jìn)程頁(yè)表指針等。 共六十四頁(yè) 在某些復(fù)雜系統(tǒng)中,還有對(duì)換或覆蓋用的有關(guān)信息,如對(duì)換程序段長(zhǎng)度,對(duì)換外存地址等,這些信息在進(jìn)程申請(qǐng)、釋放內(nèi)存中使用。 共享程序段大小及起始地址。 輸入輸出設(shè)備的設(shè)備號(hào),所要傳送的數(shù)據(jù)長(zhǎng)度、緩沖區(qū)地址、緩沖區(qū)長(zhǎng)度及所用設(shè)備的有關(guān)數(shù)據(jù)結(jié)構(gòu)指針等。這些信息在進(jìn)程申請(qǐng),釋放設(shè)備進(jìn)行數(shù)據(jù)傳輸中使用。

9、指向(zh xin)文件系統(tǒng)的指針及有關(guān)標(biāo)識(shí)等。進(jìn)程可使用這些信息對(duì)文件系統(tǒng)進(jìn)行操作。(4) CPU 現(xiàn)場(chǎng)保護(hù)結(jié)構(gòu) 總之,進(jìn)程控制塊PCB 是系統(tǒng)感知進(jìn)程存在的唯一實(shí)體。 共六十四頁(yè)2.2進(jìn)程(jnchng)控制操作系統(tǒng)內(nèi)核簡(jiǎn)介建立進(jìn)程進(jìn)程的撤消(chxio)進(jìn)程的阻塞進(jìn)程的喚醒進(jìn)程的掛起和激活 共六十四頁(yè)2.2.1操作系統(tǒng)內(nèi)核(ni h)簡(jiǎn)介進(jìn)程從產(chǎn)生到消亡的整個(gè)過(guò)程都是由操作系統(tǒng)來(lái)控制的,為了(wi le)實(shí)現(xiàn)對(duì)進(jìn)程的有效控制,操作系統(tǒng)必須設(shè)置一套控制機(jī)制,它應(yīng)具有創(chuàng)建一個(gè)新進(jìn)程,撤消一個(gè)已經(jīng)運(yùn)行結(jié)束的進(jìn)程,以及具有改變進(jìn)程狀態(tài)、實(shí)現(xiàn)進(jìn)程間通信的能力。這樣的機(jī)構(gòu)屬于操作系統(tǒng)的內(nèi)核。 內(nèi)核中

10、所包含的原語(yǔ)主要有進(jìn)程控制原語(yǔ)、進(jìn)程通信原語(yǔ)、資源管理原語(yǔ)以及其他方面的原語(yǔ)。 共六十四頁(yè)2.2.2建立(jinl)進(jìn)程 在多道程序環(huán)境中,只有(作為)進(jìn)程(時(shí))才能在系統(tǒng)中運(yùn)行。因此,為使程序能運(yùn)行就必須為它創(chuàng)建進(jìn)程。導(dǎo)致一個(gè)(y )進(jìn)程去創(chuàng)建另一進(jìn)程的典型事件,可有以下四類(lèi): 用戶登錄 作業(yè)調(diào)度 提供服務(wù)應(yīng)用請(qǐng)求共六十四頁(yè)一旦操作系統(tǒng)(co zu x tn)發(fā)現(xiàn)了要求創(chuàng)建進(jìn)程的事件后,便調(diào)用進(jìn)程創(chuàng)建原語(yǔ),按下述步驟創(chuàng)建進(jìn)程:(1) 由系統(tǒng)程序模塊統(tǒng)一創(chuàng)建,例如,在批處理系統(tǒng)中,由操作系統(tǒng)的作業(yè)調(diào)度程序?yàn)橛脩糇鳂I(yè)創(chuàng)建相應(yīng)的進(jìn)程以完成用戶作業(yè)所要求的功能。(2) 由父進(jìn)程創(chuàng)建,例如,在層次結(jié)構(gòu)

11、的系統(tǒng)中,父進(jìn)程創(chuàng)建子進(jìn)程以完成并行工作。 共六十四頁(yè)2.2.3進(jìn)程(jnchng)的撤消 以下幾種情況導(dǎo)致進(jìn)程被撤消:該進(jìn)程已完成所要求的功能而正常終止。由于某種錯(cuò)誤導(dǎo)致非正常終止。祖先進(jìn)程要求撤消某個(gè)子進(jìn)程。無(wú)論哪一種情況導(dǎo)致進(jìn)程被撤消,進(jìn)程都必須釋放它所占用的各種資源和PCB 結(jié)構(gòu)本身,以利于資源的有效利用。另外,當(dāng)一個(gè)(y )祖先進(jìn)程撤消某個(gè)子進(jìn)程時(shí),還需審查該子進(jìn)程是否還有自己的子孫進(jìn)程,若有的話,還需撤消其子孫進(jìn)程的 PCB結(jié)構(gòu)和釋放它們所占有的資源。 共六十四頁(yè) 2.2.4進(jìn)程(jnchng)的阻塞阻塞原語(yǔ)在一個(gè)進(jìn)程期待某一事件發(fā)生,但發(fā)生條件尚不具備時(shí),被該進(jìn)程自己調(diào)用(dio

12、yng)來(lái)阻塞自己。阻塞原語(yǔ)在阻塞一個(gè)進(jìn)程時(shí),由于該進(jìn)程正處于執(zhí)行狀態(tài),故應(yīng)先中斷處理機(jī)和保存該進(jìn)程的CPU現(xiàn)場(chǎng)。然后將被阻塞進(jìn)程置“阻塞”狀態(tài)后插入等待隊(duì)列中,再轉(zhuǎn)進(jìn)程調(diào)度程序選擇新的就緒進(jìn)程投入運(yùn)行。這里,轉(zhuǎn)進(jìn)程調(diào)度程序是很重要的,否則,處理機(jī)將會(huì)出現(xiàn)空轉(zhuǎn)而浪費(fèi)資源。 共六十四頁(yè)圖 2.6 阻塞原語(yǔ)圖共六十四頁(yè)2.2.5進(jìn)程(jnchng)的喚醒 當(dāng)?shù)却?duì)列中的進(jìn)程所等待的事件發(fā)生時(shí),等待該事件的所有進(jìn)程都將被喚醒。喚醒一個(gè)進(jìn)程有兩種方法:一種是由系統(tǒng)進(jìn)程喚醒。另一種是由事件發(fā)生進(jìn)程喚醒。當(dāng)由系統(tǒng)進(jìn)程喚醒等待進(jìn)程時(shí),系統(tǒng)進(jìn)程統(tǒng)一控制事件的發(fā)生并將“事件發(fā)生”這一消息(xio xi)通知等待

13、進(jìn)程。從而使得該進(jìn)程因等待事件已發(fā)生而進(jìn)入就緒隊(duì)列。由事件發(fā)生進(jìn)程喚醒時(shí),事件發(fā)生進(jìn)程和被喚醒進(jìn)程之間是合作關(guān)系。共六十四頁(yè)因此,喚醒原語(yǔ)既可被系統(tǒng)進(jìn)程調(diào)用,也可被事件發(fā)生進(jìn)程調(diào)用。稱調(diào)用喚醒原語(yǔ)的進(jìn)程為喚醒進(jìn)程。喚醒原語(yǔ)首先將被喚醒進(jìn)程從相應(yīng)的等待隊(duì)列中摘下,將被喚醒進(jìn)程置為就緒狀態(tài)之后,送入就緒隊(duì)列。當(dāng)把被喚醒進(jìn)程送入就緒隊(duì)列之后,喚醒原語(yǔ)既可以返回原調(diào)用程序,也可以轉(zhuǎn)向進(jìn)程調(diào)度,以便讓調(diào)度程序有機(jī)會(huì)選擇一個(gè)合適(hsh)的進(jìn)程執(zhí)行。 共六十四頁(yè)圖 2.7 喚醒原語(yǔ)共六十四頁(yè)2.2.6進(jìn)程(jnchng)的掛起和激活 進(jìn)程掛起:當(dāng)出現(xiàn)了引起進(jìn)程掛起的事件時(shí),系統(tǒng)將利用掛起原語(yǔ)將處于阻塞狀態(tài)

14、的進(jìn)程掛起。掛起原語(yǔ)的執(zhí)行過(guò)程是,檢查被掛起進(jìn)程的狀態(tài),若正處于活動(dòng)就緒狀態(tài),便將其改為靜止就緒,對(duì)于活動(dòng)阻塞狀態(tài)的進(jìn)程,則將其改為靜止阻塞。為了方便用戶或父進(jìn)程考查該進(jìn)程的運(yùn)行(ynxng)情況,而把該進(jìn)程的PCB復(fù)制到某指定的內(nèi)存區(qū)域。最后,如被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)調(diào)試程序重新調(diào)度。 共六十四頁(yè)進(jìn)程的激活過(guò)程 :當(dāng)發(fā)生激活進(jìn)程的事件時(shí),若進(jìn)程駐留在外存而內(nèi)存已有足夠的空間,則可將在外存上處于靜止就緒狀態(tài)的進(jìn)程換入內(nèi)存。這時(shí),系統(tǒng)將利用激活原語(yǔ)將指定進(jìn)程激活。激活原主先將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài),若是靜止就緒便將其改為活動(dòng)就緒,若為靜止阻塞便將其改為活動(dòng)阻塞。假如采用的是

15、搶占調(diào)度策略,則每當(dāng)(mi dn)有新進(jìn)程進(jìn)入就緒隊(duì)列時(shí),應(yīng)檢查是否要進(jìn)行重新調(diào)度,即由調(diào)度程序?qū)⒈患せ钸M(jìn)程與當(dāng)前進(jìn)程進(jìn)行優(yōu)先級(jí)的比較,如果被激活進(jìn)程的優(yōu)先級(jí)更低,就不必重新調(diào)度,否則立即剝奪當(dāng)前進(jìn)程的運(yùn)行,把處理機(jī)分配給剛被激活的進(jìn)程。共六十四頁(yè)2.3進(jìn)程互斥、同步(tngb)和通信 進(jìn)程的同步(tngb)進(jìn)程的互斥信號(hào)量和P、V操作進(jìn)程通信共六十四頁(yè)2.3.1進(jìn)程(jnchng)的同步把異步環(huán)境下的一組并發(fā)進(jìn)程,因直接制約而互相發(fā)送消息進(jìn)行互相合作、互相等待,使得各進(jìn)程按一定的速度(sd)執(zhí)行的過(guò)程稱為進(jìn)程間的同步。具有同步關(guān)系的一組并發(fā)進(jìn)程稱為合作進(jìn)程,合作進(jìn)程間互相發(fā)送的信號(hào)稱為消息或

16、事件。 共六十四頁(yè)2.3.2進(jìn)程(jnchng)的互斥資源共享所引起的制約 臨界區(qū)是由屬于不同并發(fā)進(jìn)程的程序段共享公用數(shù)據(jù)或公用數(shù)據(jù)變量而引起的,臨界區(qū)不可能用增加硬件的方法來(lái)解決。因此,臨界區(qū)也可以被稱為訪問(wèn)公用數(shù)據(jù)的那段程序。間接制約 :把這種由于共享某一公有資源而引起的在臨界區(qū)內(nèi)不允許并發(fā)進(jìn)程交叉執(zhí)行(zhxng)的現(xiàn)象,稱為由共享公有資源而造成的對(duì)并發(fā)進(jìn)程執(zhí)行(zhxng)速度的間接制約,簡(jiǎn)稱間接制約。 共六十四頁(yè)互斥:一組并發(fā)(bngf)進(jìn)程中的一個(gè)或多個(gè)程序段,因共享某一公有資源而導(dǎo)致它們必須以一個(gè)不允許交叉執(zhí)行的單位執(zhí)行。也就是說(shuō),不允許兩個(gè)以上的共享該資源的并發(fā)(bngf)進(jìn)程

17、同時(shí)進(jìn)入臨界區(qū)稱為互斥。一組并發(fā)進(jìn)程互斥執(zhí)行時(shí)必須滿足如下準(zhǔn)則:(1) 不能假設(shè)各并發(fā)進(jìn)程的相對(duì)執(zhí)行速度。即各并發(fā)進(jìn)程享有平等的、獨(dú)立的競(jìng)爭(zhēng)共有資源的權(quán)利,且在不采取任何措施的條件下,在臨界區(qū)內(nèi)任一指令結(jié)束時(shí),其他并發(fā)進(jìn)程可以進(jìn)入臨界區(qū)(2) 并發(fā)進(jìn)程中的某個(gè)進(jìn)程不在臨界區(qū)時(shí),它不阻止其他進(jìn)程進(jìn)入臨界區(qū)。共六十四頁(yè)(3) 并發(fā)進(jìn)程中的若干個(gè)進(jìn)程申請(qǐng)進(jìn)入臨界區(qū)時(shí),只能允許一個(gè)(y )進(jìn)程進(jìn)入。(4) 并發(fā)進(jìn)程中的某個(gè)進(jìn)程申請(qǐng)進(jìn)入臨界區(qū)時(shí)開(kāi)始,應(yīng)在有限時(shí)間內(nèi)得以進(jìn)入臨界區(qū)。 互斥的加鎖實(shí)現(xiàn) 當(dāng)某個(gè)進(jìn)程進(jìn)入臨界區(qū)之后,它將鎖上臨界區(qū),直到它退出臨界區(qū)時(shí)為止。并發(fā)進(jìn)程在申請(qǐng)進(jìn)入臨界區(qū)時(shí),首先測(cè)試該臨界

18、區(qū)是否是上鎖的。如果該臨界區(qū)已被鎖住,則該進(jìn)程要等到該臨界區(qū)開(kāi)鎖之后才有可能獲得臨界區(qū)。 共六十四頁(yè)2.3.3信號(hào)量和P、V操作(cozu) 信號(hào)是鐵路交通管理中的一種常用設(shè)備,交通管理人員(rnyun)利用信號(hào)顏色的變化來(lái)實(shí)現(xiàn)交通管理。在操作系統(tǒng)中,信號(hào)量sem是一整數(shù)。在sem大于等于零時(shí)代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù),但sem小于零時(shí)則表示正在等待使用臨界區(qū)的進(jìn)程數(shù)。顯然,用于互斥的信號(hào)量sem的初值應(yīng)該大于零,而建立一個(gè)信號(hào)量必須經(jīng)過(guò)說(shuō)明所建信號(hào)量所代表的意義,和賦初值以及建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu)以便指向那些等待使用該臨界區(qū)的進(jìn)程。 共六十四頁(yè)信號(hào)量的數(shù)值僅能由,原語(yǔ)操作改變.采用,原語(yǔ),

19、可以把類(lèi)名為的臨界區(qū)描述為When do (sem)臨界區(qū)(sem)od。原語(yǔ)操作的主要?jiǎng)幼魇牵簊em減 1;若sem減1后仍大于或等于零,則進(jìn)程(jnchng)繼續(xù)執(zhí)行;若sem減1后小于零,則該進(jìn)程被阻塞在與該信號(hào)相對(duì)應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度。原語(yǔ)的操作主要?jiǎng)幼魇牵簊em加1;若相加結(jié)果大于零,進(jìn)程繼續(xù)執(zhí)行;若相加結(jié)果小于或等于零,則從該信號(hào)的等待隊(duì)列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。 共六十四頁(yè)私用信號(hào)量:一般來(lái)說(shuō),也可以把各進(jìn)程之間發(fā)送的消息作為信號(hào)量看待。與進(jìn)程互斥時(shí)不同的是,這里的信號(hào)量只與制約進(jìn)程及被制約進(jìn)程有關(guān)而不是與整組并發(fā)進(jìn)程有關(guān)。因此,稱該信號(hào)量為

20、私用信號(hào)量用,原語(yǔ)操作實(shí)現(xiàn)同步有了私用信號(hào)量的概念,可以使用,原語(yǔ)操作實(shí)現(xiàn)進(jìn)程間的同步。利用,原語(yǔ)實(shí)現(xiàn)進(jìn)程同步的方法與利用wait和signal過(guò)程時(shí)相同,也是分為三步。首先(shuxin)為各并發(fā)進(jìn)程設(shè)置私用信號(hào)量,然后為私用信號(hào)量賦初值,最后利用,原語(yǔ)和私用信號(hào)量規(guī)定各進(jìn)程的執(zhí)行順序。 共六十四頁(yè)用,原語(yǔ)實(shí)現(xiàn)進(jìn)程互斥設(shè)信號(hào)量sem是用于互斥的信號(hào)量,且其初值為1表示沒(méi)有并發(fā)進(jìn)程使用該臨界區(qū)。顯然,由上面(shng min)幾節(jié)的討論可知,只要把臨界區(qū)置于(sem)和(sem)之間,即可實(shí)現(xiàn)進(jìn)程間的互斥。當(dāng)一個(gè)進(jìn)程想要進(jìn)入臨界區(qū)時(shí),它必須先執(zhí)行原語(yǔ)操作以將信號(hào)量sem減1。在一個(gè)進(jìn)程完成對(duì)臨

21、界區(qū)的操作之后,它必須執(zhí)行原語(yǔ)操作以釋放它所占用的臨界區(qū)。共六十四頁(yè)2.3.4進(jìn)程(jnchng)通信 在單機(jī)系統(tǒng)中,進(jìn)程間通信可分為4種形式:主從(zhcng)式會(huì)話式消息或郵箱機(jī)制共享存儲(chǔ)區(qū)方式共六十四頁(yè)消息緩沖機(jī)制發(fā)送進(jìn)程和接收進(jìn)程采用消息緩沖機(jī)制進(jìn)行數(shù)據(jù)傳送時(shí),發(fā)送進(jìn)程在發(fā)送消息前,先在自己的內(nèi)存空間設(shè)置一個(gè)(y )發(fā)送區(qū),把欲發(fā)送的消息填入其中,然后再用發(fā)送過(guò)程將其發(fā)送出去。接收進(jìn)程則在接收消息之前,在自己的內(nèi)存空間內(nèi)設(shè)置相應(yīng)的接收區(qū),然后用接收過(guò)程接收消息。由于消息緩沖機(jī)制中所使用的緩沖區(qū)為公用緩沖區(qū),使用消息緩沖機(jī)制傳送數(shù)據(jù)時(shí),兩通信進(jìn)程必須滿足如下條件:共六十四頁(yè)在發(fā)送進(jìn)程把消

22、息寫(xiě)入緩沖區(qū)和把緩沖區(qū)掛入消息隊(duì)列時(shí),應(yīng)禁止其他進(jìn)程對(duì)該緩沖區(qū)消息隊(duì)列的訪問(wèn)。否則,將引起消息隊(duì)列的混亂。同理,當(dāng)接收進(jìn)程正從消息隊(duì)列中取消息緩沖時(shí),也應(yīng)禁止其他進(jìn)程對(duì)該隊(duì)列的訪問(wèn)。當(dāng)緩沖區(qū)中無(wú)消息存在(cnzi)時(shí),接收進(jìn)程不能接收到任何消息。至于發(fā)送進(jìn)程是否可以發(fā)送消息,則由發(fā)送進(jìn)程是否申請(qǐng)到緩沖區(qū)決定。共六十四頁(yè)郵箱通信就是由發(fā)送進(jìn)程申請(qǐng)建立一與接收進(jìn)程鏈接的郵箱。發(fā)送進(jìn)程把消息送往郵箱,接收進(jìn)程從郵箱中取出消息,從而完成進(jìn)程間信息交換。設(shè)置郵箱的最大好處就是發(fā)送進(jìn)程和接收進(jìn)程之間沒(méi)有處理時(shí)間上的限制。一個(gè)郵箱可考慮成發(fā)送進(jìn)程與接收進(jìn)程之間的大小固定的私有數(shù)據(jù)結(jié)構(gòu),它不像緩沖區(qū)那樣被系統(tǒng)

23、內(nèi)所有進(jìn)程共享。郵箱由郵箱頭和郵箱體組成。其中郵箱頭描述郵箱名稱、郵箱大小、郵箱方向以及擁有(yngyu)該郵箱的進(jìn)程名等。郵箱體主要用來(lái)存放消息,如圖2.14所示。 共六十四頁(yè)圖 2.14 郵箱通信結(jié)構(gòu) 共六十四頁(yè)2.4進(jìn)程(jnchng)調(diào)度 進(jìn)程調(diào)度的基本概念進(jìn)程調(diào)度的類(lèi)型(lixng)進(jìn)程調(diào)度的算法共六十四頁(yè)進(jìn)程高度的基本概念在進(jìn)程狀態(tài)的變化中,從就緒到運(yùn)行的轉(zhuǎn)變(zhunbin)是由一個(gè)專門(mén)的程序來(lái)完成的,該程序稱為進(jìn)程調(diào)度程序。進(jìn)程調(diào)度程序的具體功能如下:記錄系統(tǒng)中所有進(jìn)程的狀態(tài)、優(yōu)先數(shù)和資源需求情況確定調(diào)度算法和調(diào)度方式分配處理器給某進(jìn)程,完成處理器的切換共六十四頁(yè)進(jìn)程調(diào)度的類(lèi)型

24、進(jìn)程調(diào)度亦可稱為處理機(jī)調(diào)度,它協(xié)調(diào)和控制各進(jìn)程對(duì)CPU的使用。一般來(lái)說(shuō),處理機(jī)調(diào)度可以分為4級(jí):作業(yè)調(diào)度:又稱宏觀調(diào)度,或高級(jí)調(diào)度。其主要任務(wù)是按一定的原則對(duì)外存輸入井上的大量后備作業(yè)進(jìn)行(jnxng)選擇,給選出的作業(yè)分配內(nèi)存、輸入輸出設(shè)備等必要的資源,并建立相應(yīng)的進(jìn)程,以使該作業(yè)的進(jìn)程獲得競(jìng)爭(zhēng)處理機(jī)的權(quán)利。另外,當(dāng)該作業(yè)執(zhí)行完畢時(shí),還負(fù)責(zé)回收系統(tǒng)資源。共六十四頁(yè)交換調(diào)度:又稱中級(jí)調(diào)度。其主要任務(wù)是按照給定的原則和策略,將處于外存交換區(qū)中的就緒狀態(tài)或就緒等待狀態(tài)的進(jìn)程調(diào)入內(nèi)存,或把處于內(nèi)存就緒狀態(tài)或內(nèi)存等待狀態(tài)的進(jìn)程交換到外存交換區(qū)。交換調(diào)度主要涉及到內(nèi)存管理與擴(kuò)充。進(jìn)程調(diào)度:又稱微觀調(diào)度或

25、低級(jí)(dj)調(diào)度。其主要任務(wù)是按照某種策略和方法選取一個(gè)處于就緒狀態(tài)的進(jìn)程占用處理機(jī)。在確定了占用處理機(jī)的進(jìn)程后,系統(tǒng)必須進(jìn)行進(jìn)程上下文切換以建立與占用處理機(jī)進(jìn)程相適應(yīng)的執(zhí)行環(huán)境。線程調(diào)度。共六十四頁(yè)圖 2.17 作業(yè)的狀態(tài)及其轉(zhuǎn)換共六十四頁(yè)進(jìn)程調(diào)度(diod)算法 先來(lái)先服務(wù)(FCFS)調(diào)度算法輪轉(zhuǎn)法(round robin) 多級(jí)反饋(fnku)輪轉(zhuǎn)法優(yōu)先級(jí)法最短作業(yè)優(yōu)先法(shortest job first)最高響應(yīng)比優(yōu)先法(highest responseratio next)共六十四頁(yè)2.5死鎖死鎖的概述(i sh)死鎖的處理共六十四頁(yè)2.5.1死鎖的概述死鎖的定義:是指各并發(fā)進(jìn)程

26、彼此互相等待對(duì)方所擁有的資源,且這些并發(fā)進(jìn)程在得到對(duì)方的資源之前不會(huì)釋放(shfng)自己所擁有的資源。從而造成大家都想得到資源而又都得不到資源,各并發(fā)進(jìn)程不能繼續(xù)向前推進(jìn)的狀態(tài)。 圖 2.21 死鎖的概念共六十四頁(yè)死鎖的起因死鎖的起因是并發(fā)進(jìn)程的資源競(jìng)爭(zhēng)。產(chǎn)生死鎖的根本原因在于系統(tǒng)提供的資源個(gè)數(shù)少于并發(fā)進(jìn)程所要求的該類(lèi)資源數(shù)。顯然,由于資源的有限性,不可能為所有要求資源的進(jìn)程無(wú)限制地提供資源。但是,可以采用適當(dāng)?shù)馁Y源分配算法,以達(dá)到消除(xioch)死鎖的目的。為此,先看看產(chǎn)生死鎖的必要條件。 共六十四頁(yè)產(chǎn)生死鎖的必要條件互斥條件。并發(fā)進(jìn)程所要求和占有的資源是不能同時(shí)被兩個(gè)以上進(jìn)程使用(sh

27、yng)或操作的,進(jìn)程對(duì)它所需要的資源進(jìn)行排他性控制。不剝奪條件。進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強(qiáng)行剝奪,而只能由獲得該資源的進(jìn)程自己釋放。部分分配。進(jìn)程每次申請(qǐng)它所需要的一部分資源,在等待新資源的同時(shí)繼續(xù)占用已分配到的資源。環(huán)路條件。存在一種進(jìn)程循環(huán)鏈,鏈中每一個(gè)進(jìn)程已獲得的資源同時(shí)被下一個(gè)進(jìn)程所請(qǐng)求。顯然,只要使上述4個(gè)必要條件中的某一個(gè)不滿足,則死鎖就可以排除。 共六十四頁(yè)2.5.2死鎖的處理(chl) 死鎖預(yù)防 一種方法是打破資源的互斥和不可剝奪這兩個(gè)條件,這種方法不能解決訪問(wèn)那些不允許被同時(shí)訪問(wèn)的資源時(shí)所帶來(lái)的死鎖問(wèn)題。另一種方法則是打破資源的部分分配(fnpi)這

28、個(gè)死鎖產(chǎn)生的必要條件。即預(yù)先分配(fnpi)各并發(fā)進(jìn)程所需要的全部資源。共六十四頁(yè)死鎖避免的一種基本模式是把進(jìn)程分為多個(gè)步,其中每個(gè)步所使用的資源是固定的,且在一個(gè)步內(nèi),進(jìn)程所保持的資源數(shù)不變。即進(jìn)程的資源請(qǐng)求、使用與釋放要依靠不同的步完成。死鎖的檢測(cè)和恢復(fù)當(dāng)進(jìn)程進(jìn)行資源請(qǐng)求時(shí)死鎖檢測(cè)算法檢查并發(fā)進(jìn)程組是否構(gòu)成資源的請(qǐng)求和保持環(huán)路。有限狀態(tài)轉(zhuǎn)移圖和petriNet等技術(shù)都可用來(lái)有效地判斷死鎖發(fā)生。死鎖的恢復(fù)辦法較多。最簡(jiǎn)單的辦法是終止各鎖住進(jìn)程,或按一定的順序中止進(jìn)程序列,直至已釋放到有足夠的資源來(lái)完成剩下的進(jìn)程時(shí)為止。另外,也可以(ky)從被鎖住進(jìn)程強(qiáng)迫剝奪資源以解除死鎖。共六十四頁(yè)2.6線

29、程線程的概念線程與進(jìn)程(jnchng)的比較引入線程的優(yōu)點(diǎn)共六十四頁(yè)線程的概念:線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位。線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器、一組寄存器和棧),但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程;同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。 線程與進(jìn)程的比較:進(jìn)程是資源分配的基本單位。進(jìn)程也是搶占處理機(jī)的調(diào)度單位,它擁有一個(gè)完整的虛擬地址空間(kngjin)。與進(jìn)程相對(duì)應(yīng),線程與資源分配無(wú)關(guān),它屬于某一個(gè)進(jìn)程,并與進(jìn)程內(nèi)的其他線程一起共享進(jìn)程的資源。再者,當(dāng)進(jìn)程發(fā)生調(diào)度時(shí),

30、不同的進(jìn)程擁有不同的虛擬地址空間(kngjin),而同一進(jìn)程內(nèi)的不同線程共享同一地址空間(kngjin)。共六十四頁(yè)線程的適用范圍并不是在所有的計(jì)算機(jī)系統(tǒng)中線程都是適用的。事實(shí)上在那些很少做進(jìn)程調(diào)度和切換的實(shí)時(shí)系統(tǒng)、個(gè)人數(shù)字助理系統(tǒng)中,由于任務(wù)的單一性,設(shè)置線程相反會(huì)占用更多的內(nèi)存空間和寄存器。使用線程的最大好處是在有多個(gè)任務(wù)需要處理機(jī)處理時(shí),減少處理機(jī)的切換時(shí)間,而且線程的創(chuàng)建和結(jié)束所需要的系統(tǒng)開(kāi)銷(xiāo)也比進(jìn)程的創(chuàng)建和結(jié)束要小得多。由此,可以推出最適合使用線程的系統(tǒng)是多處理機(jī)系統(tǒng)。在多處理機(jī)系統(tǒng)中,同一(tngy)用戶程序可以根據(jù)不同的功能劃分為不同的線程,放在不同的處理機(jī)上執(zhí)行。共六十四頁(yè)線程

31、的執(zhí)行特性線程在執(zhí)行時(shí)也有它的相關(guān)特性。線程的狀態(tài)和同步用來(lái)反映線程的這些特性。線程有3個(gè)基本狀態(tài),即執(zhí)行、就緒和阻塞。但是線程沒(méi)有進(jìn)程中的掛起狀態(tài)。也就是說(shuō),線程是一個(gè)只與內(nèi)存和寄存器相關(guān)的概念,它的內(nèi)容不會(huì)因交換而進(jìn)入外存。線程的另一個(gè)執(zhí)行特性是同步。由于同一進(jìn)程中的所有線程共享該進(jìn)程的所有資源和地址(dzh)空間,任何線程對(duì)資源的操作都會(huì)對(duì)其他相關(guān)線程帶來(lái)影響。因此,系統(tǒng)必須為線程的執(zhí)行提供同步控制機(jī)制,以防止因線程的執(zhí)行而破壞其他的數(shù)據(jù)結(jié)構(gòu)和給其他線程帶來(lái)不利的影響。線程中所使用的同步控制機(jī)制與進(jìn)程中所使用的同步控制機(jī)制相同。因此,這里不再進(jìn)一步講述有關(guān)線程的同步問(wèn)題共六十四頁(yè)線程的兩

32、個(gè)基本類(lèi)型(lixng)是:用戶級(jí)線程和系統(tǒng)級(jí)線程(核心級(jí)線型)。用戶級(jí)線程的管理過(guò)程全部由用戶程序完成,操作系統(tǒng)內(nèi)核只對(duì)進(jìn)程進(jìn)行管理核心級(jí)線程由操作系統(tǒng)內(nèi)核進(jìn)行管理。共六十四頁(yè)2.7 Windows Server 2003進(jìn)程(jnchng)管理 Windows Server 2003的結(jié)構(gòu) Windows Server 2003是基于NT技術(shù)開(kāi)發(fā)的32位操作系統(tǒng),采用32位內(nèi)核進(jìn)行系統(tǒng)調(diào)度和內(nèi)存(ni cn)管理,其結(jié)構(gòu)是一種模塊化的層次系統(tǒng)結(jié)構(gòu),主要層次包括:硬件抽象層、內(nèi)核、執(zhí)行體和子系統(tǒng)集。它提供了四個(gè)主要功能:線程調(diào)度、陷阱調(diào)度處理和異常處理、多處理機(jī)同步、為執(zhí)行體提供內(nèi)核對(duì)象。共六十四頁(yè)windows server 2003中的進(jìn)程windows server 2003中的每個(gè)Win32進(jìn)程都由一個(gè)執(zhí)行體進(jìn)程塊表示。執(zhí)行體進(jìn)程塊描述進(jìn)程的基本信息,并指向其他與進(jìn)程控制相關(guān)的數(shù)據(jù)結(jié)構(gòu)。執(zhí)行體進(jìn)程塊中的主要內(nèi)容包括:線程塊列表:描述屬于該進(jìn)程的所有線程的相關(guān)信息,以便線程調(diào)度程序進(jìn)行處理器資源的分配和回收虛擬地址空間描述表:描述進(jìn)程地址空間各部分屬性,用于虛擬存儲(chǔ)管理。對(duì)象(duxing)句柄列表:當(dāng)進(jìn)程創(chuàng)建或打開(kāi)一個(gè)對(duì)象(duxing)時(shí),就會(huì)得到一個(gè)代表該對(duì)象(duxing)的句柄,用于對(duì)象(duxing)訪問(wèn),對(duì)象(duxing)

溫馨提示

  • 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)論