作業系統

作業系統

作業系統(Operating System,簡稱OS)是管理和控制計算機硬體與軟體資源的電腦程式,是直接運行在“裸機”上的最基本的系統軟體,任何其他軟體都必須在作業系統的支持下才能運行。作業系統是用戶和計算機的接口,同時也是計算機硬體和其他軟體的接口。作業系統的功能包括管理計算機系統的硬體、軟體及數據資源,控制程式運行,改善人機界面,為其它套用軟體提供支持,讓計算機系統所有資源最大限度地發揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環境,為其它軟體的開發提供必要的服務和相應的接口等。實際上,用戶是不用接觸作業系統的,作業系統管理著計算機硬體資源,同時按照應用程式的資源請求,分配資源,如:劃分CPU時間,記憶體空間的開闢,調用印表機等。

基本信息

定義

作業系統作業系統

作業系統(OperatingSystem,簡稱OS),是電子計算機系統中負責支撐應用程式運行環境以及用戶操作環境的系統軟體,同時也是計算機系統的核心與基石。作業系統是控制和管理計算機軟硬體資源、合理組織計算機工作流程,以及方便用戶操作的程式集合。它的職責常包括對硬體的直接監管、對各種計算資源(如記憶體、處理器時間等)的管理、以及提供諸如作業管理之類的面向應用程式的服務等等。作業系統的理論是計算機科學中一個古老而又活躍的分支,而作業系統的設計與實現則是軟體工業的基礎與核心。

作業系統(英語;Operating System,簡稱OS)是一管理電腦硬體與軟體資源的程式,同時也是計算機系統的核心與基石。作業系統身負諸如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理檔案系統等基本事務。作業系統是管理計算機系統的全部硬體資源包括軟體資源及數據資源;控制程式運行;改善人機界面;為其它套用軟體提供支持等,使計算機系統所有資源最大限度地發揮作用,為用戶提供方便的、有效的、友善的服務界面。作業系統是一個龐大的管理控制程式,大致包括5個方面的管理功能:進程與處理機管理、作業管理、存儲管理、設備管理、檔案管理。目前微機上常見的作業系統有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。但所有的作業系統具有並發性、共享性、虛擬性和不確定性四個基本特徵。

作業系統的型態非常多樣,不同機器安裝的OS可從簡單到複雜,可從手機的嵌入式系統到超級電腦的大型作業系統。許多作業系統製造者對OS的定義也不大一致,例如有些OS集成了圖形化使用者界面,而有些OS僅使用文本接口,而將圖形界面視為一種非必要的應用程式。作業系統理論在計算機科學中為歷史悠久而又活躍的分支,而作業系統的設計與實現則是軟體工業的基礎與核心。

類型

作業系統大致可分為6種類型。

簡單作業系統。它是計算機初期所配置的作業系統,如IBM公司的磁碟作業系統DOS/360和微型計算機的作業系統CP/M等。這類作業系統的功能主要是操作命令的執行,檔案服務,支持高級程式設計語言編譯程式和控制外部設備等。

②分時系統。它支持位於不同終端的多個用戶同時使用一台計算機,彼此獨立互不干擾,用戶感到好像一台計算機全為他所用。

③實時作業系統。它是為實時計算機系統配置的作業系統。其主要特點是資源的分配和調度首先要考慮實時性然後才是效率。此外,實時作業系統應有較強的容錯能力。

網路作業系統。它是為計算機網路配置的作業系統。在其支持下,網路中的各台計算機能互相通信和共享資源。其主要特點是與網路的硬體相結合來完成網路的通信任務。

分布作業系統。它是為分布計算系統配置的作業系統。它在資源管理,通信控制和作業系統的結構等方面都與其他作業系統有較大的區別。由於分布計算機系統的資源分布於系統的不同計算機上,作業系統對用戶的資源需求不能像一般的作業系統那樣等待有資源時直接分配的簡單做法而是要在系統的各台計算機上搜尋,找到所需資源後才可進行分配。對於有些資源,如具有多個副本的檔案,還必須考慮一致性。所謂一致性是指若干個用戶對同一個檔案所同時讀出的數據是一致的。為了保證一致性,作業系統須控制檔案的讀、寫、操作,使得多個用戶可同時讀一個檔案,而任一時刻最多只能有一個用戶在修改檔案。分布作業系統的通信功能類似於網路作業系統。由於分布計算機系統不像網路分布得很廣,同時分布作業系統還要支持並行處理,因此它提供的通信機制和網路作業系統提供的有所不同,它要求通信速度高。分布作業系統的結構也不同於其他作業系統,它分布於系統的各台計算機上,能並行地處理用戶的各種需求,有較強的容錯能力。

⑥智慧型作業系統。

功能

作業系統的主要功能是資源管理,程式控制和人機互動等。計算機系統的資源可分為設備資源和信息資源兩大類。設備資源指的是組成計算機的硬體設備,如中央處理器主存儲器,磁碟存儲器,印表機,磁帶存儲器,顯示器鍵盤輸入設備和滑鼠等。信息資源指的是存放於計算機內的各種數據,如檔案,程式庫,知識庫,系統軟體和套用軟體等。

從資源管理角度看

作業系統具有以下五大功能。

(1)進程管理

又稱處理器管理,其主要任務是對處理器的時間進行合理分配、對處理器的運行實施有效的管理。

(2)存儲器管理

由於多道程式共享記憶體資源,所以存儲器管理的主要任務是對存儲器進行分配、保護和擴充。

(3)設備管理

根據確定的設備分配原則對設備進行分配,使設備與主機能夠並行工作,為用戶提供良好的設備使用界面。

(4)檔案管理

有效地管理檔案的存儲空間,合理地組織和管理檔案系統,為檔案訪問和檔案保護提供更有效的方法及手段。

(5)用戶接口

用戶操作計算機的界面稱為用戶接口(或用戶界面),通過用戶接口,用戶只需進行簡單操作,就能實現複雜的套用處理。用戶接口有兩種類型:

命令接口:用戶通過互動命令方式直接或間接地對計算機進行操作。

程式接口:供用戶以程式方式進行操作。程式接口也稱為應用程式編程接口(ApplicationProgrammingInterface,API),用戶通過API可以調用系統提供的例行程式,實現既定的操作。

資源管理

作業系統作業系統

系統的設備資源信息資源都是作業系統根據用戶需求按一定的策略來進行分配和調度的。作業系統的存儲管理就負責把記憶體單元分配給需要記憶體的程式以便讓它執行,在程式執行結束後將它占用的記憶體單元收回以便再使用。對於提供虛擬存儲的計算機系統,作業系統還要與硬體配合做好頁面調度工作,根據執行程式的要求分配頁面,在執行中將頁面調入和調出記憶體以及回收頁面等。

處理器管理或稱處理器調度,是作業系統資源管理功能的另一個重要內容。在一個允許多道程式同時執行的系統里,作業系統會根據一定的策略將處理器交替地分配給系統內等待運行的程式。一道等待運行的程式只有在獲得了處理器後才能運行。一道程式在運行中若遇到某個事件,例如啟動外部設備而暫時不能繼續運行下去,或一個外部事件的發生等等,作業系統就要來處理相應的事件,然後將處理器重新分配。

作業系統的設備管理功能主要是分配和回收外部設備以及控制外部設備按用戶程式的要求進行操作等。對於非存儲型外部設備,如印表機、顯示器等,它們可以直接作為一個設備分配給一個用戶程式,在使用完畢後回收以便給另一個需求的用戶使用。對於存儲型的外部設備,如磁碟、磁帶等,則是提供存儲空間給用戶,用來存放檔案和數據。存儲性外部設備的管理與信息管理是密切結合的。

信息管理是作業系統的一個重要的功能,主要是向用戶提供一個檔案系統。一般說,一個檔案系統向用戶提供創建檔案,撤銷檔案,讀寫檔案,打開和關閉檔案等功能。有了檔案系統後,用戶可按檔案名稱存取數據而無需知道這些數據存放在哪裡。這種做法不僅便於用戶使用而且還有利於用戶共享公共數據。此外,由於檔案建立時允許創建者規定使用許可權,這就可以保證數據的安全性。

程式控制

一個用戶程式的執行自始至終是在作業系統控制下進行的。一個用戶將他要解決的問題用某一種程式設計語言編寫了一個程式後就將該程式連同對它執行的要求輸入到計算機內,作業系統就根據要求控制這個用戶程式的執行直到結束。作業系統控制用戶的執行主要有以下一些內容:調入相應的編譯程式,將用某種程式設計語言編寫的源程式編譯成計算機可執行的目標程式,分配記憶體儲等資源將程式調入記憶體並啟動,按用戶指定的要求處理執行中出現的各種事件以及與操作員聯繫請示有關意外事件的處理等。

人機互動

作業系統的人機互動功能是決定計算機系統“友善性”的一個重要因素。人機互動功能主要靠可輸入輸出的外部設備和相應的軟體來完成。可供人機互動使用的設備主要有鍵盤顯示、滑鼠、各種模式識別設備等。與這些設備相應的軟體就是操作系統提供人機互動功能的部分。人機互動部分的主要作用是控制有關設備的運行和理解並執行通過人機互動設備傳來的有關的各種命令和要求。早期的人機互動設施是鍵盤顯示器。操作員通過鍵盤打入命令,作業系統接到命令後立即執行並將結果通過顯示器顯示。打入的命令可以有不同方式,但每一條命令的解釋是清楚的,唯一的。隨著計算機技術的發展,操作命令也越來越多,功能也越來越強。隨著模式識別,如語音識別、漢字識別等輸入設備的發展,操作員和計算機在類似於自然語言或受限制的自然語言這一級上進行互動成為可能。此外,通過圖形進行人機互動也吸引著人們去進行研究。這些人機互動可稱為智慧型化的人機互動。這方面的研究工作正在積極開展。

系統大全

作業系統主要包括:

UNIX

UNIX是一個強大的多用戶、多任務作業系統,支持多種處理器架構,按照作業系統的分類,屬於分時作業系統。UNIX最早由KenThompson和DennisRitchie於1969年在美國AT&T的貝爾實驗室開發。

類Unix(Unix-like)作業系統指各種傳統的Unix以及各種與傳統Unix類似的系統。它們雖然有的是自由軟體,有的是商業軟體,但都相當程度地繼承了原始UNIX的特性,有許多相似處,並且都在一定程度上遵守POSIX規範。類Unix系統可在非常多的處理器架構下運行,在伺服器系統上有很高的使用率,例如大專院校或工程套用的工作站。

Linux

基於Linux的作業系統是20世紀1991年推出的一個多用戶、多任務的作業系統。它與UNIX完全兼容。Linux最初是由芬蘭赫爾辛基大學計算機系學生LinusTorvalds在基於UNIX的基礎上開發的一個作業系統的核心程式,Linux的設計是為了在Intel微處理器上更有效的運用。其後在理察·斯托曼的建議下以GNU通用公共許可證發布,成為自由軟體Unix變種。它的最大的特點在於他是一個原始碼公開的自由及開放源碼的作業系統,其核心原始碼可以自由傳播。

經歷數年的披荊斬棘,自由開源的Linux系統逐漸蠶食以往專利軟體的專業領域,例如以往計算機動畫運算巨擘──SGI的IRIX系統已被Linux家族及貝爾實驗室研發小組設計的九號計畫與Inferno系統取代,皆用於分散表達式環境。它們並不像其他Unix系統,而是選擇自帶圖形用戶界面。九號計畫原先並不普及,因為它剛推出時並非自由軟體。Linux有各類發行版,通常為GNU/Linux,如Debian(及其衍生系統Ubuntu、LinuxMint)、Fedora、openSUSE等。Linux發行版作為個人計算機作業系統或伺服器作業系統,在伺服器上已成為主流的作業系統。

MacOSX

MacOS是一套運行於蘋果Macintosh系列電腦上的作業系統。MacOS是首個在商用領域成功的圖形用戶界面。Macintosh組包括比爾·阿特金森(BillAtkinson)、傑夫·拉斯金(JefRaskin)和安迪·赫茨菲爾德(AndyHertzfeld)。MacOSX於2001年首次在商場上推出。它包含兩個主要的部分:Darwin,是以BSD原始代碼和Mach微核心為基礎,類似Unix的開放原始碼環境。

Windows

Windows是由微軟公司成功開發的作業系統.Windows是一個多任務的作業系統,他採用圖形視窗界面,用戶對計算機的各種複雜操作只需通過點擊滑鼠就可以實現。

MicrosoftWindows系列作業系統是在微軟給IBM機器設計的MS-DOS的基礎上設計的圖形作業系統。Windows系統,如Windows2000、WindowsXP皆是創建於現代的WindowsNT核心。NT核心是由OS/2和OpenVMS等系統上借用來的。Windows可以在32位和64位的Intel和AMD的處理器上運行,但是早期的版本也可以在DECAlpha、MIPS與PowerPC架構上運行。雖然由於人們對於開放原始碼作業系統興趣的提升,Windows的市場占有率有所下降,但是到2004年據庫服務等一些功能。

WindowsXP在2001年10月25日發布,2004年8月24日發布服務包2,2008年4月21日發布最新的服務包3。微軟上一款作業系統WindowsVista(開發代碼為Longhorn)於2007年1月30日發售。WindowsVista增加了許多功能,尤其是系統的安全性和網路管理功能,並且其擁有界面華麗的AeroGlass。但是整體而言,其在全球市場上的口碑卻並不是很好。Windows8微軟在2012年10月正式推出,系統有著獨特的metro開始界面和觸控式互動系統,2013年10月17日晚上7點,Windows8.1在全球範圍內,通過Windows上的套用商店進行更新推送。2014年1月22日,微軟在美國舊金山舉行發布會,正式發布了Windows10消費者預覽版。

iOS

iOS作業系統是由蘋果公司開發的手持設備作業系統。iOS與蘋果的MacOSX作業系統一樣,它也是以Darwin為基礎的,因此同樣屬於類Unix的商業作業系統。原本這個系統名為iPhoneOS,直到2010年6月7日WWDC大會上宣布改名為iOS。截止至2011年11月,根據Canalys的數據顯示,iOS已經占據了全球智慧型手機系統市場份額的30%,在美國的市場占有率為43%。

Android

Android是一種以Linux為基礎的開放原始碼作業系統,主要使用於便攜設備。Android作業系統最初由AndyRubin開發,最初主要支持手機。2005年由Google收購注資,並組建開放手機聯盟開發改良,逐漸擴展到平板電腦及其他領域上。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。2012年11月數據顯示,Android占據全球智慧型手機作業系統市場76%的份額,中國市場占有率為90%。

WP

WindowsPhone(簡稱:WP)是微軟發布的一款手機作業系統,它將微軟旗下的XboxLive遊戲、XboxMusic音樂與獨特的視頻體驗集成至手機中。微軟公司於2010年10月11日晚上9點30分正式發布了智慧型手機操作。

系統WindowsPhone,並將其使用接口稱為“Modern”接口。2011年2月,“諾基亞”與微軟達成全球戰略同盟並深度合作共同研發。2011年9月27日,微軟發布WindowsPhone7.5。2012年6月21日,微軟正式發布WindowsPhone8,採用和Windows8相同的WindowsNT核心,同時也針對市場的WindowsPhone7.5發布WindowsPhone7.8。2014年4月2日,微軟在舊金山召開Build2014開發者大會。大會上微軟推出WindowsPhone8.1更新,2014年8月4日晚,微軟正式向WP開發者推送了WP8.1GDR1預覽版,即WP8.1Update。

ChromeOS

ChromeOS是由谷歌開發的一款基於Linux的作業系統,發展出與網際網路緊密結合的雲作業系統,工作時運行Web應用程式。谷歌在2009年7月7日發布該作業系統,並在2009年11月19日以ChromiumOS之名推出相應的開源項目,並將ChromiumOS代碼開源。

ChromeOS同時支持Intelx86以及ARM處理器,軟體結構極其簡單,可以理解為在Linux的核心上運行一個使用新的視窗系統的Chrome瀏覽器。對於開發人員來說,web就是平台,所有現有的web套用可以完美的在ChromeOS中運行,開發者也可以用不同的開發語言為其開發新的web套用。

發展過程

各類平台上作業系統的功能演化綜觀電腦之歷史,作業系統與電腦硬體的發展息息相關。作業系統之本意原為提供簡單的工作排序能力,後為輔助更新更複雜的硬體設施而漸漸演化。從最早的批次模式開始,分時機制也隨之出現,在多處理器時代來臨時,作業系統也隨之添加多處理器協調功能,甚至是分散式系統的協調功能。其他方面的演變也類似於此。另一方面,在個人電腦上,個人電腦之作業系統因襲大型電腦的成長之路,在硬體越來越複雜、強大時,也逐步實踐以往只有大型電腦才有的功能。總而言之,作業系統的歷史就是一部解決電腦系統需求與問題的歷史。

1980年代前
Maurice Vincent Wilkes,微程式的創建者

IBM System/360,大型主機的經典之作第一部電腦並沒有作業系統。這是由於早期電腦的建立方式(如同建造機械算盤)與效能不足以執行如此程式。但在1947年發明了電晶體,以及莫里斯·威爾克斯(Maurice V. Wilkes)發明的微程式方法,使得電腦不再是機械設備,而是電子產品。系統管理工具以及簡化硬體操作流程的程式很快就出現了,且成為作業系統的濫觴。到了1960年代早期,商用電腦製造商製造了批次處理系統,此系統可將工作的建置、調度以及執行序列化。此時,廠商為每一台不同型號的電腦創造不同的作業系統,因此為某電腦而寫的程式無法移植到其他電腦上執行,即使是同型號的電腦也不行。

到了1964年,IBM System/360推出了一系列用途與價位都不同的大型電腦,而它們都共享代號為OS/360的作業系統(而非每種產品都用量身訂做的作業系統)。讓單一作業系統適用於整個系列的產品是System/360成功的關鍵,且實際上IBM目前的大型系統便是此系統的後裔;為System/360所寫的應用程式依然可以在現代的IBM機器上執行!

OS/360也包含另一個優點:永久貯存設備—硬碟驅動器的面世(IBM稱為DASD(Direct access storage device))。另一個關鍵是分時概念的建立:將大型電腦珍貴的時間資源適當分配到所有使用者身上。分時也讓使用者有獨占整部機器的感覺;而Multics的分時系統是此時眾多新作業系統中實踐此觀念最成功的。

1963年,奇異公司與貝爾實驗室合作以PL/I語言建立的Multics,是激發1970年代眾多作業系統建立的靈感來源,尤其是由AT&T貝爾實驗室的丹尼斯·里奇與肯·湯普遜所建立的Unix系統,為了實踐平台移植能力,此作業系統在1969年由C語言重寫;另一個廣為市場採用的小型電腦作業系統是VMS。

80年代

第一代微型計算機並不像大型電腦或小型電腦,沒有裝設作業系統的需求或能力;它們只需要最基本的作業系統,通常這種作業系統都是從ROM讀取的,此種程式被稱為監視程式(Monitor)。1980年代,家用電腦開始普及。通常此時的電腦擁有8-bit處理器加上64KB記憶體、螢幕、鍵盤以及低音質喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502晶片特別版)的Commodore C64。此電腦沒有作業系統,而是以一8KB唯讀記憶體BIOS初始化彩色螢幕、鍵盤以及軟碟機和印表機。它可用8KB唯讀記憶體BASIC語言來直接操作BIOS,並依此撰寫程式,大部分是遊戲。此BASIC語言的解釋器勉強可算是此電腦的作業系統,當然就沒有核心或軟硬體保護機制了。此電腦上的遊戲大多跳過BIOS層次,直接控制硬體。

家用電腦C64的抽象架構

簡單應用程式 機器語言

(遊戲直接操作)

8k BASIC ROM

8k ROM-BIOS

硬體(中央處理器、儲存設備等)

早期最著名的磁碟啟動型作業系統是CP/M,它支持許多早期的微電腦,且被MS-DOS大量抄襲其功能。最早期的IBM PC其架構類似C64。當然它們也使用了BIOS以初始化與抽象化硬體的操作,甚至也附了一個BASIC解釋器!但是它的BASIC優於其他公司產品的原因在於他有可攜性,並且兼容於任何符合IBM PC架構的機器上。這樣的PC可利用Intel-8088處理器(16-bit暫存器)定址,並最多可有1MB的記憶體,然而最初只有640KB。軟式磁碟機取代了過去的磁帶機,成為新一代的儲存設備,並可在他512KB的空間上讀寫。為了支持更進一步的檔案讀寫概念,磁碟作業系統(Disk Operating System,DOS)因而誕生。此作業系統可以合併任意數量的磁區,因此可以在一張磁碟片上放置任意數量與大小的檔案。檔案之間以檔名區別。IBM並沒有很在意其上的DOS,因此以向外部公司購買的方式取得作業系統。1980年微軟公司利用騙術取得了與IBM的契約,並且收購了一家公司出產的作業系統,在將之修改後以MS-DOS的名義出品,此作業系統可以直接讓程式操作BIOS與檔案系統。到了Intel-80286處理器的時代,才開始實作基本的儲存設備保護措施。MS-DOS的架構並不足以滿足所有需求,因為它同時只能執行最多一個程式(如果想要同時執進程式,只能使用TSR的方式來跳過OS而由程式自行處理多任務的部份),且沒有任何記憶體保護措施。對驅動程式的支持也不夠完整,因此導致諸如音效設備必須由程式自行設定的狀況,造成不兼容的情況所在多有。某些操作的效能也是可怕地糟糕。許多應用程式因此跳過MS-DOS的服務程式,而直接存取硬體設備以取得較好的效能。雖然如此,但MS-DOS還是變成了IBM PC上面最常用的作業系統(IBM自己也有推出DOS,稱為IBM-DOS或PC-DOS)。MS-DOS的成功使得微軟成為地球上最賺錢的公司之一。

MS-DOS在個人電腦上的抽象架構

普通應用程式(shell script、文本編輯器)

MS-DOS(檔案系統)

BIOS(驅動程式)

硬體(中央處理器、儲存設備等)

而1980年代另一個崛起的作業系統異數是Mac OS,此作業系統緊緊與麥金塔電腦捆綁在一起。此時一位全錄伯拉圖實驗室的員工Dominik Hagen訪問了蘋果電腦的史蒂夫·賈伯斯,並且向他展示了此時全錄發展的圖形化使用者界面。蘋果電腦驚為天人,並打算向全錄購買此技術,但因伯拉圖實驗室並非商業單位而是研究單位,因此全錄回絕了這項買賣。在此之後蘋果一致認為個人電腦的未來必定屬於圖形使用者界面,因此也開始發展自己的圖形化作業系統。現今許多我們認為是基本要件的圖形化接口技術與規則,都是由蘋果電腦打下的基礎(例如下拉式選單、桌面圖示、拖曳式操作與雙點擊等)。但正確來說,圖形化使用者界面的確是全錄創始的。

90年代

蘋果電腦蘋果電腦

Apple I電腦,蘋果電腦的第一代產品。延續1980年代的競爭,1990年代出現了許多影響未來個人電腦市場深厚的作業系統。由於圖形化使用者界面日趨繁複,作業系統的能力也越來越複雜與巨大,因此強韌且具有彈性的作業系統就成了迫切的需求。此年代是許多套裝類的個人電腦作業系統互相競爭的時代

上一年代於市場崛起的蘋果電腦,由於舊系統的設計不良,使得其後繼發展不力,蘋果電腦決定重新設計作業系統。經過許多失敗的項目後,蘋果於1997年釋出新作業系統——MacOS的測試版,而後推出的正式版取得了巨大的成功。讓原先失意離開蘋果的Steve Jobs風光再現。

除了商業主流的作業系統外,從1980年代起在開放原碼的世界中,BSD系統也發展了非常久的一段時間,但在1990年代由於與AT&T的法律爭端,使得遠在芬蘭赫爾辛基大學的另一股開源作業系統——Linux興起。Linux核心是一個標準POSIX核心,其血緣可算是Unix家族的一支。Linux與BSD家族都搭配GNU計畫所發展的應用程式,但是由於使用的許可證以及歷史因素的作弄下,Linux取得了相當可觀的開源作業系統市占率,而BSD則小得多。相較於MS-DOS的架構,Linux除了擁有傲人的可移植性(相較於Linux,MS-DOS只能運行在Intel CPU上),它也是一個分時多進程核心,以及良好的記憶體空間管理(普通的進程不能存取核心區域的記憶體)。想要存取任何非自己的記憶體空間的進程只能通過系統調用來達成。一般進程是處於使用者模式(User mode)底下,而執行系統調用時會被切換成核心模式(Kernel mode),所有的特殊指令只能在核心模式執行,此措施讓核心可以完美管理系統內部與外部設備,並且拒絕無許可權的進程提出的請求。因此理論上任何應用程式執行時的錯誤,都不可能讓系統崩潰(Crash)。

幾乎完整的Linux架構圖

使用者

模式 應用程式(sh、vi、OpenOffice.org等)

複雜函式館(KDE、glib等)

簡單函式館(opendbm、sin等)

C函式館(open、fopen、socket、exec、calloc等)

核心

模式 系統中斷、調用、錯誤等軟硬體訊息

核心(驅動程式、進程、網路、記憶體管理等)

硬體(處理器、記憶體、各種設備)

另一方面,微軟對於更強力的作業系統呼聲的回應便是Windows NT於1999年的面世。

1983年開始微軟就想要為MS-DOS建構一個圖形化的作業系統應用程式,稱為Windows(有人說這是比爾蓋茲被蘋果的Lisa電腦上市所刺激)。一開始Windows並不是一個作業系統,只是一個應用程式,其背景還是純MS-DOS系統,這是因為當時的BIOS設計以及MS-DOS的架構不甚良好之故。在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令行模式,後來成為一個很成功

作業系統作業系統

但是曲高和寡的圖形化作業系統)項目中抽身,並且在1993年7月27日推出Windows 3.1,一個以OS/2為基礎的圖形化作業系統。並在1995年8月15日推出Windows 95。直到這時,Windows系統依然是建立在MS-DOS的基礎上,因此消費者莫不期待微軟在2000年所推出的Windows 2000上,因為它才算是第一個脫離MS-DOS基礎的圖形化作業系統。

下面的為Windows NT系統的架構:在硬體階層之上,有一個由微核心直接接觸的硬體抽象層(HAL),而不同的驅動程式以模組的形式掛載在核心上執行。因此微核心可以使用諸如輸入輸出、檔案系統、網路、信息安全機制與虛擬記憶體等功能。而系統服務層提供所有統一規格的函式調用庫,可以統一所有副系統的實作方法。例如儘管POSIX與OS/2對於同一件服務的名稱與調用方法差異甚大,它們一樣可以無礙地實作於系統服務層上。在系統服務層之上的副系統,全都是使用者模式,因此可以避免使用者程式執行非法行動。

簡化版本的Windows NT抽象架構

使用者

模式 OS/2

應用程式 Win32

應用程式 DOS

程式 Win16

應用程式 POSIX

應用程式

其他DLL函式館 DOS 系統 Windows 模擬系統

OS/2 副系統 Win32 副系統 POSIX.1 副系統

核心

模式 系統服務層

輸入輸出管理

檔案系統、網路系統 對象管理系統 / 安全管理系統 / 進程管理 / 對象間通訊管理 / 進程間通訊管理 / 虛擬記憶體管理

微核心 視窗管理程式

驅動程式 硬體抽象層(HAL) 圖形驅動

硬體(處理器、記憶體、外部設備等)

副系統架構第一個實作的副系統群當然是以前的微軟系統。DOS副系統將每個DOS程式當成一進程執行,並以個別獨立的MS-dos虛擬機器承載其運行環境。另外一個是Windows 3.1模擬系統,實際上是在Win32副系統下執行Win16程式。因此達到了安全掌控為MS-DOS與早期Windows系統所撰寫之舊版程式的能力。然而此架構只在Intel 80386處理器及後繼機型上實作。且某些會直接讀取硬體的程式,例如大部分的Win16遊戲,就無法套用這套系統,因此很多早期遊戲便無法在Windows NT上執行。Windows NT有3.1、3.5、3.51與4.0版。Windows 2000是Windows NT的改進系列(事實上是Windows NT 5.0)、Windows XP(Windows NT 5.1)以及Windows Server 2003(Windows NT 5.2)與Windows Vista(Windows NT 6.0)也都是立基於Windows NT的架構上。

而本年代漸漸增長並越趨複雜的嵌入式設備市場也促使嵌入式作業系統的成長。

今日

現代作業系統通常都有一個使用的繪圖設備的圖形化使用者界面,並附加如滑鼠或觸控面版等有別於鍵盤的輸入設備。舊的OS或效能導向的伺服器通常不會有如此親切的接口,而是以命令行接口(CLI)加上鍵盤為輸入設備。以上兩種接口其實都是所謂的殼,其功能為接受並處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。

選擇要安裝的作業系統通常與其硬體架構有很大關係,只有Linux與BSD幾乎可在所有硬體架構上執行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。在1990年代早期,個人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。

大型機與嵌入式系統使用很多樣化的作業系統。大型主機近期有許多開始支持Java及Linux以便共享其他平台的資源。嵌入式系統近期百家爭鳴,從給Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的Windows CE都有。

至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,第一個圖形用戶界面的作業系統,包括對於普通用戶的高級的多媒體能力。

嵌入式系統

嵌入式系統使用非常廣泛的作業系統(如VxWorks、eCos、SymbianOS及PalmOS)以及某些功能縮減版本的Linux或者其他作業系統。某些情況下,OS指稱的是一個自帶了固定套用軟體的巨大泛用程式。在許多最簡單的嵌入式系統中,所謂的OS就是指其上唯一的應用程式。

用例介紹

個人電腦

個人電腦市場目前分為兩大陣營,此兩種架構分別有支持的作業系統:

IBM兼容PC - 微軟Windows,Mac OS X,Unix家族的OS以及Linux 家族。

Apple Macintosh - Mac OS(一個Unix分支OS,屬BSD族系,Darwin),Windows(x86版本),Linux與BSD

大型電腦

最早的作業系統是針對20世紀60年代的大型主結構開發的,由於對這些系統在軟體方面做了巨大投資,因此原來的計算機廠商繼續開發與原來作業系統相兼容的硬體與作業系統。這些早期的作業系統是現代作業系統的先驅。現在仍被支持的大型主機作業系統包括:

Burroughs MCP-- B5000,1961 to Unisys Clearpath/MCP, present.

IBM OS/360 -- IBM System/360, 1964 to IBM zSeries, present

UNIVAC EXEC 8 -- UNIVAC 1108, 1964, to Unisys Clearpath IX, present.

現代的大型主機一般也可運行Linux或Unix變種。
嵌入式系統

嵌入式系統使用非常廣泛的作業系統(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能縮減版本的Linux或者其他作業系統。某些情況下,OS指稱的是一個內置了固定套用軟體的巨大泛用程式。在許多最簡單的嵌入式系統中,所謂的OS就是指其上唯一的應用程式。

類Unix系統

一個在Linux底下執行的客制化KDE桌面系統所謂的類Unix家族指的是一族種類繁多的OS,此族包含了System V、BSD與Linux。由於Unix是The Open Group的註冊商標,特指遵守此公司定義的行為的作業系統。而類Unix通常指的是比原先的Unix包含更多特徵的OS。

Unix系統可在非常多的處理器架構下執行,在伺服器系統上有很高的使用率,例如大專院校或工程套用的工作站。自由軟體Unix變種,例如Linux與BSD近來越來越受歡迎,它們也在個人桌面電腦市場上大有斬獲,例如Ubuntu系統,但大部分都是電腦高手在使用。

某些Unix變種,例如HP的HP-UX以及IBM的AIX僅設計用於自家的硬體產品上,而SUN的Solaris可安裝於自家的硬體或x86電腦上。蘋果電腦的Mac OS X是一個從NeXTSTEP、Mach以及FreeBSD共同派生出來的微核心BSD系統,此OS取代了蘋果電腦早期非Unix家族的Mac OS。經歷數年的披荊斬棘,自由開源的Unix系統逐漸蠶食鯨吞以往專利軟體的專業領域,例如以往電腦動畫運算巨擘──SGI的IRIX系統已被Linux家族及PLAN 9叢集所取代。

微軟Windows
Microsoft Windows系列作業系統是在微軟給IBM機器設計的MS-DOS的基礎上設計的圖形作業系統。現在的Windows系統,如Windows 2000、Windows XP皆是建立於現代的Windows NT核心。NT核心是由OS/2和OpenVMS等系統上借用來的。Windows 可以在32位和64位的IntelAMD的處理器上運行,但是早期的版本也可以在DEC Alpha、MIPS與PowerPC架構上運行。雖然由於人們對於開放原始碼作業系統興趣的提升,Windows的市場占有率有所下降,但是到2004年為止,Windows作業系統在世界範圍內占據了桌面作業系統90%的市場。

Windows系統也被用在低階和中階伺服器上,並且支持網頁服務的資料庫服務等一些功能。最近微軟花費了很大研究與開發的經費用於使Windows擁有能運行企業的大型程式的能力。

WindowsXP在2001年10月25日發布,2004年8月24日發布最新的升級包WindowsXP Service Pack 2。微軟最新的作業系統Windows Vista(開發代碼為Longhorn)於2007年1月30日發售。Windwos Vista增加了許多功能,尤其是系統的安全性和網路管理功能。Windows Vista擁有界面華麗的Aero Glass。

蘋果Mac OS

蘋果Mac OS系列作業系統是蘋果公司 (原稱蘋果電腦)給蘋果個人電腦系列設計的OS。

其他
大型主機以及嵌入式作業系統均與Unix或Windows家族關係不大,除了Windows CE、Windows NT Embedded 4.0及Windows XP Embedded是Windows的血親產品,以及數種*BSD和嵌入式Linux包為例外。

少數較舊的OS今日依然在一些需要穩定性的市場中活躍,例如IBM的OS/2BeOS以及XTS-400。

在達康時代狂潮過後,如AmigaOS與RISC OS等少數人使用的OS依然持續建立,以滿足狂熱的愛好者社群與特殊專業使用者。

歷史列表

年份 系統名稱
1956年 GM-NAA I/O
1959年 SHARE Operating System
1960年 IBSYS
1961年 CTSS MCP (Burroughs Large Systems)
1962年 GCOS
1964年 EXEC 8 OS/360 (宣稱)、 TOPS-10
1965年 Multics (宣稱) OS/360 (上市)、 Tape Operating System (TOS)
1966年 DOS/360 (IBM)、MS/8
1967年 ACP (IBM)、CP/CMS、 ITS、WAITS
1969年 TENEX 、 Unix
1970年 DOS/BATCH 11 (PDP-11)
1971年 OS/8
1972年 MFT (operating system) 、 MVT、 RDOS、SVS、VM/CMS
1973年 Alto OS、RSX-11D、RT-11、VME
1974年 MVS (MVS/XA)
1975年 BS2000
1976年 CP/M、TOPS-20
1978年 Apple DOS 3.1 (蘋果公司第一個作業系統)、TripOS、VMS Lisp Machine (CADR)
1979年 POS、NLTSS
1980年 OS-9、QDOS、SOS、XDE (Tajo)、Xenix
1981年 MS-DOS
1982年 Commodore DOS、SunOS (1.0)、Ultrix
1983年 Lisa OS、Coherent、Novell NetWare、ProDOS
1984年 Macintosh OS (系統 1.0)、MSX-DOS、QNX、UniCOS
1985年 AmigaOS、Atari TOS、MIPS OS、Oberon operating system、Microsoft Windows 1.0 (Windows第一版)
1986年 AIX、GS-OS、HP-UX
1987年 Arthur、IRIX (SGI推出的第一個版本號是3.0)、Minix、OS/2 (1.0)、Microsoft Windows 2.0
1988年 A/UX (蘋果電腦)、LynxOS、MVS/ESA、OS/400
1989年 1989年、NeXTSTEP (1.0)、RISC OS、SCO Unix (第三版)
1990年 Amiga OS 2.0、BeOS (v1)、OSF/1、Microsoft Windows 3.0
1991年 SunOS 4.1.x、Linux
1992年 386BSD 0.1、Amiga OS 3.0、Solaris 2.0 (SunOS 4.x的繼承者,以SVR4為基礎,而非BSD)、Microsoft Windo、s 3.1
1993年 Solaris 2.1、Solaris 2.2、Solaris 2.3、Plan 9 (第一版)、FreeBSD、NetBSD、Microsoft Windows NT 3.1 (第一版NT)
1994年 Solaris 2.4
1995年 Solaris 2.5、Digital UNIX (aka Tru64)、OpenBSD、OS/390、Microsoft Windows 95
1996年 Microsoft Windows95 OSR2(OSR=OEMServicerelease) (即:Windows 97)、Microsoft Windows NT 4.0
1997年 Solaris 2.6、Inferno、Mac OS 7.6 (第一版官方正式命名為Mac OS)、SkyOS
1998年 Solaris 7 (第一款64位元Solaris版本,是2.7捨棄主版本號的稱謂)、Microsoft Windows 98
1999年 AROS、Mac OS 8、Microsoft Windows 98 Second Edition
2000年 Solaris 8、AtheOS、Mac OS 9、MorphOS、Microsoft Windows 2000、Microsoft Windows Me、Mac OS X Public Beta (公開測試版)(2000年9月13日)
2001年 Mac OS X 10.0 Cheetah(印度豹)(2001年3月24日)、Amiga OS 4.0 (2001年5月)、Mac OS X 10.1 Puma(美洲獅)(2001年9月25日)、Microsoft Windows XP、z/OS
2002年 Solaris 9 for SPARC、Microsoft Windows XP 64-bit Edition、Windows XP Tablet PC Edition、Windows XP Media Center Edition、Syllable、Mac OS X 10.2 Jaguar(美洲虎)(2002年8月23日)
2003年 Solaris 9 for x86、Microsoft Windows Server 2003 (2003年3月28日)、Microsoft Windows XP 64-bit Edition - 以Microsoft Windows Server 2003為基礎,同一天釋出。、Mac OS X 10.3 Panther(黑豹)(2003年10月24日)
2004年 Microsoft Windows XP Media Center Edition
2005年 Solaris 10、Microsoft Windows XP Professional x64 Edition、Mac OS X 10.4 Tiger(老虎)(2005年4月29日)
2006年 Microsoft Windows Vista、Linux Mint、iOS(原名iPhone OS)
2007年 Mac OS X 10.5 Leopard(美洲豹)(2007年10月26日)
2008年 Ubuntu 8.04 LTS、OpenSolaris 08/05、Android、Ubuntu 8.10、OpenSolaris 08/11、Windows Server 2008
2009年 Ubuntu 9.04、Mac OS X v10.6 Snow Leopard (雪豹)(2009年8月28日)、Windows Server 2008 R2、Windows 7、Ubuntu 9.10、Chrome OS
2010年 ubuntu 10.04、ubuntu 10.10、Windows Phone 7
2011年 Ubuntu 11.04、Ubuntu 11.10、Mac OS X 10.7 Lion
2012年 Ubuntu 12.04、Ubuntu 12.10、OS X 10.8 Mountain Lion、Microsoft Windows 8(2012年10月25日)、Mac OS X Server v10.4 “Tiger”、Microsoft Windows Server 2012、Windows Phone 8
2013年 Windows 8.1、Windows Server 2012 R2、Ubuntu 13.04、Mac OS X 10.9 Mavericks
2014年 China Operating System(中國作業系統)、Ubuntu 14.04、Windows Phone 8.1 Common operating platform(中國通用操作平台 0.1)、Mac OS X v10.10Yosemite、 Windows Technical Preview、SteamOS

管理方法

作業系統位於底層硬體與用戶之間,是兩者溝通的橋樑。用戶可以通過作業系統的用戶界面,輸入命令。作業系統則對命令進行解釋,驅動硬體設備,實現用戶要求。以現代觀點而言,一個標準個人電腦的OS應該提供以下的功能:

進程管理(Processing management)

記憶空間管理(Memory management)

檔案系統(File system)

網路通訊(Networking)

安全機制(Security)

使用者界面(User interface)

驅動程式(Device drivers)

進程管理

不管是常駐程式或者應用程式,他們都以進程為標準執行單位。當年運用馮紐曼架構建造電腦時,每箇中央處理器最多只能同時執行一個進程。早期的OS(例如DOS)也不允許任何程式打破這個限制,且DOS同時只有執行一個進程(雖然DOS自己宣稱他們擁有終止並等待駐留(TSR)能力,可以部分且艱難地解決這問題)。現代的作業系統,即使只擁有一個CPU,也可以利用多進程(multitask)功能同時執行複數進程。進程管理指的是作業系統調整複數進程的功能。

由於大部分的電腦只包含一顆中央處理器,在單核心(Core)的情況下多進程只是簡單迅速地切換各進程,讓每個進程都能夠執行,在多核心或多處理器的情況下,所有進程通過許多協同技術在各處理器或核心上轉換。越多進程同時執行,每個進程能分配到的時間比率就越小。很多OS在遇到此問題時會出現諸如音效斷續或滑鼠跳格的情況(稱做崩潰(thrashing),一種OS只能不停執行自己的管理程式並耗盡系統資源的狀態,其他使用者或硬體的程式皆無法執行)。進程管理通常實踐了分時的概念,大部分的OS可以利用指定不同的特權等級(priority),為每個進程改變所占的分時比例。特權越高的進程,執行優先權越高,單位時間內占的比例也越高。互動式OS也提供某種程度的回饋機制,讓直接與使用者互動的進程擁有較高的特權值。

除了進程管理之外,OS尚有擔負起進程間通訊(IPC)、進程異常終止處理以及死結(Dead lock)偵測及處理等較為艱深的問題。

在進程之下尚有執行緒的問題,但是大部分的OS並不會處理執行緒所遭遇的問題,通常OS僅止於提供一組API讓使用者自行操作或通過虛擬機器的管理機制控制執行緒之間的互動。

記憶體管理
根據帕金森定律:“你給程式再多記憶體,程式也會想盡辦法耗光”,因此程式設計師通常希望系統給他無限量且無限快的記憶體。大部分的現代電腦記憶體架構都是階層式的,最快且數量最少的暫存器為首,然後是高速快取、記憶體以及最慢的磁碟儲存設備。而OS的記憶體管理提供尋找可用的記憶空間、配置與釋放記憶空間以及交換記憶體和低速儲存設備的內含物……等功能。此類又被稱做虛擬記憶體管理的功能大幅增加每個進程可獲得的記憶空間(通常是4GB,即使實際上RAM的數量遠少於這數目)。然而這也帶來了微幅降低執行效率的缺點,嚴重時甚至也會導致進程崩潰。

記憶體管理的另一個重點活動就是藉由CPU的幫助來管理虛擬位置。如果同時有許多進程儲存於記憶設備上,作業系統必須防止它們互相干擾對方的記憶體內容(除非通過某些協定在可控制的範圍下操作,並限制可存取的記憶體範圍)。分割記憶體空間可以達成目標。每個進程只會看到整個記憶體空間(從0到記憶體空間的最大上限)被配置給它自己(當然,有些位置被OS保留而禁止存取)。CPU事先存了幾個表以比對虛擬位置與實際記憶體位置,這種方法稱為分頁(paging)配置。

藉由對每個進程產生分開獨立的位置空間,OS也可以輕易地一次釋放某進程所占據的所有記憶體。如果這個進程不釋放記憶體,OS可以退出進程並將記憶體自動釋放。

磁碟與檔案系統
所謂的檔案系統,通常指稱管理磁碟數據的系統,可將數據以目錄或檔案的型式儲存。每個檔案系統都有自己的特殊格式與功能,例如日誌管理或不需磁碟重整。

OS擁有許多種內置檔案系統。例如Linux擁有非常廣泛的內置檔案系統,如ext2、ext3、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS與Google檔案系統。Linux也支持非本地檔案系統,例如XFS、JFS、FAT家族與NTFS。另一方面,Windows能支持的檔案系統只有FAT12、FAT16、FAT32與NTFS。NTFS系統是Windows上最可靠與最有效率的檔案系統。其他的FAT家族都比NTFS老舊,且對於檔案長度與分割磁碟能力都有很大限制,因此造成很多問題。而UNIX的檔案系統多半是UFS,而UNIX中的一個分支Solaris最近則開始支持一種新式的ZFS.

大部份上述的檔案系統都有兩種建置方法。系統可以以日誌式(Journaling file system)或非日誌式建置。日誌式檔案系統可以以較安全的手法執行系統回復。如果一個沒有日誌式建置的檔案系統遇上突然的系統崩潰,導致數據建立在一半時停頓,則此系統需要特殊的檔案系統檢查工具才能撤消;日誌式則可自動回復。微軟的NTFS與Linux的ext3、reiserFS與JFS都是日誌式檔案系統。

每個檔案系統都實作相似的目錄/子目錄架構,但在相似之下也有許多不同點。微軟使用“\”符號以建立目錄/子目錄關係,且檔案名稱稱忽略其大小寫差異;UNIX系統則是以“/”建立目錄架構,且檔案名稱稱大小寫有差異。

網路

許多現代的OS都具備操作主流網路通訊協定TCP/IP的能力。也就是說這樣的作業系統可以進入網路世界,並且與其他系統分享諸如檔案、印表機與掃描器等資源。

許多OS也支持多個過去網路啟蒙時代的各路網路通訊協定,例如IBM建立的SNA、DEC在它所生產的系統所設定的DECnet架構與微軟為Windows製作的特殊通訊協定。還有許多為了特殊功能而研發的通訊協定,例如可以在網路上提供檔案存取功能的NFS系統。現今大量用於影音流(Streaming media)及遊戲訊息傳送的UDP協定等。

安全

大多數OS都含有某種程度的信息安全機制。信息安全機制主要基於兩大理念:

OS提供外界直接或間接存取數種資源的管道,例如本地端磁碟機的檔案、受保護的特權系統調用(System call)、使用者的隱私數據與系統執行的程式所提供的服務。

OS有能力認證(Authorization)資源存取的請求。允許通過認證的請求並拒絕無法通過的非法請求,並將適當的權力授權(Authentication)給此請求。有些系統的認證機制僅簡略地把資源分為特權或非特權,且每個請求都有獨特的身份辨識號碼,例如使用者名稱。資源請求通常分成兩大種類:

內部來源:通常是一個正在執行的程式發出的資源請求。在某些系統上,一個程式一旦可執行就可做任何事(例如DOS時代的病毒),但通常OS會給程式一個識別代號,並且在此程式發出請求時,檢查其代號與所需資源的存取許可權關係。

外部來源:從非本地端電腦而來的資源請求,例如遠程登入本機電腦或某些網路連線請求(FTP或HTTP)。為了識別這些外部請求,系統也許會對此請求提出認證要求。通常是請求輸入使用者名稱以及相對應的密碼。系統有時也會套用諸如磁卡或生物識別數據的它種認證方法。在某些例子,例如網路通訊上,通常不需通過認證即可存取資源(例如匿名存取的FTP伺服器或P2P服務)。

除了允許/拒絕形式的安全機制,一個高安全等級的系統也會提供記錄選項,允許記錄各種請求對資源存取的行為(例如“誰曾經讀了這個檔案?”)。

肇因於軍方與商業組織將敏感數據記錄在電腦上,安全機制在OS歷史上是一個被長久關注與討論的問題。美國國防部(DoD)便創立了《可信賴之計算機系統評鑑程式》(TCSEC),此手冊確立了評鑑安全機製成效的基本原則。這對OS作者來說非常重要,因為TCSEC是用於評鑑、分類與選拔出用於處理、儲存與獲取敏感或機密數據的電腦系統的標準程式。

內部信息安全
內部信息安全可視為防止正在執行的程式任意存取系統資源的手段。大多OS讓普通程式可直接操作電腦的CPU,所以產生了一些問題,例如怎樣把可如OS一樣處理事務、執行同樣特殊指令的程式強迫停止,畢竟在此情境下,OS也只是另一個平起平坐的程式。為通用OS所生產的CPU通常於硬體層級上實踐了一定程度的特殊指令保護概念。通常特權層級較低的程式想要執行某些特殊指令時會被阻斷,例如直接存取像是硬碟之類的外部設備。因此,程式必須得經由詢問OS,讓OS執行特殊指令來存取磁碟。因此OS就有機會檢查此程式的識別身份,並依此接受或拒絕它的請求。

在不支持特殊指令架構的硬體上,另一個也是唯一的保護方法,則是OS並不直接利用CPU執行使用者的程式,而是藉由模擬一個CPU或提供一p-Code系統(偽代碼執行機),像是Java一樣讓程式在虛擬機器上執行。

內部安全機制在多使用者電腦上特別重要:它允許每個系統使用者擁有自己個人的檔案與目錄,且其他使用者不能任意存取或刪除。因為任何程式都可能繞過OS的監控,更有可能繞過側錄程式的監控,擁有強制力的內部安全機制在側錄啟動時也非常重要。

外部信息安全

通常一個作業系統會為其他網路上的電腦或使用者提供(主持)各種服務。這些服務通常藉由連線埠或OS網路地址後的數字存取點提供。通常此服務包括提供檔案共享(NTFS)、列印共享、電子郵件、網頁服務與檔案傳輸協定(FTP)。外部信息安全的最前線,是諸如防火牆等的硬體設備。在OS內部也常設定許多種類的軟體防火牆。軟體防火牆可設定接受或拒絕在OS上執行的服務與外界的連線。因此任何人都可以安裝並執行某些不安全的網路服務,例如Telnet或FTP,並且設定除了某些自用通道之外阻擋其他所有連線,以達成防賭不良連線的機制。

使用者界面

作業系統作業系統

今日大部分的OS都包含圖形化使用者界面。有幾類較舊的OS將圖形化使用者界面與核心緊密結合,例如最早的Windows與Mac OS實作產品。此種手法可提供較快速的圖形回應能力,且實作時不需切割模組因而較為省工,但是會有強烈副作用,例如圖形系統崩潰將導致整個系統崩潰,例如死亡藍螢幕。許多近代的OS已模組化,將圖形界面的副系統與核心分開(已知Linux與Mac OS X原先就是如此設計,而某些擴充版本的Windows終於也採用此手法)。

許多OS允許使用者安裝或創造任何他們喜歡的圖形界面。大部分的Unix與Unix派生系統(BSD、Linux與Minix)通常會安裝X Window系統配合GNOME或KDE桌面環境。而某些OS就沒有這么彈性的圖形化使用者界面,例如Windows。這類的OS只能通過外加的程式來改變其圖形化使用者界面,甚或根本只能改變諸如選單風格或顏色配置等部分。

圖形化使用者界面與時並進,例如Windows在每次新版本上市時就會將其圖形化使用者界面改頭換面,而Mac OS的GUI也在Mac OS X上市時出現重大轉變。

驅動程式
所謂的驅動程式是指某類設計來與硬體互動的電腦軟體。通常是一設計完善的設備互動接口,利用與此硬體連線的電腦匯排流或通訊子系統,提供對此設備下令與接收信息的功能;以及最終目的,將訊息提供給OS或應用程式。驅動程式是針對特定硬體與特定OS設計的軟體,通常以作業系統核心模組、套用軟體包或普通電腦程式的形式在OS核心底下執行,以達到通透順暢地與硬體互動的效果,且提供硬體在處理異步的時間依賴性接口(asynchronous time-dependent hardware interface)時所需的中斷處理程式(Interrupt handler)。

設計驅動程式的主要目的在於操作抽象化,任何硬體模組,即使是同一類的設備,在硬體設計面上也有巨大差異。廠商推出的較新模組通常更可靠更有效率,控制方法也會有所不同。電腦與其OS每每不能預期那些現有與新設備的變異之處,因此無法知道其操作方法。為解決此問題OS通常會主動制訂每種設備該有的操作方式,而驅動程式功能則是將那些OS制訂的行為描述,轉譯為可讓設備了解的自定義操作手法。

理論上適合的驅動程式一旦安裝,相對應的新設備就可以無誤地執行。此新驅動程式可以讓此設備完美地切合在OS中,讓使用者察覺不到這是OS原本沒有的功能。

詳細結構

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

驅動程式 - 最底層的、直接控制和監視各類硬體的部分,它們的職責是隱藏硬體的具體細節,並向其他部分提供一個抽象的、通用的接口。

核心 - 作業系統之最核心部分,通常運行在最高特權級,負責提供基礎性、結構性的功能。

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

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

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

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

核心結構

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

核心的結構可以分為單核心、微核心、超微核心、以及外核等。

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

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

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

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

工作方式

作業系統的分類沒有一個單一的標準,可以根據工作方式分為批處理作業系統、分時作業系統、實時作業系統、網路作業系統和分散式作業系統等;根據架構可以分為單核心作業系統等;根據運行的環境,可以分為桌面作業系統,嵌入式作業系統等;根據指令的長度分為8bit、16bit、32bit、64bit的作業系統。

通用與專用、嵌入式

通用作業系統是面向一般沒有特定套用需求的作業系統。由於沒有特定的套用需求,通用作業系統為了適應更廣泛的套用,需要支持更多的硬體與軟體,需要針對所有的用戶體驗,對系統進行更新。通用作業系統是一個工程量繁重的作業系統。

實時與非實時

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

常用實時作業系統有QNX、VxWorks、RTLinux等等,而Linux、多數UNIX、以及多數Windows家族成員等都屬於非實時作業系統。作業系統整體的實時性通常依仗核心的實時能力,但有時也可在非實時核心上建立實時作業系統,很多在Windows上建立的實時作業系統就屬於此類。

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

未來展望

研究與建立未來的作業系統依舊進行著。作業系統朝提供更省電、網路化、華麗的使用者界面的方向來改進。Linux及一些類UNIX OS正努力讓自己成為個人用戶舒適的環境。GNU Hurd是一個企圖完全兼容Unix並加強許多功能的微核心架構。微軟Singularity是一個奠基於.Net並以建立較佳記憶體保護機制為目目標研究計畫。

相關詞條

相關搜尋