电脑操作系统

**作業系統**（英語：**O**perating **S**ystem，縮寫：**OS**）是一組主管並控制電腦操作、運用和執行硬體、軟體資源和提供公共服務來組織使用者互動的相互關聯的系統軟體程式，同時也是電腦系統的核心與基石。作業系統需要處理如管理與組態記憶體、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作介面。

作業系統的型態非常多樣，不同機器安裝的作業系統可從簡單到複雜，可從行動電話的嵌入式系統到超級電腦的大型作業系統。許多作業系統製造者對它涵蓋範疇的定義也不盡一致，例如有些作業系統整合了圖形化使用者介面，而有些僅使用命令列介面，將圖形化使用者介面視為一種非必要的應用程式。

作業系統理論在電腦科學中，為歷史悠久而又活躍的分支；而作業系統的設計與實現則是軟體工業的基礎與核心。

## 歷史

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

總而言之，作業系統的歷史就是一部解決電腦系統需求與問題的歷史。

### 1980 年代前

第一部電腦並沒有作業系統。這是由於早期電腦的建立方式（如同建造機械算盤）與效能不足以執行如此程式。但在 1947 年發明了電晶體，以及莫里斯・威爾克斯發明的微程式方法，使得電腦不再是機械裝置，而是電子產品。系統管理工具以及簡化硬體操作流程的程式很快就出現了，且成為作業系統的起源。到了 1960 年代早期，商用電腦製造商製造了批次處理系統，此系統可將工作的建置、排程以及執行序列化。此時，廠商為每一台不同型號的電腦創造不同的作業系統，因此為某電腦而寫的程式無法移植到其他電腦上執行，即使是同型號的電腦也不行。

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

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

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

### 1980 年代

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

早期最著名的磁碟啟動型作業系統是 CP/M，它支援許多早期的微電腦。最早期的 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 成爲了 IBM PC 上面最常用的作業系統（IBM 自己也有推出 DOS，稱為 IBM-DOS 或 PC-DOS）。MS-DOS 的成功使得微軟成為地球上最賺錢的公司之一。

而 1980 年代另一個崛起的作業系統異數是 Mac OS，此作業系統緊緊與麥金塔電腦綑綁在一起。此時一位全錄帕羅奧多研究中心的員工 Dominik Hagen 拜訪了蘋果電腦的史蒂夫・賈伯斯，並且向他展示了此時全錄發展的圖形化使用者介面。蘋果電腦驚為天人，並打算向全錄購買此技術，但因帕羅奧多研究中心並非商業單位而是研究單位，因此全錄回絕了這項買賣。在此之後蘋果一致認為個人電腦的未來必定屬於圖形使用者介面，因此也開始發展自己的圖形化作業系統。

### 1990 年代

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

上一年代於市場崛起的蘋果電腦，由於舊系統的設計不良，使得其後繼發展不力，蘋果電腦決定重新設計作業系統。經過許多失敗的專案後，蘋果於 1997 年釋出新作業系統 ——Mac OS X 的測試版，而後推出的正式版取得了巨大的成功。讓原先失意離開蘋果的史蒂夫・賈伯斯風光再現。

除了商業主流的作業系統外，從 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），所有的特殊指令衹能在核心模式執行，此措施讓核心可以完美管理系統內部與外部裝置，並且拒絕無權限的行程提出的請求。因此理論上任何應用程式執行時的錯誤，都不可能讓系統當機。

 

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

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 的基礎上，不過微軟在這同時也在開發不依賴於 DOS 的 NT 系列 Windows 系統，並在後來完全放棄了 DOS 而轉向 NT 作為 Windows 的基礎。

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

 

 
子系統架構第一個實作的子系統群當然是以前的微軟系統。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 的架構上。

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

### 今日

現代作業系統通常都有一個使用的繪圖裝置的圖形化使用者介面（GUI），並附加如滑鼠或觸控面版等有別於鍵盤的輸入裝置。舊的 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 都有。

#### 個人電腦

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

* Apple Macintosh - Mac OS X，Windows（僅 Intel 平台），Linux、BSD。
* IBM 相容 PC - Windows、Linux、BSD、Mac OS X（非正式支援）。

#### 大型電腦

最早的作業系統是針對 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 Dorado, present.

現代的大型主機一般也可執行 Linux 或 Unix 變種。

#### 嵌入式

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

#### 類 Unix 系統

所謂的**類 Unix** 家族指的是一族種類繁多的 OS，此族包含了 System V、BSD 與 Linux。由於 Unix 是 The Open Group 的註冊商標，特指遵守此公司定義的行為的作業系統。而類 Unix 通常指的是比原先的 Unix 包含更多特徵的 OS。

類 Unix 系統可在非常多的處理器架構下執行，在伺服器系統上有很高的使用率，例如大專院校或工程應用的工作站。

1991 年，芬蘭學生林納斯・托瓦茲根據類 Unix 系統 Minix 編寫並發布了 Linux 作業系統核心，其後在理察・斯托曼的建議下以 GNU 通用公共許可證發布，成為自由軟體 Unix 變種. Linux 近來越來越受歡迎，它們也在個人桌面電腦市場上大有斬獲，例如 Ubuntu 系統。

某些 Unix 變種，例如惠普的 HP-UX 以及 IBM 的 AIX 僅設計用於自家的硬體產品上，而 SUN 的 Solaris 可安裝於自家的硬體或 x86 電腦上。蘋果電腦的 Mac OS X 是一個從 NeXTSTEP、Mach 以及 FreeBSD 共同衍生出來的微核心 BSD 系統，此 OS 取代了蘋果電腦早期非 Unix 家族的 Mac OS。

經歷數年的披荊斬棘，自由開源的 Linux 系統逐漸蠶食以往專利軟體的專業領域，例如以往電腦動畫運算巨擘──矽谷圖形公司（SGI）的 IRIX 系統已被 Linux 家族及貝爾實驗室研發小組設計的九號計畫與 Inferno 系統取代，皆用於分散運算式環境。它們並不像其他 Unix 系統，而是選擇內建圖形化使用者介面。九號計畫原先並不普及，因為它剛推出時並非自由軟體。後來改在自由及開源軟體許可證 Lucent Public License 釋出後，便開始擁有廣大的使用者及社群。Inferno 已被售予 Vita Nuova 並以 GPL/MIT 許可證釋出。

當前，計算機按照計算能力排名世界 500 強中 472 台使用 Linux，6 台使用 Windows，其餘為各類 BSD 等 Unix。

#### 微軟 Windows

Microsoft Windows 系列作業系統是在微軟給 IBM 機器設計的 MS-DOS 的基礎上設計的圖形作業系統。現在的 Windows 系統，如 Windows 2000、Windows XP 皆是建立於現代的 Windows NT 核心。NT 核心是由 OS/2 和 OpenVMS 等系統上借用來的。Windows 可以在 32 位元和 64 位元的 Intel 和 AMD 的處理器上運行，但是早期的版本也可以在 DEC Alpha、MIPS 與 PowerPC 架構上運行。

雖然由於人們對於開放原始碼作業系統興趣的提升，Windows 的市場佔有率有所下降，但是到 2004 年為止，Windows 作業系統在世界範圍內佔據了桌面作業系統 90% 的市場。

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

Windows XP 在 2001 年 10 月 25 日發佈，2004 年 8 月 24 日發佈服務包 2（Service Pack 2），2008 年 4 月 21 日發佈最新的服務包 3，但只有 32 位元（Service Pack 3）。

Windows XP 的下一代為 Windows Vista（開發代碼為 Longhorn）於 2007 年 1 月 30 日發售。Windows Vista 增加了許多功能，尤其是系統的安全性和網路管理功能，並且其擁有介面華麗的 Aero Glass。但是整體而言，其在全球市場上的口碑卻並不是很好。其後繼者 Windows 7 則是於 2009 年 10 月 22 日發售，Windows 7 改善了 Windows Vista 為人詬病的效能問題，相較於 Windows Vista，在同樣的硬體環境下，Windows 7 的表現較 Windows Vista 為好。

Windows 8 於 2012 年 10 月 26 日發售，與 Windows Phone 8 共享核心，取消了開始按鈕，並使用了全新動態磚介面，並可使用 Windows 市集購買安裝 App，但由於整體介面相較於前幾版是很大的更改，以及為觸控設計的介面，讓不少鍵盤滑鼠使用者比較不習慣。微軟於隔年 2013 年 10 月 18 日發布了 Windows 8.1，並加回了開始按鈕。

而最多人使用的 Windows 的 Windows 10 則是於 2015 年 7 月 29 日發售。而每次大更新後就更改版本號，目前最新為 21H2。會在 2025 年 10 月 25 日停止支援 Windows 10 家用版及專業版

Windows 11 於 2021 年 10 月 5 日發行 ISO 等安裝檔，但無發售盒裝版。是目前最新的 Windows，也是唯一可以安裝 Android App 與只有 64 位元版的 Windows

#### 蘋果 macOS

**macOS**，前稱「Mac OS X」或「OS X」，是一套執行於蘋果 Macintosh 系列電腦上的作業系統。Mac OS 是首個在商用領域成功的圖形化使用者介面系統。Macintosh 開發成員包括比爾・阿特金森（Bill Atkinson）、傑夫・拉斯金（Jef Raskin）和安迪・赫茨菲爾德（Andy Hertzfeld）。從 OS X 10.8 開始在名字中去掉 Mac，僅保留 OSX 和版本號。在 WWDC 2016 上，蘋果公司將 OS X 更名為 macOS，現行的最新的系統版本是 macOS。

#### Chrome OS

Google Chrome OS 是一項 Google 的輕型電腦作業系統計劃，其基於 Google 的瀏覽器 Google Chrome 的 Linux 核心。

#### 其他

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

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

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

優秀的作業系統必定要具備能讓各種能力級別的使用者滿足各種需求的工具包視覺化的高效簡便程式環境，以程式來建立程式，就如立法的法律指導規範新的法案的建立。這其實是作業系統所隱含的一部分，決定了可以有多強的擴充能力。比如，某個作業系統有對應的開發者工具包整合環境程式並且是個視覺化的，還能讓能力不太高的人一看能懂的，用於修改某個聲音合成器包含頻譜顯示，可要是作業系統本身不支援也沒有提供可用的工具程式，就會變得很繁瑣，很可能為了達到這個目標，開發者就要預備好各種相關的工具程式，甚至自己來編寫一系列相關的工具程式建立專門的工具包，最後還要檢查代碼。若是有人想通過音樂來生成五線譜，要對類似標記式語言的五線譜規則對應一下，對各種音色，音準採集並總結出一整套規律，通過聲音辨識可以辨識出樂器的類別等，進而標出樂符完成從聲音到樂譜的轉換並生成。可是對人聲卻又更為複雜也不必要如此。若是需要用聲音的波形圖重現聲音，沒有相關的工具集是相當難實現，另外只有使用同一套聲音的波形繪製規則的所生成的波形圖用來再現的聲音才是原來的聲音。

在作為商品出售的作業系統軟體的歷史中常常因為其中包含的瀏覽器，媒體播放器在美國遭到反壟斷起訴，差點使得功能上殘缺不全。少數作業系統軟體能夠提供較為全面的 App 和實用工具程式。

作業系統軟體的編譯也需要對應的編譯環境。

在同一台電腦上執行不同的作業系統軟體，就能夠以不同的方式來使用電腦資源。比如，在 Mac 上執行 OS X 和 Windows 以兩種不同的技術 OpenCL，Core Image:DirectX 來使用圖形卡實現類似的作用。

通過圖像辨識和聲音辨識來進行資訊搜尋。

能夠滿足不同需求所要求的精確程度對時間的精細劃分，以及尺度細分可以互聯，同步，協調原本必須由多個人協同合作才能完成的隨時需要調整並相互同步的操控作業，這就必須有即時訊息傳送顯示，視覺化的用於協調同步計劃任務的組態指令碼，以及執行這樣計劃任務的完整組件。

### 未來

研究與建立未來的作業系統依舊進行著。作業系統朝提供更省電、網路化、易用、華麗的使用者介面的方向來改進。類 UNIX OS 通過和桌面環境開發者協作，正努力讓自己改進使用環境。

eyeOS 是一套基於 PHP 實現的半開源類比雲端運算作業系統，但其實質只是在網路瀏覽器中提供一種類似無界限的類獨立作業系統，其並非於任何類似虛擬化中實現的真正電腦作業系統，能提供諸如 Word、PPT、Excel 的在線處理功能…

GNU Hurd 是一個以完全相容 Unix 並加強許多功能為目標的微核心架構。微軟 Singularity 是一個奠基於.Net 並以建立較佳記憶體保護機制為目標的研究計畫。

## 功能

作業系統位於底層硬體與使用者之間，是兩者溝通的橋梁。使用者可以通過作業系統的使用者介面，輸入命令。作業系統則對命令進行解釋，驅動硬體裝置，實現使用者要求。以現代標準而言，一個標準 PC 的作業系統應該提供以下的功能：

### 行程管理

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

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

除了行程管理之外，作業系統尚有擔負起行程間通訊（IPC）、行程異常終止處理以及死結（Dead Lock）偵測及處理等較為艱深的問題。

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

### 記憶體管理

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

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

藉由對每個行程產生分開獨立的位置空間，作業系統也可以輕易地一次釋放某行程所佔據的所有記憶體。如果這個行程不釋放記憶體，作業系統可以結束行程並將記憶體自動釋放。

### 磁碟與檔案系統

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

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

大部份上述的檔案系統都有兩種建置方法。系統可以以日誌式或非日誌式建置。日誌式檔案系統可以以較安全的手法執行系統恢復。如果一個沒有日誌式建置的檔案系統遇上突然的系統崩潰，導致資料建立在一半時停頓，則此系統需要特殊的檔案系統檢查工具才能復原；日誌式則可自動恢復。微軟的 NTFS 與 Linux 的 ext3、ext4、reiserFS 與 JFS 都是日誌式檔案系統。

每個檔案系統都實作相似的目錄／子目錄架構，但在相似之下也有許多不同點。微軟使用「**\**」符號以建立目錄／子目錄關係，且檔案名稱忽略其大小寫差異；UNIX 系統則是以「**/**」建立目錄架構，且檔案名稱大小寫有差異。(其實這是給系統呼叫的，"/" 或 "\" 並不實際存在硬碟)

### 網路

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

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

### 安全

大多數作業系統都含有某種程度的資訊安全機制。資訊安全機制主要基於兩大理念：

* 作業系統提供外界直接或間接存取數種資源的管道，例如本地端磁碟機的檔案、受保護的特權系統呼叫、使用者的隱私資料與系統執行的程式所提供的服務。
* 作業系統有能力認證資源存取的請求。允許通過認證的請求並拒絕無法通過的非法請求，並將適當的權力授權（Authorization）給此請求。有些系統的認證機制僅簡略地把資源分為特權或非特權，且每個請求都有獨特的身分辨識號碼，例如使用者名稱。資源請求通常分成兩大種類：
  * 內部來源：通常是一個正在執行的程式發出的資源請求。在某些系統上，一個程式一旦可執行就可做任何事情（例如 DOS 時代的病毒），但通常作業系統會給程式一個識別代號，並且在此程式發出請求時，檢查其代號與所需資源的存取權限關係。
  * 外部來源：從**非本地端電腦**而來的資源請求，例如遠端登入本機電腦或某些網路連線請求（FTP 或 HTTP）。為了識別這些外部請求，系統也許會對此請求提出認證要求。通常是請求輸入使用者名稱以及相對應的密碼。系統有時也會應用諸如磁卡或生物識別資料的它種認證方法。在某些例子，例如網路通訊上，通常不需通過認證即可存取資源（例如匿名存取的 FTP 伺服器或 P2P 服務）。

除了允許／拒絕形式的安全機制，一個高安全等級的系統也會提供記錄選項，允許記錄各種請求對資源存取的行為（例如「誰曾經讀了這個檔案？」）。

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

#### 內部通訊安全

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

在不支援特殊指令架構的硬體上，另一個也是唯一的保護方法，則是作業系統並不直接利用 CPU 執行使用者的程式，而是藉由類比一個 CPU 或提供一 P-code 機系統（虛擬碼執行機），像是 Java 一樣讓程式在虛擬機器上執行。

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

#### 外部通訊安全

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

### 使用者介面

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

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

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

### 驅動程式

所謂的**驅動程式**（Device driver）是指某類設計來與硬體互動的電腦軟體。通常是一設計完善的裝置互動介面，利用與此硬體連接的電腦匯排流或通訊子系統，提供對此裝置下令與接收資訊的功能；以及最終目的，將訊息提供給作業系統或應用程式。驅動程式是針對特定硬體與特定作業系統設計的軟體，通常以作業系統核心模組、應用軟體包或普通電腦程式的形式在作業系統核心底下執行，以達到通透順暢地與硬體互動的效果，且提供硬體在處理非同步的時間依賴性介面（asynchronous time-dependent hardware interface）時所需的中斷處理常式。

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

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

## 結構

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

* **驅動程式** - 最底層的、直接控制和監視各類硬體的部分，它們的職責是隱藏硬體的具體細節，並向其他部分提供一個抽象的、通用的介面。
* **核心** - 作業系統之最核心部分，通常執行在最高特權級，負責提供基礎性、結構性的功能。
* **支承庫** - （亦作「**介面庫**」）是一系列特殊的程式庫，它們職責在於把系統所提供的基本服務包裝成應用程式所能夠使用的編程介面（API），是最靠近應用程式的部分。例如，GNU C 執行期庫就屬於此類，它把各種作業系統的內部編程介面包裝成 ANSI C 和 POSIX 編程介面的形式。
* **外圍** - 所謂外圍，是指作業系統中除以上三類以外的所有其他部分，通常是用於提供特定進階服務的部件。例如，在微核心結構中，大部分系統服務，以及 UNIX/Linux 中各種守護行程都通常被劃歸此列。

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

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

## 分類

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

### 核心結構

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

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

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

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

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

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

### 通用與專用、嵌入式

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

### 即時與非即時

「即時作業系统」（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 標準）。

### 8 位元、16 位元、32 位元、64 位元、128 位元

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

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

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

## 注釋

## 參考文獻

### 參照

### 來源

## 參閱

## 外部連結