前言

Linux是Internet的產物,從屬於一個學生(Linus Torvalds)的個人愛好演變成為一
個當今最流行的免費作業系統。對許多人而言,Linux是乎是個迷。 一個免費的東
西怎麼會有價值?在一個被一群軟體巨頭統治的(系統)軟體王國裡,一個由一些電
腦hackers編寫的作業系統如何能夠參與競爭?一個由不同的國家許多不同的人編寫
的軟體如何能夠保持其穩定性和高效性?這裡的答案是Linux具有非常好的可靠性,
高效性和競爭能力。許多大學和研究機構都在用Linux來作計算。許多人們已在其
PC上安裝了Linux。絕大多數公司都或多或少地在使用Linux。Linux被廣泛地用來瀏
覽web站點,檔案處理,發送email ,玩電腦游戲。Linux絕不是一個電腦界的
玩具,而是一個由全世界的愛好者開發的非常完善的,專業化的作業系統。
Linux 的源頭可以追溯到Unix 家族。1969年,貝爾實驗室的研究人員Ken Thompson其
開始在一台空閒的PDP-7機器上實驗其多用戶,多任務的作業系統(multi-user, multi-tasking
operating system) 。不久Dennis Richie和其他兩位同事加入了他的行列。他們與
實驗室中的其他同事一道開發出了最早期的Unix版本。Richie在早期的項目MULTICS
中發揮了很大的作用。Unix其實是MULTICS的雙關語。早期的Unix是用組合語言寫的。第
3版時採用了C語言。C語言是Richie設計並編寫的,以用來作為編寫作業系統設計的
語言。用C改寫過的Unix使得Unix可以被移植PDP-11/45 和DIGITAL 11/70 電腦上。
Unix移植到DIGITAL 11/70是一個歷史性的轉折,使得Unix正式從實驗室走向大型主機
計算環境。很快,絕大多數的電腦制造商都發布了其相應的Unix版本。
Linux誕生的原因極其簡單。Linus Torvalds,Linux的作者和主要管理者,當時窮
的只能夠付的起Minix。Minix是一個非常簡單,Unix風格的,被廣泛用在教學上的
作業系統。Linus對Minix的功能不是很滿意(譯者注:不知Andrew Tanenbaum看見這
句話會有何感想。“後生可畏?”。有興趣的讀者可以存取Andrew的主頁.)
決定自己動手編寫一個軟體。因為在學校裡每天用的都是Unix, 所以他選擇將Unix作
為他的軟體的模型.最開始的工作是在一台Intel 386 的PC機上。他的進展很迅速。
Linus對他所做的事情充滿了興趣,並通過剛剛出現的,還侷限在學術領域的電腦網路,
將已有的程式碼共享給其他的學生。 其他的人看見了Linus的軟體並開始加入開發的行列。
不同的人由於在使用Linux時碰到不同的問題,所以這個軟體也就不斷地被更新和完善。
不久之後,Linux就成為一個完整的作業系統了。值得注意的是Linux中沒有任何Unix程式碼,
而是根據POSIX標準重新編寫的Linux中使用了許多在Cam bridge , Massachusetts的Free
Software Foundation的提供GNU軟體。
多數人僅把Linux 當做一個簡單的工具來使用。也有許多用戶在Linux進行應用程式
的開發。只有很少數的人敢於為Linux寫設備驅動程式和核心的patches(譯者注:這
個詞不太好翻譯)。 Linus Torvalds接受來自任何人和地方的關於核心的補充和修改。
這似乎有點像無政府主義。當Linus嚴把質量關並由他自己將新的程式碼加入核心。當
然,在任何時候,從事Linux核心開發的人員畢竟是只有一少部份人。
大多數Linux用戶似乎不關心這個作業系統是如何構造和運行的。這不是個明智的決
定因為學習Linux是更多理解一個作業系統功能的有利途徑。Linux不僅僅是設計的
很好,更重要的是其原始碼是公開的。這是因為雖然作者擁有這個軟體的版權,但
在Free Software Foundation's GNU Public License的基礎上,原始碼是可以免費
獲取的。對剛接觸原始碼的人,起初會覺得迷惑當看見一些叫做kernel,mm,和net的
幾個目錄。它們含有些什麼?這些程式碼是如何工作的?為了解決上述問題,我們需要
的是對整個Linux的結構有個總體的了解。這也正是本書的目的:提供一個關於Linux核
心如何工作的清楚的畫面,從而使得當你在運行一些應用程式時,你可以明白操作
系統核心處正在發生著什麼(譯者注:這一點是為什麼要鼓勵應用程式開發者了解作業
系統的結構。例如,不理解作業系統的排程,很難想像一個應用程式開發者可以
編出一個高效的多執行緒並發程式)。
(此處譯者略去原作者的自我介紹,有興趣的讀者可以存取其site)
這本書講述的是Alpha AXP-based Linux版本(譯者注:這是因為作者在寫此書時在
Digital公司(後來被Compag吞並﹔著名的Alta Vista seearch engine出自Digital)任
職。然而95%的Linux核心原始碼是與具體的硬體平台無關的。換而言之,本書95%的
內容是講述與硬體無關的Linux核心。
關於讀者
本書不要求讀者必須具備任何知識和經驗的前提。我們假設讀者會在需要時補充相
關的知識。具備一定的電腦知識和C語言功底將幫助讀者更好地理解本書。
本書的組織
本書並不是關於Linux內部的手冊。它是關於通常意義上的作業系統,特別是對於Linux的
介紹。每一章節按照從”普通到特殊“的規則來概觀。首先在具體介紹細節之前,
我們給出一個對核心子系統的綜述。
關於核心的具體演算法被特意地略去。有興趣的讀者可以參閱具體的原始碼。本書將
重點放在核心資料結構和其之間的關系上。
本書每一章都相對獨立,就像每一個Linux子系統完成相對獨立的功能一樣。當然章
節之間也是相關聯的。例如,你不能很好地描述一個程序如果不理解虛擬記憶體是如
何工作的。
硬體基礎章節給出一個對當代PC的簡要介紹。一個作業系統必須工作在一個硬體基
礎上。作業系統中的某些功能是與硬體相關的。為了理解Linux作業系統,讀者需要
具備一定的底層硬體知識。
軟體基礎章節介紹了基本的軟體知識原理並論及了組合語言和C語言。它們都是編寫一個
作業系統不可缺少的工具。另外本章給出了對作業系統的功能和目標的一個綜述。
記憶體管理章節描述了Linux如何管理系統中的實體和虛擬記憶體。
程序章節描述了什麼是一個程序,Linux核心如何創建,管理和刪除系統中的程序。
程序之間,程序與核心之間通過通訊來調整/安排它們的行為。Linux支援很多種進
程間通訊--IPC(Inter-Process Communication)機制。信號與管道是其中的兩種Linux還
支援System V IPC機制。關於IPC機制的內容在IPC章節描述。
PCI標準是一個高效的PC匯流排。PCI章節講述了Linux核心如何初始化合使用PCI匯流排
和系統中的PCI 設備。
中斷和中斷處理章節探討了Linux核心如何處理中斷。盡管作業系統核心裡提供一些
通用的機制和介面來處理中斷,一些關於中斷處理的細節是與硬體體系結構有關的。
Linux的優點之一是它支援許多硬體設備。設備驅動程式章節描述了Linux核心如何
控制系統中的實體設備。
檔案系統章節講述了Linux核心如何維護其檔案系統中的檔案,描述了虛擬檔案系統
(Virtual File System)和如何支援Linux核心中的真正檔案系統。
網路與Linux是一對同義詞。從某種真實的意義上講,Linux是Internet或World Wide
Web (WWW)的產物。Linux的開發和使用 者通過web來交換信息和程式碼 。Linux通常
被用來支援機構的網路需求。網路章節描述了Linux如何支援TCP/IP通訊協定族。
核心機制章節探討了Linux核心需要支援/完成的一些通用任務和機制,以用來使得
核心其他部份有效地工作在一起。
模組章節講述了Linux如何動態地裝載功能模組,例如檔案系統。
原始碼章節描述了對應於特定的核心功能的Linux核心原始碼位址。讀者可以依據本
章的介紹來開始閱讀原始碼。
本書的約定
serif font 用戶必須輸入的命令或文本。
Type font 資料結構和資料結構中的域。
本書中所引用的原始程式都基於相對路徑/usr/src/linux。如foo/bar.c,則其實際的
路徑是/usr/src/linux/foo/bar.c。
商標
Caldera, OpenLinux and the ``C'' logo are trademarks of Caldera, Inc.
Caldera OpenDOS 1997 Caldera, Inc.
DEC is a trademark of Digital Equipment Corporation.
DIGITAL is a trademark of Digital Equipment Corporation.
Linux is a trademark of Linus Torvalds.
Motif is a trademark of The Open System Foundation, Inc.
MSDOS is a trademark of Microsoft Corporation.
Red Hat, glint and the Red Hat logo are trademarks of Red Hat Software,
Inc.
UNIX is a registered trademark of X/Open.
XFree86 is a trademark of XFree86 Project, Inc.
X Window System is a trademark of the X Consortium and the Massachusetts
Institute of Technology.
感謝
I must thank the many people who have been kind enough to take the time
to e-mail me with comments about this book. I have attempted to incorporated
those comments in each new version that I have produced. Special thanks
must go to John Rigby and Michael Bauer who gave me full, detailed review
notes of the whole book. Not an easy task.