考研王道操作系統(tǒng)單科_第1頁
考研王道操作系統(tǒng)單科_第2頁
考研王道操作系統(tǒng)單科_第3頁
考研王道操作系統(tǒng)單科_第4頁
考研王道操作系統(tǒng)單科_第5頁
已閱讀5頁,還剩159頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章操作系統(tǒng)概述

1.1、操作系統(tǒng)的概念、特征、功能和

結(jié)構(gòu)

1、操作系統(tǒng)的概念

在信息化時代,軟件被稱為計算機系統(tǒng)的靈魂。而作為

軟件核心的操作系統(tǒng),已經(jīng)與現(xiàn)代計算機系統(tǒng)密不可分、融

為一體。計算機系統(tǒng)自下而上可粗分為四個部分:硬件、操

作系統(tǒng)、應(yīng)用程序和用戶。操作系統(tǒng)管理各種計算機硬件,

為應(yīng)用程序提供基礎(chǔ),并充當計算機硬件和用戶的中介。

硬件,如中央處理器、內(nèi)存、輸入輸出設(shè)備等,提供了

基本的計算資源。應(yīng)用程序,如字處理程序、電子制表軟件、

編譯器、網(wǎng)絡(luò)瀏覽器等,規(guī)定了按何種方式使用這些資源來

解決用戶的計算問題。操作系統(tǒng)控制和協(xié)調(diào)各用戶的應(yīng)用程

序?qū)τ布氖褂谩?/p>

綜上所述,操作系統(tǒng)是指控制和管理整個計算機系統(tǒng)的

硬件和軟件資源,并合理的組織調(diào)度計算機的工作和資源的

分配,以提供給用戶和其他軟件方便的接口和環(huán)境集合。計

算機操作系統(tǒng)是隨著計算機研究和應(yīng)用的發(fā)展逐步形成并

發(fā)展起來的,它是計算機系統(tǒng)中最基本的系統(tǒng)軟件。

2、操作系統(tǒng)的特征

操作系統(tǒng)是一種系統(tǒng)軟件,但與其他的系統(tǒng)軟件和應(yīng)用

軟件有很大的不同,他有自己的特殊性即基本特征,操作系

統(tǒng)的基本特征包括并發(fā)、共享、虛擬和異步。這些概念對理

解和掌握操作系統(tǒng)的核心至關(guān)重要,將一直貫穿于各章節(jié)中。

(1)并發(fā)

并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生,在多

道程序環(huán)境下,一段時間內(nèi)宏觀上有多個程序在同時執(zhí)行,

而在同一時刻,單處理器環(huán)境下實際上只有一個程序在執(zhí)行,

故微觀上這些程序還是在分時的交替進行。操作系統(tǒng)的并發(fā)

是通過分時得以實現(xiàn)的。操作系統(tǒng)的并發(fā)性是指計算機系統(tǒng)

中同時存在多個運行著的程序,因此它具有處理和調(diào)度多個

程序同時執(zhí)行的能力。在操作系統(tǒng)中,引入進程的目的實施

程序能并發(fā)執(zhí)行。

(2)共享

資源共享即共享,是指系統(tǒng)中的資源可供內(nèi)存中多個并

發(fā)執(zhí)行的進程共同使用。共享可以分為以下兩種資源共享方

式。

1)互斥共享方式

系統(tǒng)中的某些資源,,如打印機、磁帶機,雖然他們可

以提供給多個進程使用,但為使所打印的內(nèi)容不致造成混淆,

應(yīng)規(guī)定在同一段時間內(nèi)只允許一個進程方位該資源。

為此,當進程a訪問某資源時,必須先提出請求,如果

此時該資源空閑,系統(tǒng)便可將之分配給進程a使用,伺候若

再有其他進程也要訪問該資源(只要a未用完)則必須等待。

僅當進程a訪問完并釋放該資源后,才允許另一進城對該資

源進行訪問。計算機系統(tǒng)中的大所屬物理設(shè)備,以及某些軟

件中所用的棧、變量和表格,都屬于臨界資源,他們都要求

被互斥的共享。

2)同時訪問方式

系統(tǒng)中還有一種資源,允許在一段時間內(nèi)由多個進程

“同時”對它進行訪問。這里所謂的“同時”往往是宏觀上

的,而在微觀上,這些進程可能是交替的對該資源進行訪問

即“分時共享二典型的可供多個進程同時訪問的資源是磁

盤設(shè)備,一些用重入碼編寫的文件也可以被“同時”共享,

即若干個用戶同時訪問該文件。

并發(fā)和共享是操作系統(tǒng)兩個最基本的特征,這兩者之間

又是互為存在條件的:1資源共享是以程序的并發(fā)為條件的,

若系統(tǒng)不允許程序并發(fā)執(zhí)行,則自然不存在資源共享的問題;

2若系統(tǒng)不能對資源共享實施有效地管理,也必將影響到程

序的并發(fā)執(zhí)行,甚至根本無法并發(fā)執(zhí)行。

(3)虛擬

虛擬是指把一個物理上的實體變?yōu)槿舾蓚€邏輯上的對

應(yīng)物。物理實體是實的,即實際存在的;而后者是虛的,是

用戶感覺上的事物。相應(yīng)的,用于實現(xiàn)虛擬的技術(shù),成為虛

擬技術(shù)。在操作系統(tǒng)中利用了多種虛擬技術(shù),分別用來實現(xiàn)

虛擬處理器、虛擬內(nèi)存和虛擬外部設(shè)備。

在虛擬處理器技術(shù)中,是通過多道程序設(shè)計技術(shù),讓多

道程序并發(fā)執(zhí)行的方法,來分時使用一臺處理器的。此時,

雖然只有一臺處理器,但他能同時為多個用戶服務(wù),是每個

終端用戶都認為是有一個中央處理器在為他服務(wù)。利用多道

程序設(shè)計技術(shù),把一臺物理上的CPU虛擬為多臺邏輯上的CPU,

稱為虛擬處理器。

類似的,可以通過虛擬存儲器技術(shù),將一臺機器的物理

存儲器變?yōu)樘摂M存儲器,一邊從邏輯上來擴充存儲器的容量。

當然,這是用戶所感覺到的內(nèi)存容量是虛的,我們把用戶

所發(fā)哦絕倒的存儲器程序虛擬存儲器。

還可以通過虛擬設(shè)備技術(shù),將一臺物理10設(shè)備虛擬為

多臺邏輯上的10設(shè)備,并允許每個用戶占用一臺邏輯上的

10設(shè)備,這樣便可使原來僅允許在一段時間內(nèi)有一個用戶訪

問的設(shè)備,變?yōu)樵谝欢螘r間內(nèi)允許多個用戶同時訪問的共享

設(shè)備。

因此操作系統(tǒng)的虛擬技術(shù)可歸納為:時分復(fù)用技術(shù)和空

分復(fù)用技術(shù)。

(4)異步

在多道程序環(huán)境下,允許多個程序并發(fā)執(zhí)行,但由于資

源有限,進程的執(zhí)行不是一貫到底,而是走走停停,以不可

預(yù)知的速度向前推進,這就是進程的異步性。

異步性使得操作系統(tǒng)運行在一種隨機的環(huán)境下,可能導

致進程產(chǎn)生于時間有關(guān)的錯誤。但是只要運行環(huán)境相同,操

作系統(tǒng)必須保證多次運行進程,都獲得相同的結(jié)果。

3、操作系統(tǒng)的目標和功能

為了給多道程序提供良好的運行環(huán)境,操作系統(tǒng)應(yīng)具有

幾方面的功能:處理器管理、存儲器管理、設(shè)備管理和文件

管理。為了方便用戶使用操作系統(tǒng),還必須向用戶提供接口。

同時操作系統(tǒng)可用來擴充機器,以提供更方便的服務(wù)、更高

的資源利用率。

(1)操作系統(tǒng)作為計算機系統(tǒng)資源的管理者

1)處理器管理

在多道程序環(huán)境下,處理器的分配和運行都是以進程為

基本單位,因而對處理器的管理可歸結(jié)為對進程的管理。進

程管理的主要功能有:進程控制,進程同步,進程通信,死

鎖處理,處理器調(diào)度等。

2)存儲器管理

存儲器管理的主要任務(wù)是位多通道程序的運行提供良

好的環(huán)境,方便用戶使用以及提高內(nèi)存的利用率。因此,存

儲器管理應(yīng)具備:內(nèi)存分配、地址映射、內(nèi)存保護與共享和

內(nèi)存擴充等。

3)文件管理

文件管理主要包括文件的存儲空間管理、目錄管理及文

件讀寫管理及保護等。

4)設(shè)備管理

設(shè)備管理的主要任務(wù)就是完成用戶的10請求,方便用

戶使用各種設(shè)備,并提高設(shè)備的利用率,主要包括混充管理、

設(shè)備分配、設(shè)備處理和虛擬設(shè)備等功能。

(2)操作系統(tǒng)作為用戶與計算機硬件系統(tǒng)之間的接

為方便用戶使用操作系統(tǒng),操作系統(tǒng)還提供了用戶接口。

操作系統(tǒng)提供的接口主要分為兩類:一類是命令接口,用戶

利用這些操作命令來組織和控制作業(yè)的執(zhí)行;另一類是程序

接口,編程人員可以使用它們來請求操作系統(tǒng)服務(wù)。

1)命令接口

使用命令接口進行作業(yè)控制的主要方式有兩種:按作業(yè)

控制方式的不同,可以將命令接口分為聯(lián)機命令接口和脫機

命令接口。

2)程序接口

程序接口由一組系統(tǒng)調(diào)用命令組成。用戶通過在程序中

使用這些系統(tǒng)調(diào)用命令拉i請求操作系統(tǒng)提供的服務(wù)。用戶

在程序中可以直接使用這組系統(tǒng)調(diào)用命令向系統(tǒng)提出各種

服務(wù)請求,如使用各種外部設(shè)備,進行有關(guān)磁盤文件的操作,

申請分配和收回內(nèi)存以及其他各種控制要求。

所謂系統(tǒng)調(diào)用就是用戶在程序中調(diào)用操作系統(tǒng)所提供

的一些子功能。具體的講,系統(tǒng)調(diào)用就是通過系統(tǒng)調(diào)用命令

中斷現(xiàn)行程序,而轉(zhuǎn)去執(zhí)行響應(yīng)的子程序,以完成特定的系

統(tǒng)功能;系統(tǒng)調(diào)用完成后,返回程序的斷點以繼續(xù)執(zhí)行。

系統(tǒng)調(diào)用命令是作為擴充機器命令提供的,目的是增強

系統(tǒng)功能,方便用戶使用。而起通過系統(tǒng)調(diào)用的方式來使用

系統(tǒng)功能,可以保證系統(tǒng)的穩(wěn)定性和安全性,防止用戶隨意

更改或訪問系統(tǒng)的數(shù)據(jù)或命令。因此,在一些計算機系統(tǒng)中,

把系統(tǒng)調(diào)用命令成為廣義指令。廣義指令與機器指令在性質(zhì)

上是不同的,機器指令使用硬件電路直接實現(xiàn)的,而廣義命

令則是由操作系統(tǒng)提供的一個或多個子程序模塊實現(xiàn)的。顯

然,系統(tǒng)調(diào)用屬于核心態(tài)指令。

(3)操作系統(tǒng)做擴充機器

沒有任何軟件支持的計算機成為裸機,它僅構(gòu)成計算機

系統(tǒng)的物質(zhì)基礎(chǔ),而實際呈現(xiàn)在用戶面前的計算機系統(tǒng)是經(jīng)

過若干層軟件改造的計算機。裸機在最里層,他的外面是操

作系統(tǒng),有操作系統(tǒng)提供的資源管理功能和方便用戶的各種

服務(wù)功能,將裸機改造成功能更強、使用更方便的機器,通

常把覆蓋了軟件的機器成為擴充機器,又稱之為虛擬機。

4操作系統(tǒng)的結(jié)構(gòu)

像現(xiàn)在操作系統(tǒng)這樣龐大而復(fù)雜的系統(tǒng),為了能正常工

作且容易修改和維護,在實現(xiàn)前必須認真設(shè)計操作系統(tǒng)的結(jié)

構(gòu)。操作系統(tǒng)發(fā)展至今,其設(shè)計結(jié)構(gòu)可以分成以下幾類:

(1)簡單結(jié)構(gòu)。

(2)模塊化結(jié)構(gòu)

(3)分層式結(jié)構(gòu)

(4)微內(nèi)核結(jié)構(gòu)

1.2、操作系統(tǒng)的發(fā)展與分類

1、手工操作階段

2、脫機輸入輸出階段

3、批處理階段

批處理技術(shù)是指計算機系統(tǒng)對一批作業(yè)自動進行處理

的一種技術(shù)。批處理階段的特點是:用戶不用與計算機直接

打交道,而是通過專門的操作員來完成作業(yè)的輸入輸出。隨

著外圍設(shè)備的迅速發(fā)展,后來又出現(xiàn)了脫機批處理系統(tǒng),即

主機直接與磁盤通信。

(1)單道批處理系統(tǒng)

主要特點:自動性、順序性、單道性。

(2)多道批處理系統(tǒng)

多道程序設(shè)計技術(shù)是指在計算機內(nèi)存中同時存放幾道

相互獨立的程序,它們在管理程序的控制下相互交替的運行。

其特征是:多道,宏觀上并行,微觀上串行。

4、分時操作系統(tǒng)

所謂分時系統(tǒng)就是把處理器的運行時間分成很短的時

間片,按時間片輪流把處理器分配給各聯(lián)機作業(yè)使用。若某

個作業(yè)再分配給他的時間片內(nèi)不能完成其計算,則改作業(yè)暫

時停止運行,把處理器讓給其他作業(yè)使用,等待下一輪再繼

續(xù)運行,由于計算機速度很快,作業(yè)運行輪轉(zhuǎn)的很快,給每

個用戶的感覺好像是自己獨占一臺計算機。

分時操作系統(tǒng)十多個用戶通過終端同事共享一臺主機,

這些終端連接在主機上,用戶可以同時與主機進行交互操作

而不互相干擾。所以,實現(xiàn)分時系統(tǒng)最關(guān)鍵的問題,是如何

使用戶能與自己的作業(yè)進行交互,即當用戶在自己的中斷上

輸入命令時,系統(tǒng)應(yīng)能及時接收并及時處理該命令,再將結(jié)

果返回用戶。分時系統(tǒng)也是支持多道程序設(shè)計的系統(tǒng),但它

不同于多道批處理系統(tǒng)。多道批處理是實現(xiàn)作業(yè)自動控制而

無需人工干預(yù)的系統(tǒng),而分時系統(tǒng)是實現(xiàn)人機交互的系統(tǒng),

這使得分時系統(tǒng)具有與批處理系統(tǒng)不同的特征,其主要特征

如下:

同時性,交互性,獨立性,及時性。

5、實時操作系統(tǒng)

實時系統(tǒng)的主要特點是:實時性和可靠性。

6、網(wǎng)絡(luò)操作系統(tǒng)和分布式計算機系統(tǒng)

7、個人計算機操作系統(tǒng)

1.3、操作系統(tǒng)的運行環(huán)境

1、操作系統(tǒng)的運行機制

計算機系統(tǒng)中,通常CPU執(zhí)行兩種不同性質(zhì)的程序,一

種是操作系統(tǒng)內(nèi)核程序;另一種是用戶自編程序或系統(tǒng)外城

的應(yīng)用程序。對操作系統(tǒng)而言,這兩種程序的作用不同,前

者是后者的管理者和控制者,因此“管理程序”要執(zhí)行一些

特權(quán)指令,而“被管理程序”出于安全性考慮,不能執(zhí)行這

些指令。所謂特權(quán)指令,是指計算集中不允許用戶直接使用

的指令,如10指令、置中斷指令。

操作系統(tǒng)在具體實現(xiàn)上劃分了用戶態(tài)和核心態(tài),以嚴格

區(qū)分兩種類程序。

一些與硬件關(guān)聯(lián)交緊密的模塊,諸如時鐘管理程序、中

斷處理程序、設(shè)備驅(qū)動程序等處于最底層。其次是運行頻率

較高的程序,諸如金城關(guān)里、存儲器管理和設(shè)備管理等。這

兩部分內(nèi)容構(gòu)成了操作系統(tǒng)的內(nèi)核。這部分內(nèi)容的指令操作

工作在核心態(tài)。

內(nèi)核是計算機上配置的最底層軟件,是計算機功能的眼

神。不同系統(tǒng)對內(nèi)核的定義稍有區(qū)別,大多數(shù)操作系統(tǒng)內(nèi)核

包括四個方面的內(nèi)容。

(1)時鐘管理

在計算機外部設(shè)備中,時鐘是最關(guān)鍵的設(shè)備。時鐘的第

一功能是計時,操作系統(tǒng)需要通過時鐘管理,向用戶提供標

準的系統(tǒng)時間。另外,通過時鐘中斷的管理,可以實現(xiàn)京城

的切換。諸如:在分時操作系統(tǒng)中,采用時間片輪轉(zhuǎn)調(diào)度的

實現(xiàn);在實時系統(tǒng)中,按截止時間控制運行的實現(xiàn);在批處

理系統(tǒng)中,通過時鐘管理來衡量一個作業(yè)的運行程度等。因

此,系統(tǒng)管理的方方面面無不依賴于它。

(2)中斷機制

引入中斷技術(shù)的初衷是提高多道程序運行環(huán)境中CPU的

利用率,而且主要是針對外部設(shè)備的。后來的到發(fā)展,形成

了多種類等,成為操作系統(tǒng)各項操作的基礎(chǔ)。例如鍵盤或鼠

標信息的輸入、進程的管理和調(diào)度、系統(tǒng)功能的調(diào)用、設(shè)備

驅(qū)動、文件訪問等,無不依賴于中斷機制??梢哉f,現(xiàn)代計

算機系統(tǒng)是靠中斷驅(qū)動的軟件。

(3)原語

按層次結(jié)構(gòu)涉及的操作系統(tǒng),底層必然是一些可被調(diào)用

的公用小程序,他們各自完成一個規(guī)定的操作。其特點是:

1.他們處于操作系統(tǒng)的最底層,是最接近硬件的部分。2.這

些程序的運行具有原子性一一其操作只能一起合成。3.這些

程序的運行時間都較短,而且調(diào)用頻繁。

通常把具有這些特點的程序成為原語。定義源于的直接

方法是關(guān)閉中斷,讓她的所有動作不可分割的進行完再打開

中斷。

系統(tǒng)中的設(shè)備驅(qū)動、CPU切換、進程通信等功能中的部

分操作都可以定義為原語,是他們呢成為內(nèi)核的組成部分。

(4)系統(tǒng)控制的數(shù)據(jù)結(jié)構(gòu)及處理

系統(tǒng)中用來登記狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)很多。比如作業(yè)控

制塊、進程控制塊、設(shè)備控制塊、各類鏈表、消息隊列、緩

沖區(qū)、空閑區(qū)登記表、內(nèi)存分配表等。為了實現(xiàn)有效地管理,

系統(tǒng)需要一些基本的操作,常見的操作有以下三種:

1)進程管理:進程狀態(tài)管理、進程調(diào)度和分配、創(chuàng)建與

撤掉進程控制塊的隊列維護操作等。

2)存儲器管理:存儲器的空間分配和回收管理、內(nèi)存信

息保護程序、代碼對換程序等。

3)設(shè)備管理:緩沖區(qū)管理、設(shè)備分配和回收等。

從上述內(nèi)容可以了解,核心態(tài)指令實際上包括系統(tǒng)調(diào)用

類指令和一些針對時鐘、中斷和原語的操作指令。

2、中斷和異常的概念

在操作系統(tǒng)中引入核心態(tài)和用戶態(tài)這兩匯總工作狀態(tài)

后,就需要考慮這兩種狀態(tài)之間如何切換。操作系統(tǒng)內(nèi)核工

作在核心態(tài),而用戶程序工作在用戶態(tài)。但系統(tǒng)不允許用戶

程序?qū)崿F(xiàn)核心態(tài)的功能,而它們又必須使用這些功能。

中斷(interruption)也成為外中斷,指來自CPU執(zhí)行指

令以外的事件發(fā)生,如設(shè)備發(fā)出的10結(jié)束中斷,表示設(shè)備

輸入輸出處理已經(jīng)完成,希望處理器能夠像設(shè)備發(fā)出下一個

輸入輸出請求,同事讓王成輸入輸出后的程序繼續(xù)進行。時

鐘中斷,表示一個固定的事件篇已到,讓處理器處理計時、

啟動定時運行的任務(wù)。這一類中斷通常是與當前運行的程序

無關(guān)。中斷可細分為硬中斷和軟中斷。硬中斷是硬件產(chǎn)生的;

軟中斷是軟件產(chǎn)生的。

異常(Exception)也成為內(nèi)中斷、例外或陷入。指源自

CPU執(zhí)行指令內(nèi)部的時間,如程序的非法操作碼、地址越界、

算數(shù)一出、虛存系統(tǒng)的缺頁以及專門的陷入指令等引起的時

間。對異常的處理一般要依賴與當前程序的運行現(xiàn)場,而且

異常不能被屏蔽,一旦出現(xiàn)異常立即處理,而關(guān)于內(nèi)中斷和

外中斷的聯(lián)系與區(qū)別如下:

這樣,操作系統(tǒng)的運行環(huán)境可以理解為:用戶通過操作

系統(tǒng)運行上層程序,而這個上層程序的運行以來與操作系統(tǒng)

的底層管理程序提供服務(wù)支持,當需要管理程序服務(wù)時,系

統(tǒng)則通過硬件中斷機制進入核心態(tài),運行管理程序;另外也

可能是程序運行出現(xiàn)異常情況,被動的需要管理程序的服務(wù),

這是就通過異常處理來進入核心態(tài)。當管理程序運行結(jié)束時,

用戶程序要繼續(xù)進行,則通過相應(yīng)保存程序現(xiàn)場推出中斷處

理程序或異常處理程序,返回斷點處繼續(xù)執(zhí)行。在操作系統(tǒng)

這一層面上,我們關(guān)心的是系統(tǒng)核心態(tài)和用戶態(tài)的軟件實現(xiàn)

和切換,對于硬件層面的具體理解,可以結(jié)合“計算機組成

原理”課程中有關(guān)中斷的內(nèi)容進行學習。

下面列舉一些由用戶態(tài)轉(zhuǎn)向核心態(tài)的例子:

1)用戶程序要求操作系統(tǒng)的服務(wù),即系統(tǒng)服務(wù)。

2)發(fā)生一次中斷

3)用戶程序中產(chǎn)生了一個錯誤狀態(tài)

4)用戶程序中企圖執(zhí)行一條特權(quán)指令

5)從核心態(tài)轉(zhuǎn)向用戶態(tài)由一條指令實現(xiàn),這條指令也

是特權(quán)指令。一般情況是中斷返回指令。

注意,由用戶態(tài)進入核心態(tài),不僅僅是狀態(tài)需要切換,

而且,所使用的對戰(zhàn)也可能需要由用戶堆棧切換為系統(tǒng)對戰(zhàn),

但這個系統(tǒng)對戰(zhàn)也是屬于該進程的。

1.4、本章疑難點

1.并行性與并發(fā)性的區(qū)別和聯(lián)系

并行性和并發(fā)性是既相似又有區(qū)別的兩個概念。并行性

是指兩個或多個事件在同一時刻發(fā)生,并發(fā)性是指兩個或多

個事件在同一時間間隔內(nèi)發(fā)生。

2.分時系統(tǒng)與實時系統(tǒng)特征的比較

3.特權(quán)指令的工作機制

所謂特權(quán)指令是指有特殊權(quán)限的指令,由于這類指令的

全縣最大,如果使用不當,就會皮懷系統(tǒng)或其他用戶信息。

為了保證系統(tǒng)安全,這類指令只能用于操作系統(tǒng)或其他系統(tǒng)

軟件,不直接提供給用戶使用,主要用于系統(tǒng)資源的分配和

管理,包括改變系統(tǒng)的工作方式,檢測用戶的訪問權(quán)限,修

改虛擬存儲器管理的段表、頁表和完成人五的創(chuàng)建和切換等。

在某些用戶的計算機系統(tǒng)中,為了統(tǒng)一管理各種外部設(shè)備,

輸入輸出指令也作為特權(quán)指令,不允許用戶直接使用。需要

輸入輸出操作時,必須通過系統(tǒng)調(diào)用,經(jīng)由操作系統(tǒng)完成。

特權(quán)指令那個必須在核心態(tài)之星,核心態(tài)又叫做特權(quán)態(tài)、系

統(tǒng)態(tài)。實際上,CPU在核心態(tài)的下可以執(zhí)行指令系統(tǒng)的全集。

為了防止用戶系統(tǒng)中使用特權(quán)指令,用戶態(tài)下只能使用

除特權(quán)指令以外的指令,核心態(tài)下可以使用全部指令。所以

把用戶程序放在用戶態(tài)下進行,而操作系統(tǒng)中必須使用特權(quán)

指令的那部分程序在核心態(tài)下運行,保證了計算機系統(tǒng)的安

全可靠。從用戶態(tài)轉(zhuǎn)換為核心態(tài)的唯一途徑就是終端或異常。

4.系統(tǒng)調(diào)用產(chǎn)生的訪管中斷

程序員在編寫程序時,因要求操作系統(tǒng)提供服務(wù)而有意

識的使用“訪管指令”,從而導致程序中斷,這屬于一種自

愿性的中斷,所以又稱其為“訪管中斷”?!霸L管”中斷是由

訪管指令產(chǎn)生,程序員可以使用訪管指令中設(shè)置參數(shù),當CPU

執(zhí)行到訪管指令那個時,將訪管指令中的操作數(shù)存入到主存

中的約定單元,然后產(chǎn)生訪管中斷,引出操作系統(tǒng)來處理訪

管中斷中的具體要求。這種利用訪管指令來實現(xiàn)的指令成為

廣義指令。當初與用戶態(tài)的用戶程序使用訪管指令時,系統(tǒng)

根據(jù)該訪管指令的操作數(shù)執(zhí)行訪管中斷處理程序,訪管中斷

處理程序?qū)聪到y(tǒng)調(diào)用的操作數(shù)和參數(shù)轉(zhuǎn)到響應(yīng)的例行子

程序。完成服務(wù)功能后,退出中斷,返回到用戶程序斷點繼

續(xù)執(zhí)行。

第二章進程管理

進程管理是操作系統(tǒng)的核心內(nèi)容,也是每年必考的重點。

其中,進程概念、進程調(diào)度、信號量機制實現(xiàn)同步和互斥、

進程死鎖等更是重中之重,要求熟練掌握。此外,需要注意

的是:本章除了選擇題外還很容易考察綜合題,在最近三年

的考研綜合題有兩道題考察了本章的知識點。其中信號量實

現(xiàn)進程同步和互斥,進程調(diào)度算法和銀行家算法都是可能出

現(xiàn)的綜合題考點,需要讀者多加注意。

2.1、進程與線程

1、進程的概念和特征

(1)進程的概念

在多道程序環(huán)境下,允許多個程序并發(fā)執(zhí)行,此時他們

將失去封閉性,并具有間斷性和不可再現(xiàn)性的特征。為此引

入了進程的概念,以便更好地描述和控制程序的并發(fā)執(zhí)行,

實現(xiàn)操作系統(tǒng)的并發(fā)行和共享性。為此引入了進程的概念,

以便更好地描述和控制程序的并發(fā)執(zhí)行,實現(xiàn)操作系統(tǒng)的并

發(fā)性和共享性。

為了是參與并發(fā)執(zhí)行的程序能獨立的運行,必須為之配

置一個專門的數(shù)據(jù)結(jié)構(gòu),稱之為進程控制塊(process

controlblock),系統(tǒng)利用PCB來描述進程的基本情況和運

行狀態(tài),進而控制和管理進程。

相應(yīng)的,有程序段、相關(guān)數(shù)據(jù)段和PCB三部分構(gòu)成了進

程映像(進程實體)。所謂創(chuàng)建進程,實質(zhì)上是創(chuàng)建進程映

像中的PCB;而撤銷進程,實質(zhì)上是撤銷進程的PCBo指的

注意的是,進程影響是靜態(tài)的,晉城市動態(tài)的。

從不同的角度,進程可以有不同的定義,比較經(jīng)典的定

義有:

1)進程是程序的一次執(zhí)行過程

2)進程是一個程序及其數(shù)據(jù)在處理器上順序執(zhí)行時所發(fā)

生的活動。

3)進程是具有獨立功能的程序在一個數(shù)據(jù)集合上運行的

過程,他是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。

在引入了進程實體的概念后,我們可以吧傳統(tǒng)的操作系

統(tǒng)中的進程定義為:”進程是進程實體的運行過程,是系統(tǒng)

進行資源分配和調(diào)度的一個獨立單位”。

(2)進程的特征

進程是由多程序的并發(fā)執(zhí)行而引出的,他和程序是兩個

截然不同的概念。進程的基本特征是對比單個程序的順序執(zhí)

行提出的,也是對進程管理提出的基本要求。

1)動態(tài)性:進程是程序的一次執(zhí)行,他有著創(chuàng)建、活動、

暫停、終止等過程,具有一定的生命周奇奇,是動態(tài)

的產(chǎn)生、變化和消亡的。動杰性是進程最基本的特征。

2)并發(fā)性:至多個進程實體,同存于內(nèi)存中,能在一段

時間內(nèi)同時運行,并發(fā)性是進程的重要特征,同時也

是操作系統(tǒng)的重要特征,引入進程的目的就是為了是

程序能與去其他進程的程序并發(fā)執(zhí)行,以提高資源利

用率。

3)獨立性:指進程實體是一個能獨立運行、獨立獲得資

源和獨立接收調(diào)度的基本單位。范圍建立PCB的程序

都不能作為一個獨立的單位參與運行。

4)異步性:由于進程的相互制約,是進程具有執(zhí)行的問

斷性。也即進程按各自獨立的、不可預(yù)知的速度向前

推進。異步性會導致執(zhí)行結(jié)果不可再現(xiàn)性,為此,在

操作系統(tǒng)中必須配置相應(yīng)的進程同步機制。

5)結(jié)構(gòu)性:每個進程都配置一個PCB對其進行描述。從

結(jié)構(gòu)上來看,進程實體是由程序段、數(shù)據(jù)段和進程控

制端三部分組成的。

2、進程的狀態(tài)與轉(zhuǎn)換

進程在其生命周期內(nèi),由于系統(tǒng)中個進程之間的相互制

約關(guān)系以及系統(tǒng)的運行環(huán)境的變化,使的進程的狀態(tài)也在不

斷地發(fā)生著變化。通常進程有以下五種狀態(tài)。前三種是進程

的基本狀態(tài)。

1)運行狀態(tài):進程正在處理器上運行。在單處理

器的環(huán)境下,每一時刻最多只有一個進程處于

運行狀態(tài)。

2)就緒狀態(tài):進程已處于準備運行的狀態(tài),即進

程獲得了除CPU之外的一切所需資源,一旦得

到處理器即可運行。

3)阻塞狀態(tài):又稱為等待狀態(tài):進程正在等待某

一事件而暫停運行,如等待某資源為可用(不

包括處理器),或等待輸入輸出的完成。及時處

理器空閑,該進程也不能運行。

4)創(chuàng)建狀態(tài):進程正在被創(chuàng)建,尚未轉(zhuǎn)到就緒狀

態(tài)。創(chuàng)建進程通常需要多個步驟:首先申請一

個空白的PCB,并向PCB中填寫一些控制和管

理進程的信息;然后由系統(tǒng)為該進程分配運行

時所必須的資源;最后把該進程轉(zhuǎn)入到就緒狀

態(tài)。

5)結(jié)束狀態(tài):進程正在從系統(tǒng)中消失,這可能是

進程正常結(jié)束或其他原因中斷退出運行。當進

程需要結(jié)束運行時,系統(tǒng)首先必須置該進程為

結(jié)束狀態(tài),然后再進一步處理資源釋放和回收

工作。

注意區(qū)別就緒狀態(tài)和等待狀態(tài):就緒狀態(tài)是指進程僅缺

少處理器,只要活得處理器資源就立即執(zhí)行;而等待狀態(tài)是

指進程需要其他資源或等待某一事件,及時處理器空閑也不

能運行。

3、進程控制

進程控制的主要功能是對系統(tǒng)中所有進程實施有效地

管理,她具有創(chuàng)建新進程、撤銷已有進程、實現(xiàn)進程狀態(tài)轉(zhuǎn)

換等功能。在操作系統(tǒng)中,一般把進程控制用的程序段成為

原語,原語的特點是執(zhí)行期間不允許中斷,他是一個不可分

割的基本單位。

(1)進程的穿件

允許一個進程創(chuàng)建另一個進程。

操作系統(tǒng)創(chuàng)建一個新進程的過程如下(創(chuàng)建原語):

1)為新進程分配一個為我一個進程標示號,并申請一個

空白的PCB。

2)為進程分配資源,為新進程的程序和數(shù)據(jù),以及用戶

占分配必要的空間。

3)初始化PCB,主要包括初始化標識信息、初始化處理

器狀態(tài)信息和初始化處理器控制信息,以及設(shè)置進程

的空閑及。

4)如果進程就緒隊列能夠接納新進程,就將新進程插入

到就緒隊列,等待被調(diào)度運行。

(2)進程的終止

引起進程終止的時間主要有:正常結(jié)束、表示進程的任

務(wù)已經(jīng)完成和準備退出運行。異常結(jié)束是指進程在運行時,

發(fā)生了某種異常事件,是程序無法繼續(xù)運行,如:存儲區(qū)越

界、保護措、非法指令、特權(quán)指令錯、10故障等。外界干預(yù)

是指進程外界的請求而終止,如操作員或操作系統(tǒng)干預(yù)、父

進程請求和父進程終止。

操作系統(tǒng)終止進程的過程如下:(撤消原語)

1)根據(jù)被終止進程的標示符,檢索PCB,從中讀出該進

程的狀態(tài)。

2)若被終止進程處于執(zhí)行狀態(tài),立即終止該進程的執(zhí)行,

將處理器資源分配給其他進程。

3)若該進程還有子進程,則應(yīng)將其所有子進程終止。

4)將該進程所擁有的資源、或歸還給父進程或歸還給操

作系統(tǒng)。

5)將該PCB從所在隊列(鏈表)中刪除。

(3)進程的阻塞和喚醒

正在執(zhí)行的進程,猶豫期待的某些時間為發(fā)生,如請求

系統(tǒng)資源失敗、等待某種操作的完成、新數(shù)據(jù)尚未到達或無

心工作可做等,則由系統(tǒng)自動執(zhí)行阻塞原語,使自己由運行

狀態(tài)變?yōu)樽枞麪顟B(tài)。可見,進程的阻塞是進程自身的一種主

動行為。

阻塞原語的執(zhí)行過程為:找到將要被阻射進城的標識號

對應(yīng)的PCB,如果該進程為運行狀態(tài),則保護其現(xiàn)場,將其

狀態(tài)改為阻塞狀態(tài),停止運行,并把該PCB插入響應(yīng)時間的

等待隊列中去;若為就緒狀態(tài),則將其狀態(tài)改為阻塞狀態(tài),

把它溢出就緒隊列,插入到等待隊列中去。

當阻塞進程所期待的時間出現(xiàn)時,如它所啟動的10操

作已完成或其所期待的數(shù)據(jù)已到達,則有關(guān)進程(比如,提

供數(shù)據(jù)的進程),調(diào)用喚醒原語,將等待該事件的進程喚醒,

喚醒原語的執(zhí)行過程是:在該事件的等待隊列中找到相應(yīng)進

程的PCB,然后把該PCB插入到就緒隊列中,等待調(diào)度程序

調(diào)度。

需要注意的是,Block原語和Wakeup原語是一對作用剛

好相反的原語,必須成對使用。Block原語是由被阻塞進程

自我調(diào)用實現(xiàn)的,而Wakeup原語則是由一個與被喚醒進程

相合作或被其他相關(guān)進程調(diào)用實現(xiàn)的。

(4)進程的切換

無論什么樣的進程操作,都是在內(nèi)核執(zhí)行的。

進程切換是指當前正在運行的進程被轉(zhuǎn)換到其他狀態(tài)

后,再回到運行繼續(xù)執(zhí)行的過程,這個過程中,進程的運行

環(huán)境產(chǎn)生了實質(zhì)性的變化。進程切換的過程如下:

1)保存處理器上下文,包括程序計數(shù)器和其他寄存器。

2)更新PCB信息。

3)把進程的PCB移入相應(yīng)的隊列,如就緒、在某時間阻

塞等隊列。

4)選擇另一個進程執(zhí)行,并更新其PCBo更新內(nèi)存管理

的數(shù)據(jù)結(jié)構(gòu)。

5)恢復(fù)處理器的上下文。

4、進程的組織

進程是操作系統(tǒng)的資源分配和獨立運行的基本單位。

(1)進程控制塊

進程創(chuàng)建時,操作系統(tǒng)就新建一個PCB結(jié)構(gòu),它之后就

常駐內(nèi)存,任意時刻可以存取。在進程結(jié)束時刪除。PCB是

進程實體的一部分,是進程存在的唯一標識。

PCB主要包括:進程描述信息、進程控制和管理信息、

資源分配清單和處理器相關(guān)信息等。

在一個系統(tǒng)中,通常存在這許多進程,有的處于就緒狀

態(tài),有的處于阻塞狀態(tài),而且阻塞的原因各不相同。為了方

便進程的調(diào)度和管理,需要將各進程的PCB用適當?shù)姆椒ńM

織起來。目前,常用的組織方式有連接方式和索引方式兩種。

連接方式將同一狀態(tài)的PCB連接成一個隊列,不同狀態(tài)對應(yīng)

不同的隊列,也可以把處于阻塞狀態(tài)的進程的PCB,根據(jù)其

阻塞原因的不同,排成多個阻塞隊列。索引方式是將同一狀

態(tài)的進程組織在一個索引表中,索引表的表項只想相應(yīng)的

PCB,不同狀態(tài)對應(yīng)不同的索引表,如就緒索引表和阻塞索

引表等。

(2)程序段

程序段就是能北京城調(diào)度程度調(diào)度到CPU執(zhí)行的程序代

碼段。注意,程序可以被多個進程共享,就是說多個進程可

以運行同一個程序。

(3)數(shù)據(jù)段

一個進程的數(shù)據(jù)段,可以是進程對應(yīng)的程序加工處理的

原始數(shù)據(jù),也可以是程序執(zhí)行時產(chǎn)生的中間或最終結(jié)果。

5、進程的通信

進程通信就是進程之間的數(shù)據(jù)交換。PV操作時低級通信

方式2,高級通信方式是指以較高的效率傳輸大量數(shù)據(jù)的通

信方式。高級通信方法可分為共享存儲、消息傳遞和管道通

信三大類。

(1)共享存儲

在通信的進程之間存在著一款可以直接訪問的共享空

見,通過對這塊共享空間的讀寫操作時間進程之間的信息交

換。在共享存儲方法中,需要使用同步互斥工具。

需要注意的是:用戶進程空間一般都是相互獨立的,要

想讓兩個用戶進程共享空間,必須通過特殊系統(tǒng)調(diào)用實現(xiàn),

而進程內(nèi)的線程是自然共享進程空間的。

(2)消息傳遞

在消息傳遞系統(tǒng)中,進程間的數(shù)據(jù)交換,是以格式化的

小心Message為單位的。

(3)管道通信

管道通信是消息傳遞的一種特殊方式。。所謂管道,就

是用于連接一個讀進程和一個寫進程以實現(xiàn)他們之間通信

的一個共享文件,又名為pipe文件。向管道或共享文件提

供輸入的發(fā)送進程,以字符流的形勢將大量的數(shù)據(jù)送入寫管

道;而接收管道輸出的接收進城,則從管道中接受數(shù)據(jù)。為

了協(xié)調(diào)雙方的通信,關(guān)到極致必須他提供以下撒按方面的協(xié)

調(diào)能力:互斥、同步和確定對方存在。

6、線程概念和多線程模型

(1)線程的基本概念

引入進程的目的,是為了是多道程序能并發(fā)執(zhí)行,以提

高資源利用率和系統(tǒng)吞吐量;而引入線程,則是為了減小程

序在并發(fā)執(zhí)行時所付出的時空開銷,提高操作系統(tǒng)的并發(fā)性

能。

線程最直接的理解就是“輕量級進程”,它是一個基本

的CPU執(zhí)行單元,也是程序執(zhí)行流的最小單元,由線程ID、

程序計數(shù)器、寄存器集合和堆棧組成。線程是進程中的一個

實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位。進程只作為除

CPU以外的系統(tǒng)資源的分配單元,線程則作為處理器的分配

單元。線程也有就緒、阻塞和運行三種基本狀態(tài)。

(2)線程和進程的比較

1)調(diào)度:在引入線程的操作系統(tǒng)中,線程是獨立調(diào)度的

基本單位,進程是資源擁有的基本單位。

2)擁有資源:進程是擁有資源的基本單位,而線程不擁

有系統(tǒng)資源,單線程可以防偽其隸屬進程的系統(tǒng)資源。

3)并發(fā)性:在引入線程的操作系統(tǒng)中,不僅進程之間可

以并發(fā)執(zhí)行,線程之間也可以并發(fā)執(zhí)行,從而是操作

系統(tǒng)具有更好的并發(fā)性,大大提高了系統(tǒng)的吞吐量。

4)系統(tǒng)開銷:線程開銷極小。

5)地址空間和其他資源:進程的地址空間之間相互獨立,

同一進程的各線程間共享進程的資源,進程內(nèi)的線程

對進程外的其他進程不可見。

6)通信方面:進程間通信需要進程同步和互斥手段的輔

助,以保證數(shù)據(jù)的一致性,而線程間可以直接讀寫進

程數(shù)據(jù)段來進行通信。

(3)線程的屬性

在多線程操作系統(tǒng)中,八仙城作為獨立運行的基本單位。

此時的進程已不是一個基本可執(zhí)行的實體。線程的主要屬性

如下:

1)線程是一個輕型實體,它不擁有系統(tǒng)資源,但每個線

程都應(yīng)有一個唯一的標識符和一個線程控制塊,線程

控制塊記錄了線程執(zhí)行的寄存器和棧等現(xiàn)場情況。

2)不同的線程可以執(zhí)行相同的程序,即同一個服務(wù)程序

被不同的用戶調(diào)用時,操作系統(tǒng)為他們創(chuàng)建不同的線

程。

3)統(tǒng)一進程中的各個線程共享該進程所擁有的系統(tǒng)資源。

4)線城市處理器的獨立調(diào)度單位,多個線程是可以并發(fā)

執(zhí)行的。

5)一個縣城被創(chuàng)建后便開始了它的生命周期,直至終止,

線程在生命周期內(nèi)會經(jīng)歷等待態(tài)、就緒態(tài)和運行態(tài)等

各種狀態(tài)變化。

(4)線程的實現(xiàn)方法

線程的實現(xiàn)可以分為兩類:用戶級線程和內(nèi)核級線程。

(5)多線程模型

有些系統(tǒng)同時支持用戶線程和內(nèi)核線程,由此產(chǎn)生了不

同的多線程模型,即實現(xiàn)用戶級線程和內(nèi)核級線程的連接方

式。

1)多對一模型。多對一模型將多個用戶級線程映射到一

個內(nèi)核級線程。線程管理在用戶空間完成。

2)一對一模型。

3)多對多模型。

特點:克服了多對一模型的并發(fā)度不高的缺點,又克服

了一對一模型中一個用戶進程占用太多內(nèi)核級線程,開銷太

大的缺點。

2.2、線程的調(diào)度

1、調(diào)度的概念

(1)調(diào)度的基本概念

在多道程序系統(tǒng)中,進程的數(shù)量往往多于處理器的個數(shù),

進程爭用處理器的情況在所難免。處理器調(diào)度是對處理器進

行分配,就是從就緒隊列中,按照一定的算法,選擇一個進

程并將處理器分配給他運行,以實現(xiàn)進程的并發(fā)執(zhí)行。

處理器調(diào)度是多道程序操作系統(tǒng)的基礎(chǔ),它是操作系統(tǒng)

設(shè)計的核心問題。

(2)調(diào)度的層次

一個作業(yè)從提交開始知道完成,往往要經(jīng)歷一下三級調(diào)

度:

1)作業(yè)調(diào)度。作業(yè)調(diào)度又稱高級調(diào)度:其主要任務(wù)是

按一定的原則從外存上處于后備狀態(tài)的作業(yè)中挑選一個或

多個作業(yè),給他們分配內(nèi)存、輸入輸出設(shè)備等必要的資源。

并建立相應(yīng)的進程,以使他們獲得競爭處理器的權(quán)利。

多道批處理系統(tǒng)中大多配有作業(yè)調(diào)度,而其它系統(tǒng)中通

常不需要配置作業(yè)調(diào)度。作業(yè)調(diào)度的執(zhí)行頻率較低,通常為

幾分鐘一次。

2)中級調(diào)度。中級調(diào)度又稱內(nèi)存調(diào)度。引入中級調(diào)度

視為了提高內(nèi)存利用率和系統(tǒng)吞吐率,為此,應(yīng)使那些暫時

不能運行的進程調(diào)至外存等待,把此時的進程狀態(tài)稱為掛起

狀態(tài)。當他們已具備運行條件且內(nèi)存有稍有空閑時,由中級

調(diào)度來決定,吧外存上那些已具備運行條件的就緒進程,在

重新調(diào)入內(nèi)存,并修改其狀態(tài)為就緒狀態(tài),掛在就緒隊列上

等待。

3)進程調(diào)度。進程調(diào)度又稱為低級調(diào)度,其主要任務(wù)

是按照某種方法和策略從就緒隊列中選取一個進程,將處理

器分配給它。進程調(diào)度是操作系統(tǒng)中最基本的一中調(diào)度,在

一般操作系統(tǒng)中都不需配置進程調(diào)度。進程調(diào)度的頻率很高,

一般幾十毫秒一次。

(3)三級調(diào)度的聯(lián)系

作業(yè)調(diào)度從外存的后備隊列中選擇一批作業(yè)進入內(nèi)存,

為他們建立進程。這些進程被送入就緒隊列。進程調(diào)度從就

緒隊列中選出一個進程,并把其狀態(tài)改為運行狀態(tài),把CPU

分配給它。中級調(diào)度是位于高級調(diào)度和低級調(diào)度之間的一種

調(diào)度。為了提高內(nèi)存的利用率,系統(tǒng)將那些暫時不能運行的

進程掛起來。當內(nèi)存空間寬松式,通過中級調(diào)度選擇具備運

行條件的進程,將其喚醒。

2、調(diào)度的時機、切換與過程

進程調(diào)度和切換程序是操作系統(tǒng)內(nèi)核程序。當請求調(diào)度

的事件發(fā)生后,才可能會運行進程調(diào)度程序,當調(diào)度了新的

就緒進程后,才會去進行進程間的切換。

現(xiàn)在操作系統(tǒng)中,不能進行進程的調(diào)度與切換的情況有

以下幾種:

1)在處理中斷的過程中:中斷處理過程復(fù)雜,在

實現(xiàn)上很難做到,而且中斷處理時系統(tǒng)工作的

一部分,邏輯上不屬于某一進城,不應(yīng)被剝奪

處理器資源。

2)進程在操作系統(tǒng)內(nèi)核程序臨界區(qū)中:進入臨界

區(qū)后,需要獨占式的訪問共享數(shù)據(jù),理論上必

須加鎖,以防止其他并行程序的進入,在解鎖

前不應(yīng)該切換到其他進程,以加快該共享數(shù)據(jù)

的釋放。

3)其他需要完全屏蔽中斷的原子操作過程中:如

加鎖、解鎖、中斷現(xiàn)場保護、恢復(fù)等等源自操

作。在原子過程中,連中斷都要屏蔽,更不應(yīng)

該進行進程的切換。

如果在上述過程中發(fā)生了引起調(diào)度的條件,并不能馬上

進行調(diào)度和切換,應(yīng)置系統(tǒng)請求調(diào)度標志,知道上述過程結(jié)

束后才能進行相應(yīng)的調(diào)度和切換。

應(yīng)該進行進程的調(diào)度與切換的情況有:

1)當發(fā)生引起調(diào)度條件且當前進程無法繼續(xù)運行下去時,

可以馬上進行調(diào)度與切換。如果操作系統(tǒng)只在這種情

況下進行進程調(diào)度,就是非剝奪調(diào)度。

2)當中斷處理結(jié)束后或自陷處理結(jié)束后,返回被中斷進

程的用戶態(tài)程序執(zhí)行現(xiàn)場前,若置上請求調(diào)度標志,

即可馬上進行進程調(diào)度與切換。如果操作系統(tǒng)支持這

種情況下的運行調(diào)度程序,就實現(xiàn)了剝奪方式的調(diào)度。

進程切換往往在調(diào)度完成后立刻發(fā)生,它要求保存源進

程當前切換點的縣城信息,恢復(fù)被調(diào)度進程的現(xiàn)場信息?,F(xiàn)

場切換時,操作系統(tǒng)內(nèi)核將遠近程的現(xiàn)場信息推入到當前進

程的內(nèi)核對戰(zhàn)來保存他們,并更新堆棧指針。內(nèi)核完成從新

進程的內(nèi)核棧中裝入新進程的縣城信息、更新當前運行進程

空間指針、重設(shè)PC寄存器等相關(guān)工作之后,開始運行新的

進程。

3、進程調(diào)度方式

所謂進程調(diào)度方式是指當某一個進程正在處理器上執(zhí)

行時,若有某個更為重要或緊迫的進程需要處理,既有優(yōu)先

權(quán)更高的進程進入就緒隊列,此時應(yīng)如何分配處理器。通常

有一下兩種進程調(diào)度方式:

(1)非剝奪調(diào)度方式

非剝奪調(diào)度方式又稱為非搶占調(diào)度方式,是指當一個進

程正在處理器上執(zhí)行時,即使有某個更為重要或緊迫的進程

進入就緒狀態(tài),仍然讓正在執(zhí)行的進程繼續(xù)執(zhí)行,知道該進

程完成或發(fā)生某種時間而進入阻塞狀態(tài)時,才把處理器分配

給更為重要或緊迫的進程。

(2)剝奪調(diào)度方式

剝奪調(diào)度方式又稱為搶占方式,是指當一個進程正在處

理器上執(zhí)行時,若有某個更為重要或緊迫的進程需要使用處

理器,則立即暫停正在執(zhí)行的進程,將處理器分配給這個更

為重要或緊迫的進程。

“剝奪”不是一種任意性行為,必須遵循一定的原貝I:

優(yōu)先權(quán)原則,短進程優(yōu)先原則和時間片原則。

4、調(diào)度的基本準則

不同的調(diào)度算法具有不同的特性,在選擇調(diào)度算法時,

必須考慮算法所具有的特性。為了比較處理器調(diào)度算法的性

能,人們提出很多評價準則,下面介紹主要的幾種準則:

(1)CPU利用率

CPU是計算機系統(tǒng)中最重要的資源之一,所以應(yīng)盡可能

使CPU保持在忙狀態(tài),是這一資源利用率最高。

(2)系統(tǒng)吞吐量

系統(tǒng)吞吐量表示單位時間內(nèi)CPU完成作業(yè)的數(shù)量。長作

業(yè)需要消耗較長的處理器時間,因此會降低系統(tǒng)的吞吐量。

而對于短作業(yè),他們所需要消耗的處理器時間端,因此能提

高系統(tǒng)的吞吐量。調(diào)度算法和方式的不同,也會對系統(tǒng)的吞

吐量產(chǎn)生較大的影響。

(3)周轉(zhuǎn)時間

周轉(zhuǎn)時間是指從作業(yè)提交到作業(yè)完成所經(jīng)歷的時間,包

括作業(yè)等待、在就緒隊列中排隊、在處理器上運行以及進行

輸入輸出操作所花費的時間的總和。

作業(yè)的周轉(zhuǎn)時間二作業(yè)完成時間-作業(yè)提交時間

(4)等待時間

等待時間是指進程處于等處理器狀態(tài)時間之和,等待時

間越長,用戶滿意度越低。處理器調(diào)度算法實際上并不影響

作業(yè)執(zhí)行或輸入輸出操作時間,只影響作業(yè)在就緒隊列中等

待所花的時間。因此,衡量一個調(diào)度算法優(yōu)劣常常只需簡單

地考察等待時間。

(5)響應(yīng)時間

響應(yīng)時間是指從用戶提交請求到系統(tǒng)首次產(chǎn)生響應(yīng)所

有的時間。在交互式系統(tǒng)中,周轉(zhuǎn)時間不可能是最好的評測

準則,一般采用響應(yīng)時間作為衡量調(diào)度算法的重要準則之一。

從用戶的角度來看,調(diào)度策略應(yīng)盡量降低響應(yīng)時間,使響應(yīng)

時間處在用戶能夠接受的范圍之內(nèi)。

5、典型的調(diào)度算法

通常系統(tǒng)的設(shè)計目標不同,所采用的調(diào)度算法也不同。

在操作系統(tǒng)中存在多種調(diào)度算法,其中有的調(diào)度算法適用于

作業(yè)調(diào)度,有的調(diào)度算法適用于進程調(diào)度,有的調(diào)度算法兩

者都適用。下面介紹幾種常用的調(diào)度算法:

(1)FIFS先來先服務(wù)調(diào)度算法

特點:算法簡單,但是效率低;有利于長作業(yè),不利于

短作業(yè);有利于CPU繁忙型作業(yè)而不利于10繁忙型作業(yè)。

(2)SJF短作業(yè)優(yōu)先調(diào)度算法

短作業(yè)(進程)優(yōu)先調(diào)度算法是指對短作業(yè)禍端進程優(yōu)

先調(diào)度的算法。短作業(yè)優(yōu)先調(diào)度算法是從后備隊列中選擇一

個或若干個估計運算時間最短的作業(yè),將他們呢掉入內(nèi)存運

行。

SJF調(diào)度算法的缺點:

1)該算法對長作業(yè)不理。

2)該算法完全未考慮作業(yè)的緊迫程度

3)由于作業(yè)的長短只根據(jù)用戶所提供的估計執(zhí)行時

間而定的,而用戶又可能會有意或無意的縮短其作

業(yè)的估計運行時間,致使該算法不一定能真正做到

算作業(yè)優(yōu)先調(diào)度。

4)注意:SJF調(diào)度算法的平均等待時間、平均周轉(zhuǎn)時

間最少。

(3)優(yōu)先級調(diào)度算法

(4)高響應(yīng)比優(yōu)先調(diào)度算法

高響應(yīng)比優(yōu)先調(diào)度算法主要用于作業(yè)調(diào)度。同時考慮從

每個作業(yè)的等待時間和估計需要運行的時間。

(5)時間片輪轉(zhuǎn)調(diào)度算法

時間片輪轉(zhuǎn)調(diào)度算法主要適用于分時系統(tǒng)。

(6)多級反饋隊列調(diào)度算法

多級反饋隊列調(diào)度算法主要是時間片輪轉(zhuǎn)調(diào)度算法和

優(yōu)先級調(diào)度算法的綜合和發(fā)展。通過動態(tài)調(diào)整進程優(yōu)先級和

時間片大小,多級反饋隊列調(diào)度算法可以兼顧多方面的系統(tǒng)

目標。

2.3、進程同步

1、進程同步的基本概念

多道程序環(huán)境下,進程是并發(fā)執(zhí)行的,不同進程間存在

著不同的相互制約關(guān)系。為了協(xié)調(diào)進程之間的相互制約關(guān)系,

達到資源共享和進程協(xié)作,避免進程之間的沖突,引入了進

程同步的概念。

(1)臨界資源

多個進程可以共享系統(tǒng)中的各種資源,但其中許多資源

一次只能為一個進程所使用,我們把一次只允許一個進程使

用的資源成為臨界資源。

對臨界資源的訪問,必須互斥的進行。每個進程中,訪

問臨界資源的那段代碼成為臨界區(qū)。

為了保證臨界資源的正確使用,可以把臨界資源的訪問

過程分為四個部分。

1)進入?yún)^(qū)。為了進入臨界區(qū)使用臨界資源,在進入去要

檢查可否進入臨界區(qū)。

2)臨界區(qū)。進程中訪問臨界資源的那段代碼。

3)退出區(qū)。將正在訪問臨界區(qū)的標志清除。

4)剩余區(qū)。代碼中的其余部分。

do{

entrysection;

criticalsection;

exitsection;

remaindersection;

}while(true)

(2)同步

同步已成為直接制約關(guān)系,它是為完成某種任務(wù)而建立

的兩個或多個進程。這些進程因為需要在某些位置上協(xié)調(diào)他

們的工作次序而等待、傳遞信息所產(chǎn)生的制約關(guān)系。進程間

的直接制約關(guān)系就是它們之間的相互合作。

(3)互斥

互斥亦稱間接制約關(guān)系。當一個進程進入臨界區(qū)使用臨

界資源時,另一個進程必須等待,當占用臨界資源的進程退

出臨界區(qū)后,另一個進程才允許去訪問此臨界資源。

2、實現(xiàn)臨界區(qū)互斥的基本方法

(1)軟件實現(xiàn)方法

在進入?yún)^(qū)設(shè)置和檢查一些標志來表名是否有進程在臨

界區(qū)中,如果已有進程在臨界區(qū),則在進入?yún)^(qū)通過循環(huán)檢查

進行等待,進程離開臨界區(qū)后則在退出區(qū)修改標志。

(3)硬件實現(xiàn)方法

本節(jié)對硬件實現(xiàn)的具體理解對后面的信號量學習很有

幫助。計算機提供了特殊的硬件指令,允許對一個字中的內(nèi)

容進行檢測和修正,活著是對兩個字的內(nèi)容進行交換等。通

過硬件支持實現(xiàn)臨界段問題的低級方法或稱為元方法。

1)中斷屏蔽方法。當一個進程正在使用處理器執(zhí)行他的

臨界區(qū)代碼時,要防止去其他進程在進入其臨界區(qū)訪

問的最簡單方法就是禁止一切中斷的發(fā)生,或稱之為

屏蔽中斷、關(guān)中斷。因為CPU只有在發(fā)生中斷時引起

進程的調(diào)度和切換,這樣屏蔽中斷就能保證當前運行

進程將臨界區(qū)代碼順利的執(zhí)行完,然后再開中斷。

這種方法限制了處理器交替執(zhí)行程序的能力,因此執(zhí)行

的效率將會明顯降低。對內(nèi)核來說,當它執(zhí)行更新變量或列

表的幾條指令期間關(guān)中斷是很方便的,但將關(guān)中斷的權(quán)力交

給用戶則很不明智,若一個進程關(guān)中斷之后不再打開終端,

則系統(tǒng)可能會因此終止。

2)硬件愛你指令法。

TestAndSet指令:這條指令是原子操作。及執(zhí)行該代碼

是不允許被中斷。其功能是獨處制定標志后把該標志設(shè)置為

真。

BooleanTestAndSet(Boolean*lock){

Booleanold;

01d=*lock;

*lock=true;

Returnold;

Lock為每個臨界資源設(shè)置的共享布爾變量,true表示

正在被占用,false表示沒被占用。

WhileTestAndSet(&lock);

進程的臨界區(qū)代碼;

Lock=false;

進程剩余代碼;

Swap指令:該指令的功能是交換兩個字的內(nèi)容。

Swap(Boolean*a,Boolean*b){

Booleantemp;

Temp=*a;

*a二*b;

*b=temp;

}

以上對TestAndSet和Swap指令僅僅是功能實現(xiàn),并非

軟件實現(xiàn)定義,事實上他們是由硬件邏輯直接實現(xiàn)的,不會

被中斷。

硬件方法優(yōu)點:使用與任意數(shù)目的進程,不管是單處理

器還是多處理器:簡單、容易驗證其正確性??梢灾С诌M程

內(nèi)有多個臨界區(qū),只需要為每個臨界區(qū)設(shè)立一個布爾變量。

硬件方法的缺點:進程等待進入臨界區(qū)時要耗費處理器

時間,不能實現(xiàn)讓權(quán)等待。從等待進程中隨機選擇一個進入

臨界區(qū),有的進程可能一直選不上,從而導致“饑餓”現(xiàn)象。

3、信號量

信號量機構(gòu)是一種功能較強的機制,可用來解決互斥與

同步的問題,它只能被兩個標準原語wait和signal來訪問,

也可以記作p操作和v操作。

原語是指完成某種功能且不被分割不被中斷執(zhí)行的操

作序列,有時也成為原子操作,通??捎糜布韺崿F(xiàn)完成某

種功能的不可分割執(zhí)行特性。

(1)整形信號量

整形信號量被定義為一個用于表示資源個數(shù)的整型量So

(2)記錄性信號量

記錄性信號量是不存在“忙等”現(xiàn)象的進程同步機制。

除了需要一個用于代表資源數(shù)的整型變量value外,再增加

一個進程鏈表L,用于連接所有等待該資源的進程,記錄型

信號量是由于采用了記錄型的數(shù)據(jù)結(jié)構(gòu)得名。記錄型信號量

可描述為:

Typedefstruct{

Intvalue;

Structprocess*L;

}semaphore;

Wait操作,表示進程請求一個該類資源,當S.valueVO

時,表示該類資源已分配完畢,因此進程調(diào)用block原語,

進行自我阻塞,放棄處理器,并插入到S.L中,可見該機制

遵循了“讓權(quán)等待”的原則。Signal操作,表示進程釋放

一個資源,使系統(tǒng)中可供分配資源數(shù)增加一,故S.value++o

若加1后仍是S.value〈二0,則表示S.L中仍有等待該資源的

進程被阻塞,故還應(yīng)調(diào)用wakeup原語,將S.L中的第一個

等待進程喚醒。

(3)利用信號量實現(xiàn)同步

信號量機構(gòu)能用于解決進程間各種同步問題。

(4)利用信號量實現(xiàn)互斥

信號量機構(gòu)能很方便的解決進程互斥問題。

互斥的實現(xiàn)是不同進程對同一信號量進行P操作和V操

作,一個進程在成功地對信號量執(zhí)行了P操作后進入臨界區(qū),

并在退出臨界區(qū)后,由該進程本身對該信號量執(zhí)行V操作,

表示當前沒有進城進入臨界區(qū),可讓其他進程進入。

(5)利用信號量實現(xiàn)前驅(qū)關(guān)系

信號量也可以用來描述程序之間或者語句之間的前驅(qū)

關(guān)系。

(6)分析進程同步或互斥問題的方法步驟

1)關(guān)系分析。找出問題中的進程數(shù),并且分析它們之間

的同步和互斥關(guān)系。同步、互斥、前去關(guān)系直接按照

上面例子中的經(jīng)典犯事改寫。

2)整體思路。找出解決問題的關(guān)鍵點,并且根據(jù)做過的

題目找出解決的思路。根據(jù)進程的操作流程確定P操

作、V操作的大致順序。

3)設(shè)置信號量。根據(jù)上面兩步,設(shè)置需要的信號量,確

定初值,完善整理。

4、管程

(1)管程的定義

管程是一組數(shù)據(jù)以及定義在這組數(shù)據(jù)之上的對這組數(shù)

據(jù)的操作組成的軟件模塊,這組操作能初始化并改變管程中

的數(shù)據(jù)和同步進程。

(2)管程的組成

1)局部與管程的共享結(jié)構(gòu)數(shù)據(jù)說明

2)對該數(shù)據(jù)結(jié)構(gòu)進行操作的一組過程

3)對局部于管程的共享數(shù)據(jù)設(shè)置初始值的語句

(3)管程的基本特性

1)局部于管程的數(shù)據(jù)只能被局部于管程內(nèi)的過程訪問。

2)一個進程只有通過調(diào)用管程內(nèi)的過程才能進入廣成

訪問的共享數(shù)據(jù)。

3)每次僅允許一個進程在管程內(nèi)執(zhí)行某個內(nèi)部過程。

由于管程是一個語言成分,所以管程的互斥訪問完全由

編譯程序在編譯時自動添加,無需程序員關(guān)注,而且保證正

確。

5、經(jīng)典同步問題

(1)生產(chǎn)者-消賽者問題

問題描述:一組生產(chǎn)者進程和一組消賽者進程共享一個

初始為空、大小為n的緩沖區(qū),只有緩沖區(qū)沒滿時,生產(chǎn)者

才能把消息放入到緩沖區(qū),否則必須等待;只有緩沖區(qū)不為

空時,消費者才能從中取出消息,否則必須等待。由于緩沖

區(qū)是臨界資源,它只允許一個生產(chǎn)者放入消息,或一個消費

者從中取出消息。

問題分析:

1)關(guān)系分析。生產(chǎn)者和消費者對緩沖區(qū)互斥訪問是互

斥關(guān)系,同時生產(chǎn)者和消費者又是一個相互協(xié)作的關(guān)系,只

有生產(chǎn)者生產(chǎn)之后,消費者才能消賽,他們也是同步關(guān)系。

2)整理思路。這里比較簡單,只有生產(chǎn)者和消賽者兩

個進程,正好是這兩個進程存在著互斥關(guān)系和同步關(guān)系。那

么需要解決的是胡吃喝同步PV操作的位置。

3)信號量的設(shè)置。信號量mutex作為互斥信號量,它

用于控制互斥訪問緩沖池,互斥信號量初始為1;信號量full

用于記錄當前緩沖池中“滿”緩沖區(qū)數(shù),初值為0.信號量

empty用于記錄當前緩沖池中空緩沖區(qū),初值為n。

下面再看一個較為復(fù)雜的生產(chǎn)者-消費者問題:

問題描述:桌子上有一只盤子,每次孩子能向其中放入

一個水果。爸爸專向盤子中放入蘋果,媽媽專向盤子中放入

橘子,女兒專等吃盤子中的蘋果,兒子專等吃盤子中的橘子。

只有盤子為空時,爸爸或媽媽就可向盤子中放一只水果2;

僅當盤子中有自己需要的水果時,兒子或女兒可以從盤子中

取出。

問題分析:

1)關(guān)系分析。這里的關(guān)系略微復(fù)雜一些,首先由每次

只能向其中放入一只水果可知爸爸和媽媽是互斥關(guān)系。爸爸

和女兒、媽媽和兒子是同步關(guān)系,而且這兩對進城必須連起

來,兒子和女兒之間沒有互斥和同步關(guān)系,因為他們是選擇

條件執(zhí)行,不可能并發(fā)。

2)整理思路。這里有4個進程,實際上可以抽象為兩

個生產(chǎn)者和兩個消費者被連接到大小為1的緩沖區(qū)上。

3)信號量設(shè)置。首先設(shè)置信號量plate為互斥信號量,

表示是否允許想盤子放水果,初值為1,表示允許放入,且

只允許放一只。信號量apple表示盤子里是否有蘋果,初值

為0,表示盤子中無2蘋果;信號量orange表示盤子中是否

有橘子,初始量為0,表示盤子中無橘子。

(2)讀者-寫著問題

問題描述:有讀者和寫者兩組并發(fā)進程,共享一個文件,

當兩個以上的讀進程同事訪問共享數(shù)據(jù)時不會產(chǎn)生副作用,

但若某個寫進程和其他進程(讀進程或?qū)戇M程)同時訪問共

享數(shù)據(jù)時則可能導致數(shù)據(jù)不一致的錯誤。因此要求:1)允

許多個讀者同時對文件執(zhí)行讀操作;2)只允許一個寫者往

文件中寫信息;3)任一寫者在完成寫操作之前不允許其他

讀者或?qū)懻吖ぷ鳎?)寫者執(zhí)行完寫操作前,應(yīng)讓已有的讀

者或?qū)懻呷客顺觥?/p>

問題分析:

1)關(guān)系分析。由題目分析讀者和寫者是互斥的,寫者

和寫者也是互斥的,而讀者和讀者不存在互斥關(guān)系。

2)整理思路。兩個進程,即讀者和寫者。寫者比較簡

凡,它和任何進程互斥,用互斥信號量p操作、v操作即可

解決。讀者的問題比較復(fù)雜,它必須實現(xiàn)與寫著互斥的關(guān)系,

還要實現(xiàn)和其他讀者同步的關(guān)系。因此,緊急簡單的一對PV

操作時無法解決的。那么在這里用到了一個計數(shù)器,用它來

判斷當前是否有讀者讀文件。當有讀者的時候,寫著是無法

寫文件的,此時讀者會一直占用文件,當沒有讀者的時候,

寫者才可以寫文件。同事這里不同讀者對計數(shù)器的訪問也是

互斥的。

3)信號量的設(shè)置。首先設(shè)置信號量count為計數(shù)器,

用來記錄當前讀者數(shù)量,初值為0;設(shè)置mutex為互斥信號

量,用于保護更新count變量時的互斥;設(shè)置互斥信號量rw

用于保證讀者和寫者的互斥訪問。

(3)哲學家進餐問題

問題描述:一張圓桌上坐著五個哲學家,每兩個哲學家

之間的桌子上擺著一根筷子,桌子的中間是一碗米飯。哲學

家們傾注畢生精力用于思考和進餐,哲學家在思考是,并不

影響其他人。只有當哲學家饑餓的時候,才視圖拿起左右兩

根筷子。如果筷子已經(jīng)在他人手上,則需等待。饑餓的哲學

家只有同時拿到了兩根筷子才可以開始進餐,當今參悟你比

猴,放下筷子繼續(xù)思考。

問題分析:

1)關(guān)系分析。五個哲學家與左右鄰居對其中的筷子的

訪問是互斥關(guān)系。

2)整理思路。顯然這五個進程,要解決的問題有兩個:

一個是讓他們同時拿起兩個筷子;而是對每個哲學家的動作

執(zhí)行規(guī)則,避免饑餓或者死鎖現(xiàn)象發(fā)生。

3)信號量設(shè)置。定義互斥信號組chopsticks[5]

={1,1,1,1,1}用于對五個筷子的互斥訪問。

對哲學家按順序0~4編號,哲學家i左邊的筷子編號為

i,哲學家右邊的筷子編號為(i+1)%5O

(4)吸煙者問題

問題描述:假設(shè)一個系統(tǒng)有三個吸煙者進程和一個供應(yīng)

者進程。每個抽煙者不停的卷煙并抽調(diào)他,但是要卷起并抽

掉一支煙,抽煙者必須要有三種材料:煙草、紙和膠水。三

個抽煙者中,第一個有煙草,第二個有紙,第三個有膠水。

供應(yīng)者進程無線地提供提供三種材料。

供應(yīng)者每次將兩種材料放到桌子上,擁有剩下那種材料

的抽煙者卷一根煙并抽掉它,并給供應(yīng)者一個信號告訴完成

了,供應(yīng)者就會放另外兩種材料在桌子上,這種過程一直重

復(fù)。

問題分析:

1)關(guān)系分析。供應(yīng)者與三個抽煙者分別是同步關(guān)系。

由于供應(yīng)者無法同時滿足兩個或兩個以上的抽煙者,三個抽

煙者對抽煙這個動作是互斥關(guān)系。

2)整理思路。顯然這里有四個進程。供應(yīng)者作為生產(chǎn)

者向三個抽煙者提供材料。

3)信號量設(shè)置。信號量offerl、offer2>offer3分別

表示煙草和紙組合的資源、煙草和膠水組合的資源、紙和膠

水組合的資源。信號量finish用于互斥進行抽煙動作。

2.4、死鎖

1、死鎖的概念

(1)死鎖的定義

在多道程序系統(tǒng)中,由于多個進程的并發(fā)執(zhí)行,改善了

系統(tǒng)資源的利用率并提高了系統(tǒng)的處理能力。然而,多個進

程的并發(fā)執(zhí)行也帶來了新的問題一一死鎖。所謂死鎖是指多

個進程因競爭資源而造成的一種僵局,若無外力作用,這些

進程都將無法向前推進。

(2)死鎖產(chǎn)生的原因

1)系統(tǒng)資源的競爭

通常系統(tǒng)中擁有的不可剝奪資源,其數(shù)量不足一滿足多

個進程運行的需要,似的進程在運行過程中會因爭奪資源而

陷入僵局。只有對不可剝奪資源的競爭才可能產(chǎn)生死鎖,對

可剝奪資源的競爭是不會引起死鎖的。

2)進程推進順序非法

進程在運行過程中,請求和釋放資源的順序不當,同樣

會導致死鎖。

信號量使用不當也會造成死鎖。進程間相互等待對方發(fā)

來的消息,結(jié)果也會造成某些進程間無法繼續(xù)向前推進。

3)死鎖產(chǎn)生的必要條件

產(chǎn)生死鎖必須同時滿足以下四個條件,只要其中任一個

條件不成立,死鎖就不會發(fā)生。

互斥條件:進程要求對所分配的資源進行排他性控制,

即在一段時間內(nèi)某資源僅為一個進程所占用。此時若有其他

進程請求該資源,則請求進程只能等待。

不剝奪條件:進程所獲得的資源在未使用完畢之前,不

能被其他進程強行奪走,即只能由獲得該資源的進程自己來

釋放。

請求和保持條件:進程已經(jīng)保持了至少一個資源,但又

提出了新的資源請求,而該資源已被其他進程占有,此時請

求進程被阻塞,但對自己已獲得的資源保持不放。

循環(huán)等待條件:存在一種進程資源的循環(huán)等待鏈,連中

每一個進程已獲得的資源同時被鏈中下一個進程所請求。

2、死鎖的處理策略

為使系統(tǒng)不發(fā)生死鎖,必須設(shè)法破壞產(chǎn)生死鎖的四個必

要條件之一,或者允許死鎖產(chǎn)生,但當死鎖發(fā)生時能檢測出

思索,并有能力實現(xiàn)恢復(fù)。

死鎖處理策略有:

(1)死鎖預(yù)防。

破壞死鎖的四個必要條件之一。

(2)死鎖避免。

用某種方式防止系統(tǒng)進入不安全狀態(tài)。

(3)死鎖的檢測及解除

允許進程在運行過程中發(fā)生死鎖,通過系統(tǒng)的檢測機構(gòu)

及時地檢測出死鎖的發(fā)生,然后采取某種措施解除死鎖。

3、死鎖預(yù)防

防止死鎖發(fā)生只需要破壞死鎖產(chǎn)生的四個必要條件之

一即可。

(1)破壞互斥條件

允許系統(tǒng)資源都能共享使用。(不太可行)

(2)破壞不剝奪條件

當一個以保持了某些不可剝奪資源的進程,請求新的資

源時得不到滿足,它必須釋放已經(jīng)保持的所有資源,待以后

需要時再重新申請。這種方法常用于狀態(tài)易于保存和恢復(fù)的

資源,如CPU的寄存器及內(nèi)存資源,一般不能用于打印機之

類的資源。

(3)破壞請求和保持條件

采用預(yù)先靜態(tài)分配方法,即進程在運行前一次申請完

他所需要的全部資源,在他的資源未滿足前,不把它投入運

行。一旦運行后,這些資源就一直歸它所有,也不再提出其

他資源請求,這樣就可以保證系統(tǒng)不會發(fā)生死鎖。

這種方式實現(xiàn)簡單,但缺點也顯而易見,系統(tǒng)資源被嚴

重浪費,其中有些資源可能僅在運行初期或末期才使用,甚

至根本不使用。而且還會導致“饑餓”現(xiàn)象,當由于個別資

源長期被個別資源占用時,將只是等待該資源的進程遲遲不

能開始運行。

(4)破壞循環(huán)等待條件

為了破壞循環(huán)等待條件,可采用順序資源分配法。首先

給系統(tǒng)中的資源編號,規(guī)定每個進程,必須按編號遞增的順

序請求資源,同類資源一次申請完。也就是說,只要進程提

出申請分配資源,則該進程在以后的資源申請中,只能申請

編號比之前大的資源。

4、死鎖避免

避免思索同樣是屬于事先預(yù)防的策略,但并不是事先采

取某種限制措施破壞死鎖的必須條件,而是在資源動態(tài)分配

過程中,防止系統(tǒng)進入不安全狀態(tài),以避免死鎖發(fā)生。這種

方法所施加的限制條件較弱,可以獲得較好的系統(tǒng)性能。

(1)系統(tǒng)安全狀態(tài)

避免死鎖的方法中,允許進程動態(tài)的申請資源,但系統(tǒng)

在進行資源分配前,應(yīng)先計算此次資源分配的安全性。若此

次分配不會導致系統(tǒng)進入不安全狀態(tài),則將資源你分配給進

程,否則,讓進程等待。

所謂安全狀態(tài),是指系統(tǒng)能按某種進程推進順序,為每

個進程分配其所需的資源,直至滿足每個進程對資源的最大

需求,是每個進程都可以順序的完成。此時成PlP2P3oo為

安全序列,如果系統(tǒng)無法找到一個安全序列,則稱系統(tǒng)處于

不安全狀態(tài)。

并非所有的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論