Operating System

Operating System所屬現代詞,指的是管理計算機系統的全部硬體資源包括軟體資源及數據資源。

中科永聯高級技術培訓中心(www.itisedu.com)

作業系統(Operating System,簡稱OS)是管理計算機系統的全部硬體資源包括軟體資源及數據資源;控制程式運行;改善人機界面;為其它套用軟體提供支持等,使計算機系統所有資源最大限度地發揮作用,為用戶提供方便的、有效的、友善的服務界面。

作業系統通常是最靠近硬體的一層系統軟體,它把硬體裸機改造成為功能完善的一台虛擬機,使得計算機系統的使用和管理更加方便,計算機資源的利用效率更高,上層的應用程式可以獲得比硬體提供的功能更多的支持。

作業系統是一個龐大的管理控制程式,大致包括5個方面的管理功能:進程與處理機管理、作業管理、存儲管理、設備管理、檔案管理。目前微機上常見的作業系統有DOS、OS/2、UNIX、XENIX、LINUX、Windows2000、Netware等。

計算機資源可分為兩大:硬體資源和軟體資源。硬體資源指組成計算機的硬設備,如中央處理機、主存儲器、磁帶存儲器、印表機、顯示器、鍵盤輸入設備等。軟體資源主要指存儲於計算機中的各種數據和程式。系統的硬體資源和軟體資源都由作業系統根據用戶需求按一定的策略分配和調度。

作業系統的處理器管理根據一定的策略將處理器交替地分配給系統內等待運行的程式。

作業系統的設備管理負責分配和回收外部設備,以及控制外部設備按用戶程式的要求進行操作。

作業系統的檔案管理向用戶提供創建檔案、撤消檔案、讀寫檔案、打開和關閉檔案等功能。

作業系統的存儲管理功能是管理記憶體資源。主要實現記憶體的分配與回收,存儲保護以及記憶體擴充。

作業系統的作業管理功能是為用戶提供一個使用系統的良好環境,使用戶能有效地組織自己的工作流程,並使整個系統高效地運行。
今天的作業系統
 
至2005年為止,用於通用計算機上的分布的作業系統主要兩個家族:類Unix家族和微軟Windows家族。而主機系統和嵌入式作業系統使用多樣的系統,並且很多和Windows、Unix都沒有直接的聯繫。

類Unix家族包括多個組織的作業系統,其中有幾個主要的子類包括System V、BSD和Linux。這裡'Unix'是一個商標,開發組織允許使用作業系統在一個定義前提下自由地開發。這名字是通用大型設定作業系統類似組織Unix。Unix系統運行在從巨型機嵌入式系統的多種機器架構上。Unix主要使用於重要的商務伺服器系統以及學院和工程環境中的工作站之上。和AT&T Unix不同,自由軟體比如Linux和BSD逐步開始流行,並且開始進入桌面作業系統領域。和一些Unix作業系統不同,像惠普公司的HPUX和IBM公司的AIX是設計僅運行在客戶購買的設備上,其中有一些特殊的(比如SUN公司的Solaris)可以運行在客戶購買設備和基於工業標準的PC上。APPLE公司的Mac OS X是一個BSD特例,以取代早期小型市場上的蘋果公司Mac OS,眾多流行的Unix作業系統正在走向一體。

微軟公司的Windows作業系統家族起源於早期的IBM PC環境中的MS-DOS,現在版本是基於新的Windows NT核心,第一次是在OS/2中制定。和Unix不同,Windows只能運行在32位和64位的x86 CPU(如Intel或者AMD的晶片)上,儘管早期有版本運行於DEC Alpha,MIPS 和 PowerPC體系結構。今天Windows是一個流行的作業系統,在全球桌面市場中占有90%左右的份額,同時在中低端伺服器市場也有廣泛的套用,如Web伺服器和資料庫伺服器。

大型機系統,比如IBM公司的Z/OS,和嵌入式作業系統比如QNX、eCOs和PalmOS都是和Unix和Windows無關的作業系統,而Windows CE、Windows NT Embedded 4.0和Windows XP Embedded都是和Windows相關的。

老的作業系統停留在市場包括類似IBM Windows的OS/2、來自惠普的VMS(以前的DEC);蘋果公司的Mac OS作業系統、非Unix先驅蘋果公司Mac OS X,以及AMIGAOS,第一個圖形用戶界面的作業系統,包括對於普通用戶的高級的多媒體能力。

功能

作業系統位於底層硬體與用戶之間,是兩者溝通的橋樑。用戶可以通過作業系統的用戶界面,輸入命令。作業系統則對命令進行解釋,驅動硬體設備,實現用戶要求。

結構

作業系統理論研究者有時把作業系統分成四大部分:

驅動程式 - 最底層的、直接控制和監視各類硬體的部分,它們的職責是隱藏硬體的具體細節,並向其他部分提供一個抽象的、通用的接口。
核心 - 作業系統之最核心部分,通常運行在最高特權級,負責提供基礎性、結構性的功能。

支承庫 - (亦作“接口庫”)是一系列特殊的程式庫,它們指責在於把系統所提供的基本服務包裝成應用程式所能夠使用的編程接口(API),是最靠近應用程式的部分。例如,GNU C運行期庫就屬於此類,它把各種作業系統的內部編程接口包裝成ANSI C和POSIX編程接口的形式。

外圍 - 所謂外圍,是指作業系統中除以上三類以外的所有其他部分,通常是用於提供特定高級服務的部件。例如,在微核心結構中,大部分系統服務,以及UNIX/Linux中各種守護進程都通常被劃歸此列。

當然,本節所提出的四部結構觀也絕非放之四海皆準。例如,在早期的微軟視窗作業系統中,各部分耦合程度很深,難以區分彼此。而在使用外核結構的作業系統中,則根本沒有驅動程式的概念。因而,本節的討論只適用於一般情況,具體特例需具體分析。

作業系統中四大部分的不同布局,也就形成了幾種整體結構的分野。常見的結構包括:簡單結構、層結構、微核心結構、垂直結構、和虛擬機(Virtual Machine)結構。

簡單結構

很多商用作業系統都沒有清晰的整體結構,系統中的各個部件混雜在一起。這些作業系統往往是由很小的實驗性的項目逐步演化而來的,因而巨觀結構非常模糊。

MS-DOS就是一個很好的例子,在設計之初,MS-DOS的設計目標是在比較有限的硬體資源上運行比較有限的應用程式,開發人員很可能都沒有預料到它日後在市場上的巨大成功,因而模組之間的相對獨立性幾乎被忽略。

相似的情況也發生在UNIX家族之中。早期的UNIX因為受限於當時的硬體能力,也一直都是採用非常簡單的、隨著UNIX的不斷發展這樣結構也很快成為了UNIX演進的瓶頸。其它採用這種簡單結構的作業系統還包括PalmOS 5以前的PalmOS,以及很多其他的小型的嵌入式作業系統。

核心結構

核心是作業系統最核心最基礎的構件,因而,核心結構往往對作業系統的外部特性以及套用領域有著一定程度的影響。儘管隨著理論和實踐的不斷演進,作業系統高層特性與核心結構之間的耦合有日趨縮小之勢,但習慣上,核心結構仍然是作業系統分類之常用標準。

核心的結構可以分為單核心(monolithic kernel)、微核心(Microkernel)、超微核心(nanokernel)、以及外核(exokernel)等。詳情參見作業系統核心。

單核心結構是作業系統中各核心部件雜然混居的形態,該結構於1960年代(亦有1950年代初之說,尚存爭議),歷史最長,是作業系統核心與外圍分離時的最初形態。

微核心結構是1980年代產生出來的較新的核心結構,強調結構性部件與功能性部件的分離。20世紀末,基於微核心結構,理論界中又發展出了超微核心與外核心等多種結構。儘管自1980年代起,大部分理論研究都集中在以微核心為首的“新興”結構之上,然而,在套用領域之中,以單核心結構為基礎的作業系統卻一直占據著主導地位。

在眾多常用作業系統之中,除了QNX和基於Mach的UNIX等個別系統外,幾乎全部採用單核心結構,例如大部分的Unix、Linux,以及Windows(微軟聲稱Windows NT是基於改良的微核心架構的,儘管理論界對此存有異議)。 微核心和超微核心結構主要用於研究性作業系統,還有一些嵌入式系統使用外核。

基於單核心的作業系統通常有著較長的歷史淵源。例如,絕大部分UNIX的家族史都可上溯至1960年代。該類作業系統多數有著相對古老的設計和實現(例如某些UNIX中存在著大量1970年代、1980年代的代碼)。另外,往往在性能方面略優於同一套用領域中採用其他核心結構的作業系統(但通常認為此種性能優勢不能完全歸功於單核心結構)。

實時與非實時

“實時作業系統”(Real Time OS)泛指所有據有一定實時資源調度以及通訊能力的作業系統。而所謂“實時”,不同語境中往往有著非常不同的意義。某些時候僅僅用作“高性能”的同義詞。但在作業系統理論中“實時性”所指的通常是特定操作所消耗的時間(以及空間)的上限是可預知的。比如,如果說某個作業系統提供實時記憶體分配操作,那也就是說一個記憶體分配操作所用時間(及空間)無論如何也不會超出作業系統所承諾的上限。實時性在某些領域非常重要,比如在工業控制、醫療器材、影音頻合成、以及軍事領域,實時性都是無可或缺的特性。

常用實時作業系統有QNX、VxWorks、RTLinux等等屬於非實時作業系統。作業系統整體的實時性通常依仗核心的實時能力,但有時也可在非實時核心上建立實時作業系統,很多在Windows上建立的實時作業系統就屬於此類。

在POSIX標準中專有一系用於規範實時作業系統的API,其中包括POSIX.4、POSIX.4a、POSIX.4b(合稱POSIX.4)以及POSIX.13等等。符合POSIX.4的作業系統通常被認可為實時作業系統(但實時作業系統並不需要符合POSIX.4標準)。

16位、32位、64位

所謂16位、32位、64位等術語有時指匯流排寬度,有時指指令寬度(在定長指令集中),而在作業系統理論中主要是指記憶體定址的寬度。如果記憶體的定址寬度是16位,那么每一個記憶體地址可以用16個二進制位來表示,也就是說可以在64KB的範圍內定址。同樣道理32位的寬度對應4GB的定址範圍,64位的寬度對應16 ExaByte的定址範圍。記憶體定址範圍並非僅僅是對作業系統而言的,其他類型的軟體的設計有時也會被定址範圍而影響。但是在作業系統的設計與實現中,定址範圍卻有著更為重要的意義。

在早期的16位作業系統中,由於64KB的定址範圍太小,大都都採用“段”加“線性地址”的二維平面地址空間的設計。分配記憶體時通常需要考慮“段置換”的問題,同時,應用程式所能夠使用的地址空間也往往有比較小的上限。

在32位作業系統中,4GB的定址範圍對於一般應用程式來說是綽綽有餘的,因而,通常使用一維的線性地址空間,而不使用“段”。

部分作業系統

FreeBSD
MS-DOS
GNU/Linux
Mac OS
Windows
Windows NT
UNIX
其他作業系統

相關詞條

相關搜尋

熱門詞條

聯絡我們