Linux 核心研究室

核心演進史

1969
美國 AT&T 貝爾實驗室的 Ken Thompson、Dennis Ritchie 與 Douglas McIlroy 開始開發 UNIX 作業系統。

1969.12.28
Linus Benedict Torvalds 誕生於芬蘭赫爾辛基。

1984.01
美國的 Richard Stallman 發表 GNU 宣言。開始了偉大的 GNU 計劃,風起雲湧的開放軟體運動正式展開。

1984
美國國家科學基金會連接五個超級電腦中心及其它學術研究單位的 NFSnet,使用 TCP/IP 協定,成為 Internet 的骨幹。開啟網際網路時代。

1985.10.17
英特爾革命性的 32 位元處理器 80386 (i386) 問世。

1987.03.22
GCC (GNU Compiler Collection) 誕生。(首發行為 0.9 版)

1987
荷蘭 Vrije 大學 Andrew Stuart "Andy" Tanenbaum 教授出版了 Operating Systems Design and Implementation,並含 Minix 作業系統與原始程式。

1988
Linus 就讀赫爾辛基大學。

以上為造就 Linux 的史前重大事件

1991.07.03 Linux 濫觴
發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: GCC-1.40 and a posix question
訊息流水號: 1991Jul13, [email protected]
日 期: 3 Jul 91 10:00:50 GMT

網友們好:
因為我在進行一項 minix 專案,我對 POSIX 標準的定義很有興趣。誰能指點我
一個 (更好的) 在最新 POSIX 規格下機器可讀格式?有 FTP 站尤佳。

Linus Torvalds [email protected]

『一支穿雲箭,千軍萬馬來相見。』Torvalds 在 comp.os.minix 版發佈了這封 News 後,開啟作業系統新的局面。卅多年前 UNIX 打敗了 David N. Cutler 開發的 VMS;而廿餘年後 Cutler 開發的 Windows NT 打敗了 OS/2,準備大舉攻佔作業系統市場,卻因 Linux 的出現,而無法一統天下。
巧合:VMS 三個字母均向後移,正好是 WNT (Windows NT)。

1991.08.01 v0.01 (10,239 行; 63,362 位元組)
Linux 誕生,保證能跑的硬體為
  • 386 AT
  • VGA/EGA 螢幕
  • AT 的硬碟控制器 (IDE 硬碟尤佳)
  • 芬蘭鍵盤

Linus 在開發作業系統時,處處都以他熟悉的 Minix 作為比較。時而依 Minix 的模式開發,但有時因 Linus 的主觀意見,而與 Andrew S. Tanenbaum 教授在作業系統的想法上相左,導致了近年來最出名的作業系統竟然以單一核心 (Monolithic) 而非微核心 (Micro kernel) 的架構。而很多的部份 (諸如記憶體管理),讓後來的駭客們花了很多精神將它調整成跨平台的架構,否則 Linux 沒辦法走出 i386 濁水溪。

下列是 Linux 最初版本的一些特色。
  • 使用 gcc v1.40 開發編譯。
  • 完全使用 i386 晶片的硬體性能 (比 Linus 當初用的 Minix 的 8086 版強)。
  • 為節省處理訊息佇列等相關問題,不採用訊息通行 (message passing),較類似傳統的 Unix。
  • 多執行緒檔案系統。
  • 最小的作業切換 (task switching)。
  • 中斷不隱藏。
  • 核心、檔案系統與記憶體管理均使用相同的堆積處理程式。
  • 使用 i386 提供的分頁與節區功能來管理記憶體,只用了 memory.c 及 page.s 二支程式來做記憶體管理。
  • 提供了 fork、exit、getpid 等等核心功能,並已有例外處理及陷井 (traps) 能力。
  • 使用 Minix 1.5.10 檔案系統。
  • 已可執行 bash 及 update 二套程式。

這套作業系統 Linus 原先屬意的名字為 Freax。但 Ari Lemke 將原始程式放在 nic.funet.fi 站上時,卻以 Linux 當目錄名稱,而定名並沿用至今。

發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: What would you like to see most in minix?
摘 要: small poll for my new operating system
訊息流水號: <[email protected]>
日 期: 25 Aug 91 20:57:08 GMT
組 織: 赫爾辛基大學

嗨 minix 的用戶大家好 -

我在開發一個 (自由) 386(486) AT 相容的作業系統 (只是興趣,非為了像 gnu 偉大跟專業)。 從四月開始醞釀,現在已準備好開始了。 我希望喜歡或不喜歡 minix 的人能有任何回應,因我的作業系統有點像它 (一些檔案系統實體層 (為了實踐的原因) 跟其它東西間)。

我正在移植 bash(1.08) 與 gcc(1.40),這些看起來可運作。 這意謂我將在幾個月內將實踐,所以我想知道大多數的人需要什麼功能。 任何的建議都歡迎,但我不保證全部都會實作 :-)

補充: 是的,它不包含任何 minix 程式碼,且它是多執行緒的檔案系統。 它是不可移植的 (用 386 作業切換等),且它可能永不支援 AT 硬碟外的設備, 即我現有的設備 :-(.

1991.10.05 v0.02 (原始程式已佚)
發信人: [email protected] (Linus Benedict Torvalds)
討論區: comp.os.minix
主 題: Free minix-like kernel sources for 386-AT
訊息流水號: <[email protected]>
日 期: 5 Oct 91 05:41:06 GMT
組 織: 赫爾辛基大學

你曾渴望 minix-1.1 的美好日子,當人們可寫他們自己的驅動程式嗎? 沒有一個好的專案讓你可以依你需要修改並獲取作業系統經驗嗎? 當全部都要 minix 來跑時讓你沮喪嗎? 不再整夜寫一支漂亮的程式嗎? 那這篇可能是你要的 :-)

話說數月前,我開發一個自由的版本,看起來像 minix 在 AT-386 電腦執行。 它終於到一個階段,已經可以使用了 (雖然可能沒您想要的),我會將原始碼散佈。 這只是 0.02 版 (+1 (非常小的) 已經修補),但我有讓 bash/gcc/gnu-make/gnu-sed/compress 等成功跑在上面。 這個我的玩具專案己經在 nic.funet.fi (128.214.6.100) 的 /pub/OS/Linux 目錄中。該目錄並包括一些 README 檔及一些可以在 linux 下跑的二進位檔 (bash, update 與 gcc, 和一些你要的 :-) 全部的核心原始碼,無使用任何 minix 程式。 函式庫 (Library) 原始程式僅部份是自由免費的,所以現在不能散佈。 系統是可以編譯並也是可以運作。嘿嘿。 原始碼至二進位程式 (bash 及 gcc) 可以在 /pub/gnu 一些地方看到。

留神! 警告! 注意! 這些原始程式仍需要 minix-386 編譯 (用 gcc-1.40,或許 1.37.1 可以,但未測),若要執行,您需要 minix 設好它。 我的已經可以運作。您可能需要是專家來設定 (?),若是能取代 minix-386, 請忽略我。它現在需要對作業系統與 386 存取 minix 的專家。 系統需要 AT 相容硬碟 (IDE 尤佳) 與 EGA/VGA。 若您仍感興趣,請 ftp 下載 README/RELNOTES,或者將額外的訊息伊給我。

我 (幾乎) 可以聽到您自問 "為何?"。 Hurd 公佈了一年 (或二年,還是數月,誰知道),而我已取得 minix。 這是由 hacker 給 hacker 們的程式。 我喜愛這麼做,某人可能也喜歡看它抑或依他們的需求修改。 它仍小到很容易理解、使用與修正,我亦盼你們給我任何的意見。 我也有興趣收到任何人寫來的 minix 公用程式/函式庫。 若您的儘力是自由散佈 (在合法或免費),我也希望能聽到, 那麼我能將它加入系統。 我現在使用 Earl Chews estdio (感謝 Earl 好又有效的系統), 類似的工作也很歡迎。 您的版權當然原封不動。 若您樂意讓我使用您的程式碼。

Linus

附: 給 PHIL NELSON! 我不能直接找到你, 仍為 "forward error - strawberry unknown domain" 諸如此類。

1992.01.16 v0.12

1992.03.08 v0.95
  • 支援 X 視窗環境。

1993.07.18 v0.99.11
  • 開始使用 BogoMips 在開機時計算系統 busy-loop。

1994.03.02 v0.99.15j

1994.03.14 v1.0 (176,250 行; 1,016,601 位元組)

1994.04.03 v1.0.6

1994.04.17 v1.0.9

1994.04.06 v1.1.0

1994.08.06 v1.1.52

1995.03.02 v1.1.95

1995.03.07 v1.2 (310,950 行; 1,850,182 位元組)
  • 擴充設備驅動程式,開始移植至其它硬體平台。包括:Alpha, Sparc 與 Mips。

1995.06.12 v1.3

1996.05.10 v1.3.100

1996.06.09 v2.0 (777,956 行; 4,718,270 位元組)
  • 穩定的多硬體平台架構:x86、Alpha 及其它。
  • 防火牆、IP 偽裝。
  • 多 CPU 初始化。
  • 重新開發的跨平台架構核心。

1996.09.30 v2.1

1999.01.26 v2.2 (1,800,847 行; 10,592,549 位元組)
  • 對 Intel 類的 CPU 更好的支援:包括 AMD、Cyrix、Celeron、PII 等等。
  • 多 CPU 支援的修正。
  • 支援本地終端機 Frame buffer。
  • 檔案系統:支援多樣系統,包括微軟檔案系統、Solaris、BSD 等等。
  • 更多的磁碟機陣列支援。
  • 新的防火牆程式:ipchains。
  • 增強的網路程式:IPv6 亦支援等等。

1999.05.11 v2.3

2001.01.04 v2.4 (3,377,902 行)
  • CPU 支援:惠普 PA-RISC 處理器、艾克迅通訊的 ETRAX CRIS ("Code Reduced Instruction Set") 處理器。
  • 加入 ISA 隨插即用。
  • 加入 USB 與 PC 卡支援。
  • 加入藍芽支援。(2.4.6 及以後版本)
  • 檔案系統方面:加入邏輯磁區管理 (Logical Volume Manager, LVM) 第一版、磁碟機陣列等功能。

2001.11.23 v2.5

2003.12.17 v2.6 (5,929,913 行)
  • CPU 支援:日立 H8/300 系列、NEC v850、摩托羅拉 m68k 處理器、支援非統一記憶體存取 (Non-Uniform Memory Access, NUMA)、支援安迅資訊的 Voyager 架構、支援英特爾超緒處理 (hyperthreading) 與實體位址延伸 (Physical Address Extension, PAE)。
  • 整入 uClinux 微處理器。
  • 整入 ALSA 音效驅動程式。
  • 作業系統支援:
    • 進階可程式化中斷控制器 (Advanced Programmable Interrupt Controllers, APIC)。
    • 使用者與使用群組上限由六萬五處增至四十億。
    • 行程處理代碼從三萬二千增至十億。
    • 設備主代碼由 255 增至 4095,副代碼由 255 增至百萬。
    • 改進 64 位元支援,檔案系統增至 16TB。
    • 改進 overall responsiveness 互動處理,核心徹底變成可搶占 (pre-emptible) 及可重寫的 I/O 排程。
    • 支援快速使用者空間互斥 (fast userspace mutex, futex),允許原生 POSIX 執行緒函式庫 (Native POSIX Thread Library, NPTL) 使用可重寫執行緒架構。
    • 改進的模組載入器。
    • Linux 使用者模式整合。
    • 支援無限寬頻架構 (InfiniBand)。(2.6.11 與之後版本)
  • 儲存裝置支援:
    • 邏輯磁區管理 (LVM) 第二版。
    • 支援 SGI 的 XFS 檔案系統。
    • 新的 "系統檔案系統" (sysfs),降低 procfs 的系統相關資訊。
    • 網際網路小型電腦系統介面 (iSCSI) 支援。(2.6.12 與之後版本)
    • 檔案系統事件通告 (inotify) 支援。(2.6.13 與之後版本)
    • 核心使用者空間檔案系統 (FUSE)支援。(2.6.14 與之後版本)


參考資料:


Copyright (C) 2001-2026, Wilson Peng
All rights reserved.