1. 程式人生 > >作業系統精髓與設計原理(原書第6版)——學習筆記(8)

作業系統精髓與設計原理(原書第6版)——學習筆記(8)

2.4 現代作業系統的特徵

現代作業系統針對硬體中的新發展、新的應用程式和新的安全威脅。促使作業系統發展的硬體因素主要有:

  • 多處理器的計算機系統

  • 高速增長的機器速度

  • 高速網路連線

  • 容量不斷增加的各種儲存裝置

多媒體應用、internetweb訪問、客戶/伺服器計算等應用領域也影響著作業系統的設計。在安全性方面,網際網路的訪問增加了潛在的威脅和更加複雜的攻擊,例如病毒、蠕蟲和黑客急速,這些對作業系統的設計產生了很深遠的影響。

在實驗用和商用作業系統中有很多不同的方法和設計要素,大致可分為:微核心體系結構、多執行緒、對稱多處理、分散式作業系統、面向物件設計。

至今,大多數作業系統都有一個單體核心(

monolithickernel),大多數認為操系統應該提供的功能由這些大核心提供,包括排程、檔案系統、網路、裝置驅動器、儲存管理等。典型情況下,這個大核心是作為一個程序實現的,所有元素都共享相同的地址空間。微內體系結構只給核心分配一些最基本的功能,包括地址空間、程序通訊(InterProcess Communication,簡稱IPC)和基本排程。微核心方法可以使系統結構的設計更加簡單、靈活,很適合於分散式環境。實質上,微核心可以以相同的方式與本地和遠端的服務程序互動,使分散式系統的構造更為方便。

多執行緒技術是指把執行一個應用程式的程序劃分成可以同時執行的多個執行緒。執行緒和程序有以下差別:

  • 執行緒:可分派的工作單元。它包括處理器上下文環境(包含程式計數器和棧指標)和棧中自己的資料區域(為允許子程式分支)。執行緒順序執行,並且可中斷,這樣處理器可以轉到另一個執行緒。

  • 程序:一個或多個執行緒和相關係統資源(如包含資料和程式碼的儲存器空間、開啟的檔案和裝置)的集合。這緊密對應於一個正在執行的程式的概念。通過把一個應用程式分解成多個執行緒,程式設計師可以給在很大程度上控制應用程式的模組性和應用程式相關事件的時間安排。

多執行緒對執行許多本質上獨立、不需要序列處理的應用程式是很有用的,例如監聽和處理很多客戶請求的資料伺服器。在同一個程序中執行多個執行緒,線上程間來回切換所涉及的處理器開銷要比在不同程序間進行切換的開銷少。

隨著效能要求的不斷增減以及微處理器價格的不斷降低,計算機廠商引進了擁有多個微處理器的計算機。對稱多處理不僅指計算機硬體結構,而且指反映該硬體結構的作業系統行為。對稱多處理計算機可以定義為具有以下特徵的獨立的計算機系統:

  1. 有多個處理器。

  2. 這些處理器共享同一個記憶體和I/O裝置,它們之間通過匯流排或別的內部連線方案相互連線。

  3. 所有處理器都可以執行相同的功能(因此稱為對稱)

對稱多處理作業系統可排程程序或執行緒到所有的處理器允許。對稱多處理結構比單處理器結構具有更多的潛在優勢,如下所示:

  • 效能:如果計算機完成的工作可組織為讓一部分工作可以並行完成,那麼有多個處理器的系統將比只有一個同類型處理器的系統產生更好的效能,如圖2.12所示。對多道程式設計而言,一次只能執行一個程序,此時所有別的程序都在等待處理器。對多處理器系統而言,多個程序可以分別在不同的處理器上同時執行。

  • 可用性:在對稱多處理計算機中,由於所有的處理器都可以執行相同的功能,因而單個處理器的失敗不會使機器停止。相反,系統可繼續執行,只是效能有所降低。

  • 增量增長:使用者可以通過新增額外的處理器來增強系統的功能。

  • 可擴充套件性:生產商可以根據系統配置的處理器的數量,提供一系列不同價格和效能特徵的產品。

這些只是潛在的優點,而不是確定的。作業系統必須提供發掘對稱多處理計算機系統中並行性的工具和功能。對稱多處理技術一個很具有吸引力的特徵是多處理器的存在對使用者是透明的。作業系統負責在多個處理器中排程執行緒或程序,並且負責處理器間的同步。

分散式作業系統使使用者產生錯句,使多機系統好像具有一個單一的記憶體空間、外存空間以及其他的統一存取措施,如分散式檔案系統。儘管叢集正變得越來越流行,但是,分散式系統的技術發展水平落後於單處理器作業系統和對稱多處理作業系統。

作業系統設計的另一個改革是使用面向物件技術。面向物件設計的原理用於給小核心增加模組化的擴充套件性。作業系統一級,基於物件的結構使程式設計師可以定製作業系統,而不會破壞熊的完整性。面向物件技術使得分散式工具和分散式作業系統的開發變得更容易。

2.5 微軟的WINDOWS概述

2.5.1 歷史

WINDOS作業系統是由微軟公司為第一臺IBM個人計算機開發的,稱為MS-DOS或著PC-DOS。最初的DOS 1.0是在19818月發行的,它由4000行組合語言原始碼組成,使用Intel 8086微處理器執行在8KB的記憶體中。

微軟公司在1983年釋出了DOS 2.0 ,它包含對硬體的支援,並且提供了層次目錄。1984年微軟釋出了DOS 3.0,DOS 3.13.0的升級,它同年釋出,DOS 3.1支援PC間的聯網,常駐部分的大小沒有改變,這是通過增加作業系統交換量實現的。1987年釋出了DOS 3.3提供了對新型IBM機器PS/2的支援,這個版本沒有使用PS/2中處理器能力,這些是由8028632位的80386晶片提供的。常駐部分最少增長到了46KB

1990年,微軟有了一個GUI版本,稱作WINDOWS3.0,它需要在DOS上執行。1993年釋出了第一版Windows NT(3.1)Window NT 3.1是一個新的32位作業系統,具有支援老的DOSWindows應用程式的能力,並提供了對OS/2的支援。在2000年,釋出了Windows 2000,它的重點是增加支援分佈處理的服務和功能,它的新特徵的核心元素是活動目錄(AD,這是一個分佈目錄服務,能夠將任意物件名對映到關於這些物件的任意型別的資訊上。於此通吃它還增加了即插即用和電源管理工具。在2001年,微軟釋出了最新的桌面作業系統Windows XP,同時提供家用和商業工作站兩種版本,同樣在2001年釋出了64位版本的WINDOWS XP。在2003年,微軟釋出了新的伺服器版本Windows Server 2003,包括32位和64位,該伺服器主要為IntelItanium硬體設計。2007年,windows vista作為最新的桌面版本的windows作業系統釋出,於此同時釋出的伺服器版本是Windows Server 2008.

2.5.2 單使用者多工

Windows(從Windows2000以後)是微機作業系統新潮流的一個重要例子。Windows的動因是開發當今的32位和64位微處理器能力的需求,在速度、硬體完善度和儲存能力幾個方面與大型機和小型機進行競爭。

這些新作業系統的一個重要特徵是:單使用者多工作業系統。發展單使用者多工作業系統的兩個主要原因是:

  • 隨著微處理器的速度和儲存能力的不斷增長以及虛擬儲存器的支援,應用程式變得更加複雜且相關性更強。

  • 客戶/伺服器計算的發展。

2.5.3 體系結構

   

2.13顯示了windows2000的整體結構,以後的各種版本的Windows,包括Vista,在這一層本質上都有相同的結構。Windows把面向應用的軟體和作業系統核心軟體分開,後者包括在核心態下執行的執行體、核心、裝置驅動器和硬體抽象層。核心模組軟體可以訪問系統資料和硬體,在使用者態執行的其餘軟體被限制訪問系統資料。

2.5.3.1作業系統組織

Windows的體系結構是高度模組化的。每個系統函式都正好由一個作業系統部件管理,作業系統的其餘部分和所有應用程式通過相應的部件使用標準介面訪問這個函式。關鍵的系統資料只能通過相應的函式訪問。從理論上講,任何模組都可以移動、升級或替換,而不需要重寫整個系統或它的標準應用程式介面(API.

Windows的核心態元件包括以下型別:

  • 執行體:包括作業系統基礎服務,例如記憶體管理、程序和執行緒管理、安全、I/O和程序間通訊。

  • 核心:控制處理器的執行。核心管理包括執行緒排程、程序切換、異常和中斷處理、多處理器同步。跟執行體和使用者級的其他部分不同,核心本身的程式碼並不在執行緒內執行,因此,核心是作業系統中唯一不可搶佔或分頁的一部分。

  • 硬體抽象層(Hardware Abstraction Layer,HAL):在通用的硬體命令和響應與某一特定平臺專用的命令和響應之間進行對映,它將作業系統從與平臺相關的硬體差異中隔離出來。HAL使得每個機器的系統匯流排、直接儲存器訪問(DMA)控制器、中斷控制器、系統計時器和儲存器模組對核心來說看上去都是相同的。它還對對稱處理(SMP)提供支援,隨後對部分進行解釋。

  • 裝置驅動:用來擴充套件執行體的動態庫。這些庫包括硬體裝置驅動程式,可以將使用者I/O函式呼叫轉換為特定的硬體裝置I/O請求,動態庫還包括一些軟體構件,用於實現檔案系統、網路協議和其他必須執行在核心態中的系統擴充套件功能。

  • 視窗和圖形系統:實現圖形使用者介面函式(簡稱GUI函式),例如處理視窗、使用者介面控制和畫圖。

Windows執行體包括一些特殊的系統函式模組,併為使用者態的軟體提供API。以下是對每個執行體模組的簡單描述:

  • I/O管理器:提供了應用程式訪問I/O裝置的一個框架,還負責為進一步的處理分發合適的裝置驅動程式。I/O裝置管理器實現了所有的Windows I/O API,並實施了安全性、裝置命名和檔案系統(使用物件管理器)。

  • 快取記憶體管理器:通過使最近訪問過的磁碟資料駐留在記憶體中以提供快速訪問,以及在更新後的資料傳送到磁碟之前,通過在記憶體中保持一段很短的時間以延遲磁碟寫操作,來提高基於檔案的I/O效能。

  • 物件管理器:建立、管理和刪除Windows執行體物件和用於表示諸如程序、執行緒和同步物件等資源的抽象資料型別。為物件的保持、命名和安全設定實施統一的規則。物件管理器還建立物件控制代碼,物件控制代碼是由訪問控制資訊和指向物件的指標組成的。

  • 即插即用管理器:決定並載入為支援一個特定的裝置所需的驅動。

  • 電源管理器:調整各種裝置間的電源管理,並且可以把裝置置為休眠狀態以達到節電的目的,甚至可以將記憶體中的內容寫入次胖,然後切斷整個系統的電源。

  • 安全訪問監控程式:強制執行訪問確認和稽核產生的規則。Windows面向物件模型允許統一一致的安全檢視,直到組成執行體的基本實體。因此,Windows為所有受保護物件的訪問確認和稽核檢查使用相同的例程,這些受保護物件包括檔案、程序、地址空間和I/O裝置。

  • 虛擬記憶體管理器:管理虛擬地址、實體地址和磁碟上的頁面檔案。控制記憶體管理硬體和響應的資料結構,把程序地址空間中的虛地址對映到計算機記憶體中的物理頁。

  • 程序/執行緒管理器:建立、管理和刪除物件,跟蹤程序和執行緒物件。

  • 配置管理器:負責執行和管理系統登錄檔,系統登錄檔是儲存系統和每個使用者引數設定的資料倉庫。

  • 本地過程呼叫(LPC)機制:為本地程序實現服務和子系統間的通訊,而實現的一套高效的跨程序的過程呼叫機制。

2.5.3.2 使用者態程序

Windows支援4種基本的使用者程序型別:

  • 特殊系統程序:需進行管理系統的使用者態服務,如會話管理程式、認證子系統、服務管理程式和登入程序等。

  • 服務程序:印表機後臺管理程式、事件記錄器、與裝置驅動協作的使用者態構件、不同的網路服務程式以及許多這樣的程式。

  • 環境子系統:提供不同的作業系統的個性化設定(環境)。支援所有的子系統有Win32/WinFXPOSIX。每個環境子系統包括一個在所有子系統應用程式都會共享的子系統程序和把使用者應用程式呼叫轉換成本地呼叫(LPC)和原生Windows呼叫的動態練級庫(DLL.

  • 使用者應用程式:可執行程式(EXE)和動態連結庫(DLL)向用戶提供使用系統的功能。EXEDLL一般是針對特定的環境子系統。

最重要的子系統是Win32Win32是在windows NTwindows 95及後繼版本和windows9X中都實現了API。最新的windows APIwinFX,基於微軟的.NET程式設計模型。WinFXWindows中時作為win32的更高一層來實現的,而不是一個獨立的子系統型別。