級(jí)別: 中級(jí)
M. Tim Jones (mtj@mtjones.com), 顧問(wèn)工程師, Emulex
2007 年 7 月 02 日
Linux® 內(nèi)核是一個(gè)龐大而復(fù)雜的操作系統(tǒng)的核心,不過(guò)盡管龐大,但是卻采用子系統(tǒng)和分層的概念很好地進(jìn)行了組織。在本文中,您將探索 Linux 內(nèi)核的總體結(jié)構(gòu),并學(xué)習(xí)一些主要的子系統(tǒng)和核心接口。您還可以通過(guò)其他 IBM 文章的鏈接更深入地進(jìn)行學(xué)習(xí)。
由于本文的目標(biāo)
是對(duì) Linux 內(nèi)核進(jìn)行介紹并探索其體系結(jié)構(gòu)和主要組件,因此首先回顧一下 Linux 的簡(jiǎn)短歷史,然后從較高的層次審視 Linux
內(nèi)核的體系結(jié)構(gòu),最后介紹它的主要子系統(tǒng)。Linux 內(nèi)核具有超過(guò) 600
萬(wàn)行的代碼,因此本文不可能進(jìn)行完整的介紹。請(qǐng)使用指向其他內(nèi)容的鏈接進(jìn)一步學(xué)習(xí)。
Linux 的簡(jiǎn)短歷史
 |
Linux 還是 GNU/Linux?
您可能已經(jīng)注意到 Linux 作為一個(gè)操作系統(tǒng)來(lái)說(shuō),有時(shí)會(huì)稱(chēng)為 “Linux”,有時(shí)卻稱(chēng)為 “GNU/Linux”。這背后的原因在于 Linux 實(shí)際上是操作系統(tǒng)的內(nèi)核。使這個(gè)操作系統(tǒng)變得非常有用的大量應(yīng)用程序是 GNU 軟件。例如,窗口系統(tǒng)、編譯器、各種 shell、開(kāi)發(fā)工具、編輯器、實(shí)用工具以及內(nèi)核之外的其他應(yīng)用程序,其中很多都是 GNU 軟件。由于這個(gè)原因,很多人都認(rèn)為 “GNU/Linux” 更適合作為操作系統(tǒng)的名字,而 “Linux” 則適合作為內(nèi)核的名字。 |
|
盡
管 Linux 絕對(duì)是最流行的開(kāi)源操作系統(tǒng),但是相對(duì)于其他操作系統(tǒng)的漫長(zhǎng)歷史來(lái)說(shuō),Linux
的歷史非常短暫。在計(jì)算機(jī)出現(xiàn)早期,程序員是使用硬件語(yǔ)言在裸硬件上進(jìn)行開(kāi)發(fā)的。缺少操作系統(tǒng)就意味著在某個(gè)時(shí)間只有一個(gè)應(yīng)用程序(和一個(gè)用戶)可以使用
這些龐大而又昂貴的設(shè)備。早期的操作系統(tǒng)是在 20 世紀(jì) 50 年代開(kāi)發(fā)的,用來(lái)提供簡(jiǎn)單的開(kāi)發(fā)體驗(yàn)。包括為 IBM 701 開(kāi)發(fā)的
General Motors Operating System(GMOS)和 North American Aviation 為 IBM
709 開(kāi)發(fā)的 FORTRAN Monitor System(FMS)。
在 20 世紀(jì) 60
年代,MIT(Massachusetts Institute of Technology)和一些公司為 GE-645 開(kāi)發(fā)了一個(gè)名為
Multics(Multiplexed Information and Computing
Service)的實(shí)驗(yàn)性的操作系統(tǒng)。這個(gè)操作系統(tǒng)的開(kāi)發(fā)者之一 AT&T 后來(lái)退出了 Multics,并在 1970 年開(kāi)發(fā)了自己的名為
Unics 的操作系統(tǒng)。與這個(gè)操作系統(tǒng)一同誕生的是 C 語(yǔ)言,C 語(yǔ)言就是為此而開(kāi)發(fā)的,然后它們使用 C
語(yǔ)言對(duì)操作系統(tǒng)進(jìn)行了重寫(xiě),使操作系統(tǒng)開(kāi)發(fā)具有可移植性。
二
十年后,Andrew Tanenbaum 創(chuàng)建了一個(gè)微內(nèi)核版本的 UNIX®,名為 MINIX(代表 minimal
UNIX),它可以在小型的個(gè)人計(jì)算機(jī)上運(yùn)行。這個(gè)開(kāi)源操作系統(tǒng)在 20 世紀(jì) 90 年代激發(fā)了 Linus Torvalds 開(kāi)發(fā) Linux
的靈感(請(qǐng)參看圖 1 所示)。
圖 1. 主要 Linux 內(nèi)核發(fā)行版簡(jiǎn)史
Linux
快速?gòu)囊粋€(gè)個(gè)人項(xiàng)目進(jìn)化成為一個(gè)全球數(shù)千人參與的開(kāi)發(fā)項(xiàng)目。對(duì)于 Linux 來(lái)說(shuō),最為重要的決策之一是采用 GPL(GNU General
Public License)。在 GPL 保護(hù)之下,Linux 內(nèi)核可以防止商業(yè)使用,并且它還從 GNU 項(xiàng)目(Richard
Stallman 開(kāi)發(fā),其源代碼要比 Linux 內(nèi)核大得多)的用戶空間開(kāi)發(fā)受益。這允許使用一些非常有用的應(yīng)用程序,例如 GCC(GNU
Compiler Collection)和各種 shell 支持。
Linux 內(nèi)核簡(jiǎn)介
現(xiàn)在讓我們從一個(gè)比較高的高度來(lái)審視一下 GNU/Linux 操作系統(tǒng)的體系結(jié)構(gòu)。您可以從兩個(gè)層次上來(lái)考慮操作系統(tǒng),如圖 2 所示。
圖 2. GNU/Linux 操作系統(tǒng)的基本體系結(jié)構(gòu)
 |
系統(tǒng)調(diào)用接口(SCI)的方法
實(shí)際上,體系結(jié)構(gòu)可能并不像圖 2
所示的一樣清晰。例如,處理系統(tǒng)調(diào)用(從用戶空間切換到內(nèi)核空間)的機(jī)制可能在各個(gè)體系結(jié)構(gòu)上都不相同。提供了對(duì)虛擬化指令支持的新型 x86
中央處理單元(CPU)在這方面要比使用傳統(tǒng) int 80h 方法的老式 x86 處理器更加高效。 |
|
最上面是用戶(或應(yīng)用程序)空間。這是用戶應(yīng)用程序執(zhí)行的地方。用戶空間之下是內(nèi)核空間,Linux 內(nèi)核正是位于這里。
GNU C Library
(glibc)也在這里。它提供了連接內(nèi)核的系統(tǒng)調(diào)用接口,還提供了在用戶空間應(yīng)用程序和內(nèi)核之間進(jìn)行轉(zhuǎn)換的機(jī)制。這點(diǎn)非常重要,因?yàn)閮?nèi)核和用戶空間的應(yīng)
用程序使用的是不同的保護(hù)地址空間。每個(gè)用戶空間的進(jìn)程都使用自己的虛擬地址空間,而內(nèi)核則占用單獨(dú)的地址空間。 更多信息,請(qǐng)參看 參考資料 一節(jié)中的鏈接。
Linux 內(nèi)核可以進(jìn)一步劃分成 3 層。最上面是系統(tǒng)調(diào)用接口,它實(shí)現(xiàn)了一些基本的功能,例如
read 和 write 。系統(tǒng)調(diào)用接口之下是內(nèi)核代碼,可以更精確地定義為獨(dú)立于體系結(jié)構(gòu)的內(nèi)核代碼。這些代碼是 Linux 所支持的所有處理器體系結(jié)構(gòu)所通用的。在這些代碼之下是依賴(lài)于體系結(jié)構(gòu)的代碼,構(gòu)成了通常稱(chēng)為 BSP(Board
Support Package)的部分。這些代碼用作給定體系結(jié)構(gòu)的處理器和特定于平臺(tái)的代碼。
Linux 內(nèi)核的屬性
在討論大型而復(fù)雜的系統(tǒng)的體系結(jié)構(gòu)時(shí),可以從很多角度來(lái)審視系統(tǒng)。體系結(jié)構(gòu)分析的一個(gè)目標(biāo)是提供一種方法更好地理解源代碼,這正是本文的目的。
Linux
內(nèi)核實(shí)現(xiàn)了很多重要的體系結(jié)構(gòu)屬性。在或高或低的層次上,內(nèi)核被劃分為多個(gè)子系統(tǒng)。Linux
也可以看作是一個(gè)整體,因?yàn)樗鼤?huì)將所有這些基本服務(wù)都集成到內(nèi)核中。這與微內(nèi)核的體系結(jié)構(gòu)不同,后者會(huì)提供一些基本的服務(wù),例如通信、I/O、內(nèi)存和進(jìn)程
管理,更具體的服務(wù)都是插入到微內(nèi)核層中的。每種內(nèi)核都有自己的優(yōu)點(diǎn),不過(guò)這里并不對(duì)此進(jìn)行討論。
隨著時(shí)
間的流逝,Linux 內(nèi)核在內(nèi)存和 CPU 使用方面具有較高的效率,并且非常穩(wěn)定。但是對(duì)于 Linux
來(lái)說(shuō),最為有趣的是在這種大小和復(fù)雜性的前提下,依然具有良好的可移植性。Linux
編譯后可在大量處理器和具有不同體系結(jié)構(gòu)約束和需求的平臺(tái)上運(yùn)行。一個(gè)例子是 Linux
可以在一個(gè)具有內(nèi)存管理單元(MMU)的處理器上運(yùn)行,也可以在那些不提供 MMU 的處理器上運(yùn)行。Linux 內(nèi)核的 uClinux
移植提供了對(duì)非 MMU 的支持。更詳細(xì)信息請(qǐng)參看 參考資料 一節(jié)的內(nèi)容。
Linux 內(nèi)核的主要子系統(tǒng)
現(xiàn)在使用圖 3 中的分類(lèi)說(shuō)明 Linux 內(nèi)核的主要組件。
圖 3. Linux 內(nèi)核的一個(gè)體系結(jié)構(gòu)透視圖
系統(tǒng)調(diào)用接口
SCI
層提供了某些機(jī)制執(zhí)行從用戶空間到內(nèi)核的函數(shù)調(diào)用。正如前面討論的一樣,這個(gè)接口依賴(lài)于體系結(jié)構(gòu),甚至在相同的處理器家族內(nèi)也是如此。SCI
實(shí)際上是一個(gè)非常有用的函數(shù)調(diào)用多路復(fù)用和多路分解服務(wù)。在 ./linux/kernel 中您可以找到 SCI 的實(shí)現(xiàn),并在
./linux/arch 中找到依賴(lài)于體系結(jié)構(gòu)的部分。有關(guān)這個(gè)組件的更詳細(xì)信息可以在 參考資料 一節(jié)中找到。
進(jìn)程管理
 |
內(nèi)核是什么?
如
圖 3 所示,內(nèi)核實(shí)際上僅僅是一個(gè)資源管理器。不管被管理的資源是進(jìn)程、內(nèi)存還是硬件設(shè)備,內(nèi)核負(fù)責(zé)管理并裁定多個(gè)競(jìng)爭(zhēng)用戶對(duì)資源的訪問(wèn)(既包括內(nèi)核空間也包括用戶空間)。 |
|
進(jìn)程管理的重點(diǎn)是進(jìn)程的執(zhí)行。在內(nèi)核中,這些進(jìn)程稱(chēng)為線程,代表了單獨(dú)的處理器虛擬化(線程代碼、數(shù)據(jù)、堆棧和 CPU 寄存器)。在用戶空間,通常使用進(jìn)程
這個(gè)術(shù)語(yǔ),不過(guò) Linux 實(shí)現(xiàn)并沒(méi)有區(qū)分這兩個(gè)概念(進(jìn)程和線程)。內(nèi)核通過(guò) SCI
提供了一個(gè)應(yīng)用程序編程接口(API)來(lái)創(chuàng)建一個(gè)新進(jìn)程(fork、exec 或 Portable Operating System
Interface [POSIX] 函數(shù)),停止進(jìn)程(kill、exit),并在它們之間進(jìn)行通信和同步(signal 或者 POSIX 機(jī)制)。
進(jìn)
程管理還包括處理活動(dòng)進(jìn)程之間共享 CPU 的需求。內(nèi)核實(shí)現(xiàn)了一種新型的調(diào)度算法,不管有多少個(gè)線程在競(jìng)爭(zhēng)
CPU,這種算法都可以在固定時(shí)間內(nèi)進(jìn)行操作。這種算法就稱(chēng)為 O(1)
調(diào)度程序,這個(gè)名字就表示它調(diào)度多個(gè)線程所使用的時(shí)間和調(diào)度一個(gè)線程所使用的時(shí)間是相同的。 O(1)
調(diào)度程序也可以支持多處理器(稱(chēng)為對(duì)稱(chēng)多處理器或 SMP)。您可以在 ./linux/kernel 中找到進(jìn)程管理的源代碼,在
./linux/arch 中可以找到依賴(lài)于體系結(jié)構(gòu)的源代碼。在 參考資料 一節(jié)中可以了解有關(guān)這個(gè)算法的更多內(nèi)容。
內(nèi)存管理
內(nèi)核所管理的另外一個(gè)重要資源是內(nèi)存。為了提高效率,如果由硬件管理虛擬內(nèi)存,內(nèi)存是按照所謂的內(nèi)存頁(yè) 方式進(jìn)行管理的(對(duì)于大部分體系結(jié)構(gòu)來(lái)說(shuō)都是 4KB)。Linux 包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機(jī)制。
不
過(guò)內(nèi)存管理要管理的可不止 4KB 緩沖區(qū)。Linux 提供了對(duì) 4KB 緩沖區(qū)的抽象,例如 slab 分配器。這種內(nèi)存管理模式使用 4KB
緩沖區(qū)為基數(shù),然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁(yè)使用情況,比如哪些內(nèi)存頁(yè)是滿的,哪些頁(yè)面沒(méi)有完全使用,哪些頁(yè)面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來(lái)動(dòng)
態(tài)調(diào)整內(nèi)存使用。
為了支持多個(gè)用戶使用內(nèi)存,有時(shí)會(huì)出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個(gè)原因,頁(yè)面可以移出內(nèi)存并放入磁盤(pán)中。這個(gè)過(guò)程稱(chēng)為交換,因?yàn)轫?yè)面會(huì)被從內(nèi)存交換到硬盤(pán)上。內(nèi)存管理的源代碼可以在
./linux/mm 中找到。
虛擬文件系統(tǒng)
虛擬文件系統(tǒng)(VFS)是 Linux 內(nèi)核中非常有用的一個(gè)方面,因?yàn)樗鼮槲募到y(tǒng)提供了一個(gè)通用的接口抽象。VFS 在 SCI 和內(nèi)核所支持的文件系統(tǒng)之間提供了一個(gè)交換層(請(qǐng)參看圖 4)。
圖 4. VFS 在用戶和文件系統(tǒng)之間提供了一個(gè)交換層
在 VFS 上面,是對(duì)諸如 open、close、read 和 write 之類(lèi)的函數(shù)的一個(gè)通用 API 抽象。在 VFS
下面是文件系統(tǒng)抽象,它定義了上層函數(shù)的實(shí)現(xiàn)方式。它們是給定文件系統(tǒng)(超過(guò) 50 個(gè))的插件。文件系統(tǒng)的源代碼可以在 ./linux/fs
中找到。
文件系統(tǒng)層之下是緩沖區(qū)緩存,它為文件系統(tǒng)層提供了一個(gè)通用函數(shù)集(與具體文件系統(tǒng)無(wú)關(guān))。這個(gè)緩存層通過(guò)將數(shù)據(jù)保留一段時(shí)間(或者隨即預(yù)先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對(duì)物理設(shè)備的訪問(wèn)。緩沖區(qū)緩存之下是設(shè)備驅(qū)動(dòng)程序,它實(shí)現(xiàn)了特定物理設(shè)備的接口。
網(wǎng)絡(luò)堆棧
網(wǎng)絡(luò)堆棧在設(shè)計(jì)上遵循模擬協(xié)議本身的分層體系結(jié)構(gòu)。回想一下,Internet Protocol (IP) 是傳輸協(xié)議(通常稱(chēng)為傳輸控制協(xié)議或 TCP)下面的核心網(wǎng)絡(luò)層協(xié)議。TCP 上面是 socket 層,它是通過(guò) SCI 進(jìn)行調(diào)用的。
socket
層是網(wǎng)絡(luò)子系統(tǒng)的標(biāo)準(zhǔn) API,它為各種網(wǎng)絡(luò)協(xié)議提供了一個(gè)用戶接口。從原始幀訪問(wèn)到 IP 協(xié)議數(shù)據(jù)單元(PDU),再到 TCP 和 User
Datagram Protocol (UDP),socket
層提供了一種標(biāo)準(zhǔn)化的方法來(lái)管理連接,并在各個(gè)終點(diǎn)之間移動(dòng)數(shù)據(jù)。內(nèi)核中網(wǎng)絡(luò)源代碼可以在 ./linux/net 中找到。
設(shè)備驅(qū)動(dòng)程序
Linux
內(nèi)核中有大量代碼都在設(shè)備驅(qū)動(dòng)程序中,它們能夠運(yùn)轉(zhuǎn)特定的硬件設(shè)備。Linux
源碼樹(shù)提供了一個(gè)驅(qū)動(dòng)程序子目錄,這個(gè)目錄又進(jìn)一步劃分為各種支持設(shè)備,例如 Bluetooth、I2C、serial
等。設(shè)備驅(qū)動(dòng)程序的代碼可以在 ./linux/drivers 中找到。
依賴(lài)體系結(jié)構(gòu)的代碼
盡
管 Linux 很大程度上獨(dú)立于所運(yùn)行的體系結(jié)構(gòu),但是有些元素則必須考慮體系結(jié)構(gòu)才能正常操作并實(shí)現(xiàn)更高效率。./linux/arch
子目錄定義了內(nèi)核源代碼中依賴(lài)于體系結(jié)構(gòu)的部分,其中包含了各種特定于體系結(jié)構(gòu)的子目錄(共同組成了 BSP)。對(duì)于一個(gè)典型的桌面系統(tǒng)來(lái)說(shuō),使用的是
i386
目錄。每個(gè)體系結(jié)構(gòu)子目錄都包含了很多其他子目錄,每個(gè)子目錄都關(guān)注內(nèi)核中的一個(gè)特定方面,例如引導(dǎo)、內(nèi)核、內(nèi)存管理等。這些依賴(lài)體系結(jié)構(gòu)的代碼可以在
./linux/arch 中找到。
Linux 內(nèi)核的一些有用特性
如果 Linux 內(nèi)核的可移植性和效率還不夠好,Linux 還提供了其他一些特性,它們無(wú)法劃分到上面的分類(lèi)中。
作
為一個(gè)生產(chǎn)操作系統(tǒng)和開(kāi)源軟件,Linux 是測(cè)試新協(xié)議及其增強(qiáng)的良好平臺(tái)。Linux 支持大量網(wǎng)絡(luò)協(xié)議,包括典型的
TCP/IP,以及高速網(wǎng)絡(luò)的擴(kuò)展(大于 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux
也可以支持諸如流控制傳輸協(xié)議(SCTP)之類(lèi)的協(xié)議,它提供了很多比 TCP 更高級(jí)的特性(是傳輸層協(xié)議的接替者)。
Linux 還是一個(gè)動(dòng)態(tài)內(nèi)核,支持動(dòng)態(tài)添加或刪除軟件組件。被稱(chēng)為動(dòng)態(tài)可加載內(nèi)核模塊,它們可以在引導(dǎo)時(shí)根據(jù)需要(當(dāng)前特定設(shè)備需要這個(gè)模塊)或在任何時(shí)候由用戶插入。
Linux
最新的一個(gè)增強(qiáng)是可以用作其他操作系統(tǒng)的操作系統(tǒng)(稱(chēng)為系統(tǒng)管理程序)。最近,對(duì)內(nèi)核進(jìn)行了修改,稱(chēng)為基于內(nèi)核的虛擬機(jī)(KVM)。這個(gè)修改為用戶空間啟
用了一個(gè)新的接口,它可以允許其他操作系統(tǒng)在啟用了 KVM 的內(nèi)核之上運(yùn)行。除了運(yùn)行 Linux 的其他實(shí)例之外, Microsoft®
Windows® 也可以進(jìn)行虛擬化。惟一的限制是底層處理器必須支持新的虛擬化指令。更多信息請(qǐng)參看 參考資料 一節(jié)的內(nèi)容。
結(jié)束語(yǔ)
本文對(duì) Linux 內(nèi)核體系結(jié)構(gòu)及其特性和功能進(jìn)行了簡(jiǎn)要介紹。有關(guān)內(nèi)核的詳細(xì)內(nèi)容,可以參考每個(gè) Linux 發(fā)行版中附帶的 Documentation 目錄。請(qǐng)一定查看本文末尾的 參考資料 一節(jié),了解有關(guān)本文中所討論主題的更詳細(xì)信息。
參考資料
學(xué)習(xí)
- 您可以參閱本文在 developerWorks 全球站點(diǎn)上的 英文原文 。
-
GNU 站點(diǎn) 介紹了 GNU GPL,它涵蓋了 Linux 內(nèi)核及其附帶的大量有用的應(yīng)用程序。另外還介紹了一個(gè)比 GPL 限制更少的許可 Lesser GPL (LGPL)。
-
UNIX、
MINIX 和
Linux 在 Wikipedia 上都有介紹,另外還詳細(xì)介紹了操作系統(tǒng)系列。
-
GNU C Library,即 glibc,是標(biāo)準(zhǔn) C 庫(kù)的實(shí)現(xiàn)。它用于 GNU/Linux 操作系統(tǒng),也可用于 GNU/Hurd 微內(nèi)核操作系統(tǒng)。
-
uClinux
是 Linux 內(nèi)核的一個(gè)移植,它可以在一些缺少 MMU 的系統(tǒng)上執(zhí)行。這允許 Linux 內(nèi)核在很小的嵌入式平臺(tái)上運(yùn)行,例如
PalmPilot PalmPilot Personal Digital Assistants (PDAs) 上使用的 Motorola
DragonBall 處理器。
-
“使用 Linux 系統(tǒng)調(diào)用的內(nèi)核命令”(developerWorks,2007 年 3 月)對(duì) SCI 進(jìn)行了介紹,這是 Linux 內(nèi)核中非常重要的一層,具有 glibc 的用戶空間支持,可以在用戶空間和內(nèi)核之間啟用函數(shù)調(diào)用。
-
“Linux 調(diào)度器內(nèi)幕”(developerWorks,2006 年 6 月)介紹了 Linux 2.6 中引入的新 O(1) 調(diào)度程序,這是一個(gè)非常高效的算法,可以擴(kuò)展到很大數(shù)量的進(jìn)程(線程),并且可以利用 SMP 系統(tǒng)。
-
“使用 /proc 文件系統(tǒng)來(lái)訪問(wèn) Linux 內(nèi)核的內(nèi)容”(developerWorks,2006 年 3 月)介紹了 /proc 文件系統(tǒng),這是一個(gè)虛擬文件系統(tǒng),為用戶空間的應(yīng)用程序提供了一種全新的方法與內(nèi)核進(jìn)行通信。這篇文章展示了 /proc 以及可加載內(nèi)核模塊。
-
“服務(wù)器診所: 使虛擬文件系統(tǒng)工作”(developerWorks,2003 年 4 月)深入介紹了 VFS 層,它允許 Linux 通過(guò)一個(gè)通用接口支持各種不同的文件系統(tǒng)。這個(gè)相同的接口也可以用于其他類(lèi)型的設(shè)備,例如 socket。
-
“Linux 引導(dǎo)過(guò)程內(nèi)幕”(developerWorks,2006 年 5 月)介紹了 Linux 的引導(dǎo)過(guò)程,該過(guò)程將啟動(dòng)一個(gè) Linux 系統(tǒng),并且不管是從硬盤(pán)、軟盤(pán)、USB 內(nèi)存條還是通過(guò)網(wǎng)絡(luò)引導(dǎo)系統(tǒng),該過(guò)程是相同的。
-
“Linux 初始 RAM 磁盤(pán)(initrd)概述”(developerWorks,2006 年 7 月)介紹了初始 RAM 磁盤(pán),它將引導(dǎo)過(guò)程與所引導(dǎo)的物理介質(zhì)隔離開(kāi)來(lái)。
-
“使用 SCTP 優(yōu)化網(wǎng)絡(luò)”(developerWorks,2006
年 2 月)介紹了一種非常有用的網(wǎng)絡(luò)協(xié)議:流控制傳輸協(xié)議,它的操作與 TCP 類(lèi)似,但是增加了很多有用的特性,例如消息傳遞、
多宿主和多流。如果您對(duì)網(wǎng)絡(luò)協(xié)議感興趣,那么 Linux 與 BSD 一樣,都是一種非常好的操作系統(tǒng)。
-
“Linux slab 分配器詳解” (developerWorks,2007 年 5 月)介紹了 Linux 內(nèi)存管理中最有用的一個(gè)工具:slab 分配器。這種機(jī)制源自于 SunOS,不過(guò)它在 Linux 內(nèi)核中找到了合適的位置。
-
“虛擬 Linux”(developerWorks,2006 年 12 月)介紹了 Linux 是如何充分利用具有虛擬化能力的處理器。
-
“Linux 和對(duì)稱(chēng)多處理”(developerWorks,2007 年 3 月)討論了 Linux 怎樣利用提供芯片級(jí)多處理能力的芯片。
-
“探索 Linux 內(nèi)核虛擬機(jī)”(developerWorks,2007 年 4 月)介紹了最近引入內(nèi)核的虛擬化技術(shù),它可以將 Linux 內(nèi)核轉(zhuǎn)換成其他虛擬化的操作系統(tǒng)的系統(tǒng)管理程序。
- 有關(guān)在用戶空間對(duì) Linux 進(jìn)行編程的更多信息,請(qǐng)參考 Tim 撰寫(xiě)的
GNU/Linux Application Programming
一書(shū)。
- 在 developerWorks Linux 專(zhuān)區(qū) 中可找到適合 Linux 開(kāi)發(fā)人員的更多資源,包括 Linux 教程 以及上月 讀者最喜歡的 Linux 文章和教程。
- 隨時(shí)關(guān)注 developerWorks 技術(shù)活動(dòng)和網(wǎng)絡(luò)廣播。
獲得產(chǎn)品和技術(shù)
-
定購(gòu) SEK for Linux,共包含兩張 DVD,其中有用于 Linux 的最新 IBM 試用軟件,包括 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere®。
- 利用可直接從 developerWorks 下載的 IBM 試用軟件 在 Linux 上構(gòu)建您的下一個(gè)開(kāi)發(fā)項(xiàng)目。
討論
關(guān)于作者
 |

|
 |
M. Tim Jones 是一名嵌入式軟件工程師,他是 GNU/Linux Application Programming、AI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等書(shū)的作者。他的工程背景非常廣泛,從同步宇宙飛船的內(nèi)核開(kāi)發(fā)到嵌入式架構(gòu)設(shè)計(jì),再到網(wǎng)絡(luò)協(xié)議的開(kāi)發(fā)。Tim 是位于科羅拉多州 Longmont 的 Emulex Corp. 的一名顧問(wèn)工程師。
|
|