1. 程式人生 > >第一章 作業系統概述(三)

第一章 作業系統概述(三)

1.1.3 作業系統的作用和功能

作業系統核心作為最貼近計算機硬體的軟體,其作用主要體現在兩個方面:一是作為系統資源的管理者,二是作為應用程式的服務提供者。在系統資源管理方面,被管理物件主要包括CPU、記憶體、各類裝置、為使用者持久儲存的資料等,核心要根據各類資源的特點合理調配,儘可能提高資源利用率;在提供系統服務方面,核心將對自身管理的各類資源進行抽象,遮蔽繁瑣的底層操作細節,提供更加便於訪問的虛擬資源,並最終以統一的系統呼叫形式提供給應用程式使用。

作業系統核心的具體功能可以根據所管理資源型別以及提供服務方式歸入五個部分,下面對每一部分的目標及最關鍵的功能進行簡要說明。

(1)處理機管理:目標是要讓CPU儘可能的繁忙,只要有可執行的程式就不讓CPU空等。現代作業系統中會有多道程式駐留記憶體處於隨時準備執行的狀態,核心需要在多個候選者中挑選一個,把處理機分配給這個程式使其執行,這一過程稱為排程;當前一個執行中的程式由於某種原因無法繼續執行時,排程程式選中下一個要執行的程式後,需要修改CPU的狀態以適應新選中程式的執行,這一處理稱為切換。多道程式之間來回切換執行被稱為併發,併發執行的程式可能會因為訪問共同資源而導致不確定的結果,為了避免這種情況核心需要提供機制進行協調,被稱為同步機制。

(2)記憶體管理:目標儘可能把給定容量的實體記憶體充分利用,需要把儘可能多的程式裝入記憶體,這是併發執行的前提;要把實體記憶體在不同應用程式之間、應用程式與核心之間來回調配,以獲得最好的系統性能;藉助CPU提供的硬體機制實現虛擬儲存管理,使得在較小的實體記憶體中可以執行規模很大的應用程式。核心還需要在應用程式地址空間中劃分不同區域,並從可執行檔案中讀取內容裝入不同區域。記憶體中同時存在的多個應用程式不應該相互影響,核心要實現記憶體的隔離和保護。

(3)裝置管理:目標是讓應用程式更容易地訪問各種硬體裝置,並最大限度提高裝置的利用率和訪問速度。為了讓裝置正常工作,核心中需要包含“裝置驅動程式”向各個裝置的控制暫存器發出命令,並利用中斷、DMA等機制使裝置可與CPU並行工作。為了降低訪問難度,核心為不同裝置提供一致的標識方法和訪問方法;為了提高裝置利用率,可以使用假離線技術將獨佔使用的實際裝置改造成可以共享訪問的虛擬裝置;為了提高訪問速度,核心大量使用緩衝機制來適配不同速率裝置、減少裝置實際訪問次數。

(4)檔案管理:目標是讓應用程式可以方便地以檔案形式按名儲存和讀取資料。檔案系統是建立在儲存裝置之上的,而儲存裝置一般是按照“位置”存放資料的,檔案實際上是一個邏輯概念,其最主要的作用是建立一個“檔名”與儲存裝置上一個“位置集合”之間的對應關係。為了實現檔案管理,核心需要在儲存裝置上劃分不同區域並規定用途,需要管理儲存裝置上的可用空間,需要定義屬於一個檔案的“位置集合”的表示方式,需要組織不同檔案之間的邏輯關係以便於應用程式訪問。

(5)系統呼叫:這是應用程式呼叫核心功能的統一入口。核心的開發者會仔細挑選應用程式需要使用的功能,形成一個“核心服務集合”,然後通過統一的介面提供出來。應用程式對核心的功能不同於簡單的過程呼叫,因為呼叫程式碼執行在使用者態而被呼叫程式碼執行在核心態,因而在控制轉移的同時需要有執行態的切換,這一般依賴於CPU提供的專用指令來觸發。核心通常把所有的“核心服務集合”通過一個入口訪問,按照一個預定的編號找到對應的核心服務。

讀者如果第一次接觸作業系統概念,不能完全理解上面這些功能描述是正常的,這可以看作是本書主要內容的一個提要,後面章節按此主線展開,當讀完本書全部內容後,就會在理解的基礎上記住這些功能。

【臨時註記】這一部分內容寫的較少,因為覺得在這裡想講的很全不現實,另外學生初次讀到不太會有概念。另外在文字中儘可能迴避“程序”等專業詞彙,因為這需要在後面漸進式解釋說明。