[TOC]
### 1. 操作系統的基本概念
在信息化時代,軟件被稱為計算機系統的靈魂。而作為軟件核心的操作系統,已經與現代計算機系統密不可分、融為一體。計算機系統自下而上可粗分為四個部分:硬件、操作系 統、應用程序和用戶(這里的劃分與計算機組成原理的分層不同)。操作系統管理各種計算機硬件,為應用程序提供基礎,并充當計算機硬件與用戶之間的中介。
硬件,如中央處理器、內存、輸入/輸出設備等,提供了基本的計算資源。應用程序, 如字處理程序、電子制表軟件、編譯器、網絡瀏覽器等,規定了按何種方式使用這些資源來解決用戶的計算問題。操作系統控制和協調各用戶的應用程序對硬件的分配與使用。
在計算機系統的運行過程中,操作系統提供了正確使用這些資源的方法。
綜上所述,**操作系統(Operating System, OS)是指控制和管理整個計算機系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源的分配,以提供給用戶和其他軟件方便的接口和環境的程序集合。**計算機操作系統是隨著計算機研究和應用的發展逐步形成并發展起來的,它是計算機系統中最基本的系統軟件。
### 2. 操作系統的特征
操作系統是一種系統軟件,但與其他的系統軟件和應用軟件有很大的不同,它有自己的特殊性即基本特征。操作系統的基本特征包括并發、共享、虛擬和異步。這些概念對理解和掌握操作系統的核心至關重要,將一直貫穿于各個章節中。
#### **并發(Concurrence)**
并發是指兩個或多個事件在同一時間間隔內發生。操作系統的并發性是指計算機系統中同時存在多個運行著的程序,因此它具有處理和調度多個程序同時執行的能力。在操作系統 中,引入進程的目的是使程序能并發執行。
注意同一時間間隔(并發)和同一時刻(并行)的區別。在多道程序環境下,一段時間內,宏觀上有多道程序在同時執行,而在每一時刻,單處理機環境下實際僅能有一道程序執行,故微觀上這些程序還是在分時地交替執行。橾作系統的并發性是通過分時得以實現的。
注意,并行性是指系統具有可以同時進行運算或操作的特性,在同一時刻完成兩種或兩種以上的工作。并行性需要有相關硬件的支持,如多流水線或多處理機硬件環境。
#### **共享(Sharing)**
資源共享即共享,是指系統中的資源可供內存中多個并發執行的進程共同使用。共享可分為以下兩種資源共享方式:
1) 互斥共享方式
系統中的某些資源,如打印機、磁帶機,雖然它們可以提供給多個進程使用,但為使所打印或記錄的結果不致造成混淆,應規定在一段時間內只允許一個進程訪問該資源。
為此,當進程A訪問某資源時,必須先提出請求,如果此時該資源空閑,系統便可將之分配給進程A使用,此后若再有其他進程也要訪問該資源時(只要A未用完)則必須等待。僅當進程A訪問完并釋放該資源后,才允許另一進程對該資源進行訪問。我們把這種資源共享方式稱為互斥式共享,而把在一段時間內只允許一個進程訪問的資源稱為臨界資源或獨占資源。計算機系統中的大多數物理設備,以及某些軟件中所用的棧、變量和表格,都屬于臨界資源,它們都要求被互斥地共享。
2) 同時訪問方式
系統中還有另一類資源,允許在一段時間內由多個進程“同時”對它們進行訪問。這里所謂的“同時”往往是宏觀上的,而在微觀上,這些進程可能是交替地對該資源進行訪問即 “分時共享”。典型的可供多個進程“同時”訪問的資源是磁盤設備,一些用重入碼編寫的文件也可以被“同時”共享,即若干個用戶同時訪問該文件。
并發和共享是操作系統兩個最基本的特征,這兩者之間又是互為存在條件的:
資源共享是以程序的并發為條件的,若系統不允許程序并發執行,則自然不存在資源共享問題;
若系統不能對資源共享實施有效的管理,也必將影響到程序的并發執行,甚至根本無法并發執行。
#### **虛擬(Virtual)**
虛擬是指把一個物理上的實體變為若干個邏輯上的對應物。物理實體(前者)是實的,即實際存在的;而后者是虛的,是用戶感覺上的事物。用于實現虛擬的技術,稱為虛擬技術。在操作系統中利用了多種虛擬技術,分別用來實現虛擬處理器、虛擬內存和虛擬外部設備等。
在虛擬處理器技術中,是通過多道程序設計技術,讓多道程序并發執行的方法,來分時使用一個處理器的。此時,雖然只有一個處理器,但它能同時為多個用戶服務,使每個終端用戶都感覺有一個中央處理器(CPU)在專門為它服務。利用多道程序設計技術,把一個物理上的CPU虛擬為多個邏輯上的CPU,稱為虛擬處理器。
類似地,可以通過虛擬存儲器技術,將一臺機器的物理存儲器變為虛擬存儲器,以便從邏輯上來擴充存儲器的容量。當然,這時用戶所感覺到的內存容量是虛的。我們把用戶所感覺到的存儲器(實際是不存在的)稱為虛擬存儲器。
還可以通過虛擬設備技術,將一臺物理I/O設備虛擬為多臺邏輯上的I/O設備,并允許每個用戶占用一臺邏輯上的I/O設備,這樣便可以使原來僅允許在一段時間內由一個用戶訪問的設備(即臨界資源),變為在一段時間內允許多個用戶同時訪問的共享設備。
因此,操作系統的虛擬技術可歸納為:時分復用技術,如處理器的分時共享;空分復用技術,如虛擬存儲器(注:學到后續內容再慢慢領悟)。
#### **異步(Asynchronism)**
在多道程序環境下,允許多個程序并發執行,但由于資源有限,進程的執行不是一貫到底,而是走走停停,以不可預知的速度向前推進,這就是進程的異步性。
異步性使得操作系統運行在一種隨機的環境下,可能導致進程產生與時間有關的錯誤 (就像對全局變量的訪問順序不當會導致程序出錯一樣)。但是只要運行環境相同,操作系統必須保證多次運行進程,都獲得相同的結果。這在第2章中會深入討論。
### 3. 操作系統的目標和功能
為了給多道程序提供良好的運行環境,操作系統應具有以下幾方面的功能:處理機管理、 存儲器管理、設備管理和文件管理。為了方便用戶使用操作系統,還必須向用戶提供接口。同時操作系統可用來擴充機器,以提供更方便的服務、更高的資源利用率。
操作系統作為計算機系統資源的管理者
1) 處理機管理
在多道程序環境下,處理機的分配和運行都以進程(或線程)為基本單位,因而對處理機的管理可歸結為對進程的管理。并發時在計算機內同時運行多個進程,所以,進程何時創建、何時撤銷、如何管理、如何避免沖突、.合理共享就是進程管理的最主要的任務。進程管理的主要功能有:進程控制、進程同步、進程通信、死鎖處理、處理機調度等。
2) 存儲器管理
存儲器管理是為了給多道程序的運行提供良好的環境,方便用戶使用以及提高內存的利用率,主要包括內存分配、地址映射、內存保護與共享和內存擴充等功能。
3) 文件管理
計算機中的信息都是以文件的形式存在的,操作系統中負責文件管理的部分稱為文件系統。文件管理包括文件存儲空間的管理、目錄管理及文件讀寫管理和保護等。
4) 設備管理
設備管理的主要任務是完成用戶的I/O請求,方便用戶使用各種設備,并提高設備的利用率,主要包括緩沖管理、設備分配、設備處理和虛擬設備等功能。
操作系統作為用戶與計算機硬件系統之間的接口
為方便用戶使用計算機,操作系統還提供了用戶接口。操作系統提供的接口主要分為兩類?? 一類是命令接口,用戶利用這些操作命令來組織和控制作業的執行;另一類是程序接口,編程人員可以使用它們來請求操作系統服務。
1) 命令接口
使用命令接口進行作業控制的主要方式有兩種,即聯機控制方式和脫機控制方式。按作業控制方式的不同,可以將命令接口分為聯機命令接口和脫機命令接口。
聯機命令接口又稱交互式命令接口,適用于分時或實時系統的接口。它由一組鍵盤操作命令組成。用戶通過控制臺或終端輸入操作命令,向系統提出各種服務要求。用戶每輸入完一條命令,控制權就轉入操作系統的命令解釋程序,然后由命令解釋程序對輸入的命令解釋并執行,完成指定的功能。之后,控制權又轉回到控制臺或終端,此時用戶又可以輸入下一條命令。
脫機命令接口又稱批處理命令接口,即適用于批處理系統,它由一組作業控制命令(或稱作業控制語句)組成。脫機用戶不能直接干預作業的運行,應事先用相應的作業控制命令穹成一份作業操作說明書,連同作業一起提交給系統。當系統調度到該作業時,由系統中的命令解釋程序對作業說明書上的命令或作業控制語句遂條解釋執行,從而間接地控制作業的運行。
2) 程序接口
程序接口由一組系統調用命會(簡稱系統調用,也稱廣義指令)組成。用戶通過在程序中使用這些系統調用命令來請求操作系統為其提供服務。用戶在程序中可以直接使用這組系統調用命令向系統提出各種服務要求,如使用各種外部設備,進行有關磁盤文件的操作,申請分配和回收內存以及其他各種控制要求。
而當前最為流行的是圖形用戶界面(GUI)即圖形接口,用戶通過鼠標和鍵盤,在圖形界面上單擊或使用快捷鍵就能很方便地使用操作系統。有些系統提供了上述三種接口,但 GUI 最終是通過調用程序接口實現的,嚴格地說它不屬于操作系統的一部分。
#### 操作系統用做擴充機器
沒有任何軟件支持的計算機稱為裸機,它僅構成計算機系統的物質基礎,而實際呈現在用戶面前的計算機系統是經過若干層軟件改造的計算機。裸機在最里層,它的外面是操作系統,由操作系統提供的資源管理功能和方便用戶的各種服務功能,將裸機改造成功能更強、 使用更方便的機器,通常把覆蓋了軟件的機器稱為擴充機器,又稱之為虛擬機。
### 4. 操作系統的發展與分類
#### 手工操作階段(此階段無操作系統)
用戶在計算機上算題的所有工作都要人工干預,如程序的裝入、運行、結果的輸出等。隨著計算機硬件的發展,人機矛盾(速度和資源利用)越來越大,必須尋求新的解決辦法。
手工操作階段有兩個突出的缺點:
用戶獨占全機。不會出現因資源已被其他用戶占用而等待的現象,但資源利用率低。
CPU等待手工操作,CPU的利用不充分。
唯一的解決辦法就是用高速的機器代替相對較慢的手工操作來對作業進行控制。
#### 批處理階段(操作系統開始出現)
為了解決人機矛盾及CPU和I/O設備之間速度不匹配的矛盾,出現了批處理系統。它按發展歷程又分為單道批處理系統、多道批處理系統(多道程序設計技術出現以后)。
1) 單道批處理系統
系統對作業的處理是成批進行的,但內存中始終保持一道作業。該系統是在解決人機矛盾和CPU與I/O設備速率不匹配的矛盾中形成的。單道批處理系統的主要特征如下:
自動性。在順利的情況下,在磁帶上的一批作業能自動地逐個依次運行,而無需人工干預。 '
順序性。磁帶上的各道作業是順序地進入內存,各道作業的完成順序與它們進入內存的順序,在正常情況下應完全相同,亦即先調入內存的作業先完成。
單道性。內存中僅有一道程序運行,即監督程序每次從磁帶上只調入一道程序進入內存運行,當該程序完成或發生異常情況時,才換入其后繼程序進入內存運行。
此時面臨的問題是:每次主機內存中僅存放一道作業,每當它運行期間(注意這里是“運行時”,并不是“完成后”)發出輸入/輸出請求后,高速的CPU便處于等待低速的I/O完成狀態。為了進一步提高資源的利用率和系統的吞吐量,引入了多道程序技術。
2) 多道批處理系統
多道程序設計技術允許多個程序同時進入內存并運行。即同時把多個程序放入內存,并允許它們交替在CPU中運行,它們共享系統中的各種硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便立即轉去運行另一道程序。它沒有用某些機制提高某一技術方面的瓶頸問題,而是讓系統的各個組成部分都盡量去“忙”,花費很少時間去切換任務,達到了系統各部件之間的并行工作,使其整體在單位時間內的效率翻倍。
多道程序設計的特點有:
多道:計算機內存中同時存放多道相互獨立的程序。
宏觀上并行:同時進入系統的多道程序都處于運行過程中,即它們先后開始了各自的運行,但都未運行完畢。
微觀上串行:內存中的多道程序輪流占有CPU,交替執行。
多道程序設計技術的實現需要解決下列問題:
如何分配處理器。
多道程序的內存分配問題。
I/O設備如何分配。
如何組織和存放大量的程序和數據,以便于用戶使用和保證其安全性與一致性。
在批處理系統中釆用多道程序設計技術,就形成了多道批處理操作系統。該系統把用戶提交的作業成批地送入計算機內存,然后由作業調度程序自動地選擇作業運行。
優點是資源利用率高,多道程序共享計算機資源,從而使各種資源得到充分利用;系統吞吐量大,CPU和其他資源保持“忙碌”狀態。缺點是用戶響應的時間較長。不提供人機交互能力,用戶既不能了解自己程序的運行情況,也不能控制計算機。
#### 分時操作系統
在操作系統中釆用分時技術就形成了分時系統。所謂分時技術就是把處理器的運行時間分成很短的時間片,按時間片輪流把處理器分配給各聯機作業使用。若某個作業在分配給它的時間片內不能完成其計算,則該作業暫時停止運行,把處理器讓給其他作業使用,等待下一輪再繼續運行。由于計算機速度很快,作業運行輪轉得很快,給每個用戶的感覺好像是自己獨占一臺計算機。
分時操作系統是多個用戶通過終端同時共享一臺主機,這些終端連接在主機上,用戶可以同時與主機進行交互操作而互不干擾。所以,實現分時系統最關鍵的問題是如何使用戶能與自己的作業進行交互,即當用戶在自己的終端上鍵入命令時,系統應能及時接收并及時處理該命令,再將結果返回用戶。分時系統也是支持多道程序設計的系統,但它不同于多道批處理系統。
多道批處理是實現作業自動控制而無需人工干預的系統,而分時系統是實現人機交互的系統,這使得分時系統具有與批處理系統不同的特征,其主要特征如下:
同時性。同時性也稱多路性,指允許多個終端用戶同時使用一臺計算機,即一臺計算機與若干臺終端相連接,終端上的這些用戶可以同時或基本同時使用計算機。
交互性。用戶能夠方便地與系統進行人-機對話,即用戶通過終端釆用人4^1對話的方式直接控制程序運行,與同程序進行交互。
獨立性。系統中多個用戶可以彼此獨立地進行操作,互不干擾,單個用戶感覺不到別人也在使用這臺計算機,好像只有自己單獨使用這臺計算機一樣。
及時性。用戶請求能在很短時間內獲得響應。分時系統釆用時間片輪轉方式使一臺計算機同時為多個終端服務,使用戶能夠對系統的及時響應感到滿意。
雖然分時操作系統比較好地解決了人機交互問題,但是在一些應用場合,需要系統能對外部的信息在規定的時間(比時間片的時間還短)內作出處理(比如飛機訂票系統或導彈制導系統)。因此,實時系統應運而生。
#### 實時操作系統
為了能在某個時間限制內完成某些緊急任務而不需時間片排隊,誕生了實時操作系統。這里的時間限制可以分為兩種情況:如果某個動作必須絕對地在規定的時刻(或規定的時間范圍)發生,則稱為硬實時系統。例如,飛行器的飛行自動控制系統,這類系統必須提供絕對保證,讓某個特定的動作在規定的時間內完成。如果能夠接受偶爾違反時間規定,并且不會引起任何永久性的損害,則稱為軟實時系統,如飛機訂票系統、銀行管理系統。
在實時操作系統的控制下,計算機系統接收到外部信號后及時進行處理,并且要在嚴格的時限內處理完接收的事件。實時橾作系統的主要特點是及時性和可靠性。
#### 網絡操作系統和分布式計算機系統
網絡操作系統把計算機網絡中的各臺計算機有機地結合起來,提供一種統一、經濟而有效的使用各臺計算機的方法,實現各個計算機之間的互相傳送數據。網絡操作系統最主要的特點是網絡中各種資源的共享以及各臺計算機之間的通信。
分布式計算機系統是由多臺計算機組成并滿足下列條件的系統:系統中任意兩臺計算機通過通信方式交換信息;系統中的每一臺計算機都具有同等的地位,即沒有主機也沒有從機; 每臺計算機上的資源為所有用戶共享;系統中的任意若千臺計算機都可以構成一個子系統,并且還能重構;任何工作都可以分布在幾臺計算機上,由它們并行工作、協同完成。用于管理分布式計算機系統的操作系統稱為分布式計算機系統。該系統的主要特點是:分布性和并行性。分布式操作系統與網絡操作系統本質上的不同之處在于分布式操作系統中,若干臺計算機相互協同完成同一任務。
#### 個人計算機操作系統
個人計算機操作系統是目前使用最廣泛的操作系統,廣泛應用于文字處理、電子表格、 游戲等。常見的有Windows、Linux和Macintosh等,操作系統的發展歷程如圖1-1所示。

圖1-1 操作系統的發展歷程
此外還有嵌入式操作系統、服務器操作系統、多處理器操作系統等。
### 5. 操作系統的運行機制
計算機系統中,通常CPU執行兩種不同性質的程序:一種是操作系統內核程序;另一種是用戶自編程序或系統外層的應用程序。對操作系統而言,這兩種程序的作用不同,前者是后者的管理者,因此“管理程序”要執行一些特權指令,而“被管理程序”出于安全考慮不能執行這些指令。所謂特權指令,是指計算機中不允許用戶直接使用的指令,如I/O指令、 置中斷指令,存取用于內存保護的寄存器、送程序狀態字到程序狀態字寄存器等指令。操作系統在具體實現上劃分了用戶態(目態)和核心態(管態),以嚴格區分兩類程序。
在軟件工程思想和結構程序設計方法的影響下誕生的現代操作系統,幾乎都是層次式的結構。操作系統的各項功能分別被設置在不同的層次上。一些與硬件關聯較緊密的模塊,諸如時鐘管理、中斷處理、設備驅動等處于最底層。其次是運行頻率較髙的程序,諸如進程管理、存儲器管理和設備管理等。這兩部分內容構成了操作系統的內核。這部分內容的指令操作工作在核心態。
內核是計算機上配置的底層軟件,是計算機功能的延伸。不同系統對內核的定義稍有區別,大多數操作系統內核包括四個方面的內容。
1) 時鐘管理
在計算機的各種部件中,時鐘是最關鍵的設備。時鐘的第一功能是計時,操作系統需要通過時鐘管理,向用戶提供標準的系統時間。另外,通過時鐘中斷的管理,可以實現進程的切換。諸如,在分時操作系統中,釆用時間片輪轉調度的實現;在實時系統中,按截止時間控制運行的實現;在批處理系統中,通過時鐘管理來衡量一個作業的運行程度等。因此,系統管理的方方面面無不依賴于時鐘。
2) 中斷機制
引入中斷技術的初衷是提高多道程序運行環境中CPU的利用率,而且主要是針對外部設備的。后來逐步得到發展,形成了多種類型,成為操作系統各項操作的基礎。例如,鍵盤或鼠標信息的輸入、進程的管理和調度、系統功能的調用、設備驅動、文件訪問等,無不依賴于中斷機制。可以說,現代操作系統是靠中斷驅動的軟件。
中斷機制中,只有一小部分功能屬于內核,負責保護和恢復中斷現場的信息,轉移控制權到相關的處理程序。這樣可以減少中斷的處理時間,提高系統的并行處理能力。
3) 原語
按層次結構設計的操作系統,底層必然是一些可被調用的公用小程序,它們各自完成一個規定的操作。其特點是:
它們處于操作系統的最底層,是最接近硬件的部分。
這些程序的運行具有原子性——其操作只能一氣呵成(這主要是從系統的安全性和便于管理考慮的)。
這些程序的運行時間都較短,而且調用頻繁。
通常把具有這些特點的程序稱為原語(Atomic Operation)。定義原語的直接方法是關閉中斷,讓它的所有動作不可分割地進行完再打開中斷。
系統中的設備驅動、CPU切換、進程通信等功能中的部分操作都可以定義為原語,使它們成為內核的組成部分。
4) 系統控制的數據結構及處理
系統中用來登記狀態信息的數據結構很多,比如作業控制塊、進程控制塊(PCB)、設備控制塊、各類鏈表、消息隊列、緩沖區、空閑區登記表、內存分配表等。為了實現有效的管理,系統需要一些基本的操作,常見的操作有以下三種:
進程管理:進程狀態管理、進程調度和分派、創建與撤銷進程控制塊等。
存儲器管理:存儲器的空間分配和回收、內存信息保護程序、代碼對換程序等。
設備管理:緩沖區管理、設備分配和回收等。
從上述內容可以了解,核心態指令實際上包括系統調用類指令和一些針對時鐘、中斷和原語的操作指令。
### 6. 中斷和異常的概念
在操作系統中引入核心態和用戶態這兩種工作狀態后,就需要考慮這兩種狀態之間如何切換。操作系統內核工作在核心態,而用戶程序工作在用戶態。但系統不允許用戶程序實現核心態的功能,而它們又必須使用這些功能。因此,需要在核心態建立一些“門”,實現從用戶態進入核心態。在實際操作系統中,CPU運行上層程序時唯一能進入這些“門”的途徑就是通過中斷或異常。當中斷或異常發生時,運行用戶態的CPU會立即進入核心態,這是通過硬件實現的(例如,用一個特殊寄存器的一位來表示CPU所處的工作狀態,0表示核心態,1表示用戶態。若要進入核心態,只需將該位置0即可)。中斷是操作系統中非常重要的一個概念,對一個運行在計算機上的實用操作系統而言,缺少了中斷機制,將是不可想象的。
中斷(Interruption),也稱外中斷,指來自CPU執行指令以外的事件的發生,如設備發出的I/O結束中斷,表示設備輸入/輸出處理已經完成,希望處理機能夠向設備發下一個輸入 / 輸出請求,同時讓完成輸入/輸出后的程序繼續運行。時鐘中斷,表示一個固定的時間片已到,讓處理機處理計時、啟動定時運行的任務等。這一類中斷通常是與當前程序運行無關的事件,即它們與當前處理機運行的程序無關。
異常(Exception),也稱內中斷、例外或陷入(Trap),指源自CPU執行指令內部的事件,如程序的非法操作碼、 地址越界、算術溢出、虛存系統的缺頁以及專門的陷入指令等引起的事件。對異常的處理一般要依賴于當前程序的運行現場,而且異常不能被屏蔽,一旦出現應立即處理。關于內中斷和外中斷的聯系與區別如圖1-2所示。

圖1-2 內中斷和外中斷的聯系與區別
### 7. 系統調用
所謂系統調用就是用戶在程序中調用操作系統所提供的一些子功能,系統調用可以被看做特殊的公共子程序。系統中的各種共享資源都由操作系統統一掌管,因此在用戶程序中,凡是與資源有關的操作(如存儲分配、進行I/0傳輸以及管理文件等),都必須通過系統調用方式向操作系統提出服務請求,并由操作系統代為完成。通常,一個操作系統提供的系統調用命令有幾十乃至上百條之多。
這些系統調用按功能大致可分為如下幾類:
* 設備管理。完成設備的請求或釋放,以及設備啟動等功能。
* 文件管理。完成文件的讀、寫、創建及刪除等功能。
* 進程控制。完成進程的創建、撤銷、阻塞及喚醒等功能。
* 進程通信。完成進程之間的消息傳遞或信號傳遞等功能。
* 內存管理。完成內存的分配、回收以及獲取作業占用內存區大小及始址等功能。
顯然,系統調用運行在系統的核心態。通過系統調用的方式來使用系統功能,可以保證系統的穩定性和安全性,防止用戶隨意更改或訪問系統的數據或命令。系統調用命令是由操作系統提供的一個或多個子程序模塊實現的。
這樣,操作系統的運行環境可以理解為:用戶通過操作系統運行上層程序(如系統提供的命令解釋程序或用戶自編程序),而這個上層程序的運行依賴于操作系統的底層管理程序提供服務支持,當需要管理程序服務時,系統則通過硬件中斷機制進入核心態,運行管理程序;也可能是程序運行出現異常情況,被動地需要管理程序的服務,這時就通過異常處理來進入核心態。當管理程序運行結束時,用戶程序需要繼續運行,則通過相應的保存的程序現場退出中斷處理程序或異常處理程序,返回斷點處繼續執行。
在操作系統這一層面上,我們關心的是系統核心態和用戶態的軟件實現和切換,對于硬件層面的具體理解,可以結合“計算機組成原理”課程中有關中斷的內容進行學習。
下面列舉一些由用戶態轉向核心態的例子:
* 用戶程序要求操作系統的服務,即系統調用。
* 發生一次中斷。
* 用戶程序中產生了一個錯誤狀態。
* 用戶程序中企圖執行一條特權指令。
* 從核心態轉向用戶態由一條指令實現,這條指令也是特權命令。一般是中斷返回指令。
注意:由用戶態進入核心態,不僅僅是狀態需要切換。而且,所使用的堆棧也可能需要由用戶堆棧切換為系統堆棧,但這個系統堆棧也是屬于該進程的。
### 8. 操作系統的體系結構:大內核和微內核
操作系統的體系結構是一個開放的問題。正如上文所述,操作系統在核心態為應用程序提供公共的服務,那么操作系統在核心態應該提供什么服務、怎樣提供服務?有關這個問題的回答形成了兩種主要的體系結構:大內核和微內核。
大內核系統將操作系統的主要功能模塊都作為一個緊密聯系的整體運行在核心態,從而為應用提供高性能的系統服務。因為各管理模塊之間共享信息,能有效利用相互之間的有效特性,所以具有無可比擬的性能優勢。
但隨著體系結構和應用需求的不斷發展,需要操作系統提供的服務越來越多,而且接口形式越來越復雜,操作系統的設計規模也急劇增長,操作系統也面臨著“軟件危機”困境。為此,操作系統設計人員試圖按照復雜性、時間常數、抽象級別等因素,將操作系統內核分成基本進程管理、虛存、I/O與設備管理、IPC、文件系統等幾個層次,繼而定義層次之間的服務結構,提高操作系統內核設計上的模塊化。但是由于層次之間的交互關系錯綜復雜,定義清晰的層次間接口非常困難,復雜的交互關系也使得層次之間的界限極其模糊。
為解決操作系統的內核代碼難以維護的問題,于是提出了微內核的體系結構。它將內核中最基本的功能(如進程管理等)保留在內核,而將那些不需要在核心態執行的功能移到用戶態執行,從而降低了內核的設計復雜性。而那些移出內核的操作系統代碼根據分層的原則被劃分成若干服務程序,它們的執行相互獨立,交互則都借助于微內核進行通信。
微內核結構有效地分離了內核與服務、服務與服務,使得它們之間的接口更加清晰,維護的代價大大降低,各部分可以獨立地優化和演進,從而保證了操作系統的可靠性。
微內核結構的最大問題是性能問題,因為需要頻繁地在核心態和用戶態之間進行切換,操作系統的執行開銷偏大。因此有的操作系統將那些頻繁使用的系統服務又移回內核,從而保證系統性能。但是有相當多的實驗數據表明,體系結構不是引起性能下降的主要因素,體系結構帶來的性能提升足以彌補切換開銷帶來的缺陷。為減少切換開銷,也有人提出將系統服務作為運行庫鏈接到用戶程序的一種解決方案,這樣的體系結構稱為庫操作系統。
### 9. 關于操作系統概念的一些疑點和難點
并行性與并發性的區別和聯系
并行性和并發性是既相似又有區別的兩個概念。并行性是指兩個或多個事件在同一時刻發生。并發性是指兩個或多個事件在同一時間間隔內發生。
在多道程序環境下,并發性是指在一段時間內,宏觀上有多個程序在同時運行,但在單處理器系統中每一時刻卻僅能有一道程序執行,故微觀上這些程序只能是分時地交替執行。倘若在計算機系統中有多個處理器,則這些可以并發執行的程序便被分配到多個處理器上,實現并行執行,即利用每個處理器來處理一個可并發執行的程序。
特權指令與非特權指令
所謂特權指令是指有特殊權限的指令,由于這類指令的權限最大,如果使用不當,將導致整個系統崩潰。比如:清內存、置時鐘、分配系統資源、修改虛存的段表或頁表、修改用戶的訪問權限等。如果所有的程序都能使用這些指令,那么你的系統一天死機《回就不足為奇了。為了保證系統安全,這類指令只能用于操作系統或其他系統軟件,不直接提供給用戶使用。因此,特權指令必須在核心態執行。實際上,CPU在核心態下可以執行指令系統的全集。形象地說,特權指令就是那些兒童不宜的東西,而非特權指令則是老少皆宜。
為了防止用戶程序中使用特權指令,用戶態下只能使用非特權指令,核心態下可以使用全部指令。當在用戶態下使用特權指令時,將產生中斷以阻止用戶使用特權指令。所以把用戶程序放在用戶態下運行,而操作系統中必須使用特權指令的那部分程序在核心態下運行,保證了計算機系統的安全可靠。從用戶態轉換為核心態的唯一途徑是中斷或異常。
訪管指令與訪管中斷
訪管指令是一條可以在用戶態下執行的指令。在用戶程序中,因要求操作系統提供服務而有意識地使用訪管指令,從而產生一個中斷事件(自愿中斷),將操作系統轉換為核心態,稱為訪管中斷。訪管中斷由訪管指令產生,程序員使用訪管指令向操作系統請求服務。
為什么要在程序中引入訪管指令呢?這是因為用戶程序只能在用戶態下運行,如果用戶程序想要完成在用戶態下無法完成的工作,該怎么辦?解決這個問題要靠訪管指令。訪管指令本身不是特權指令,其基本功能是讓程序擁有“自愿進管”的手段,從而引起訪管中斷。
當處于用戶態的用戶程序使用訪管指令時,系統根據訪管指令的操作數執行訪管中斷處理程序,訪管中斷處理程序將按系統調用的操作數和參數轉到相應的例行子程序。完成服務功能后,退出中斷,返回到用戶程序斷點繼續執行。
- 1. 操作系統概述
- 2.操作系統(計算機)進程和線程管理
- 2.1 進程的概念和特征
- 2.2 進程的狀態與轉換
- 2.3 進程控制
- 2.4 進程的組
- 2.5 進程的通信
- 2.6 線程的概念和多線程模型
- 2.7 處理機調度
- 2.8 操作系統典型調度算法
- 2.9 進程同步的基本概念
- 2.10 實現臨界區互斥的基本方法
- 2.11 信號量
- 2.12 管程:管程的定義、組成及基本特性
- 2.13 經典進程同步問題1
- 2.14 經典進程同步問題2:讀者-寫者問題
- 2.15經典進程同步問題3:哲學家進餐問題
- 2.16 經典進程同步問題4:吸煙者問題
- 2.17 死鎖的概念以及產生死鎖的原因
- 2.18 關于進程和線程的知識點匯總