本書(shū)主要描述Linux系統(tǒng)的總體框架和設(shè)計(jì)思想,包含很多可以直接操作的實(shí)例,目的是希望讀者對(duì)Linux系統(tǒng)背后的邏輯有一個(gè)全面的了解。本書(shū)力求貼近實(shí)際的工作使用,在比較核心且常用的技術(shù)點(diǎn)有更加深入的解釋?zhuān)瑢?duì)實(shí)際使用Linux系統(tǒng)工作大有裨益。本書(shū)共13章,其中第1~3章是總覽,第4~13章是分領(lǐng)域闡述。第1~3章總體介紹Linux的基本知識(shí);第4章以L(fǎng)inux系統(tǒng)的啟動(dòng)開(kāi)始深入敘述;第5章是Linux系統(tǒng)運(yùn)行中使用者*常接觸到的進(jìn)程概念,重點(diǎn)介紹進(jìn)程的原理;第6章是Linux內(nèi)核的內(nèi)存管理方法與用戶(hù)端使用內(nèi)存的底層方法,即重點(diǎn)介紹glibc底層到內(nèi)核之間的內(nèi)存管理過(guò)程;第7~13章分別是關(guān)于安全機(jī)制、網(wǎng)絡(luò)、總線(xiàn)與設(shè)備變動(dòng)、二進(jìn)制、存儲(chǔ)、虛擬化與云、硬件專(zhuān)用子系統(tǒng)的內(nèi)容。這些子系統(tǒng)都是Linux系統(tǒng)運(yùn)行中非常重要的領(lǐng)域,是深入理解Linux系統(tǒng)原理不可或缺的知識(shí)補(bǔ)充。
解釋透徹:深入淺出地將Linux內(nèi)核架構(gòu)與底層原理和盤(pán)托出。
實(shí)踐性強(qiáng):對(duì)Linux內(nèi)核形成了深刻、獨(dú)到的理解。
指路明燈:將Linux內(nèi)核架構(gòu)與底層原理的精髓娓娓道來(lái)。
與時(shí)俱進(jìn):在很多方面覆蓋了Linux較新的功能,對(duì)從業(yè)者有較大幫助。
前 言
要想深入研究并使用Linux內(nèi)核,首先要知道Linux內(nèi)核提供了什么,又能做到什么。很多初學(xué)者一進(jìn)入公司就開(kāi)始使用Linux內(nèi)核開(kāi)發(fā)內(nèi)核模塊,無(wú)論是使用通信方式、內(nèi)存接口還是設(shè)備接口,都是早已被淘汰的內(nèi)容。因?yàn)樗麄兺ǔV苯釉诰W(wǎng)絡(luò)上搜索一些很早之前發(fā)布的內(nèi)容來(lái)指導(dǎo)自己如何完成開(kāi)發(fā)工作,但他們手中卻是最先進(jìn)的內(nèi)核代碼。還有很多直接編寫(xiě)內(nèi)核模塊的人在嵌入式公司使用老版本的內(nèi)核進(jìn)行工作,雖然他們可能對(duì)內(nèi)核之后的發(fā)展一無(wú)所知,但是他們能夠一下子抓住主干,主干永遠(yuǎn)是在老版本的內(nèi)核中就存在的東西。
很多剛?cè)胄械某绦騿T認(rèn)為自己能夠征服一切,稍微在網(wǎng)上檢索一下Linux的內(nèi)容,就可以上手使用了。雖然寫(xiě)出可以用的程序不需要太多的知識(shí)積累,但是這么做相當(dāng)于在信息不充分的情況下做決策。雖然一切操作系統(tǒng)理論的學(xué)習(xí)都不如實(shí)際去編寫(xiě)幾行代碼,但是理論又是十分重要的,因?yàn)樗軌蜃尳?jīng)驗(yàn)升華成積累。
本書(shū)解釋了Linux內(nèi)核提供了什么,以及Linux系統(tǒng)底層是如何使用內(nèi)核的。如果你對(duì)本書(shū)某一部分感興趣,那么在深入閱讀該部分的代碼之前應(yīng)先對(duì)該內(nèi)容進(jìn)行系統(tǒng)的學(xué)習(xí),當(dāng)你對(duì)內(nèi)核系統(tǒng)有一個(gè)整體的把握時(shí),方可揮灑自如。
本書(shū)的讀者對(duì)象是有一定Linux基礎(chǔ)的程序員,或者是有一定經(jīng)驗(yàn)的嵌入式開(kāi)發(fā)人員和運(yùn)維人員,閱讀本書(shū)像喝水一樣,可輕松獲得知識(shí)內(nèi)容。若閱讀本書(shū)遇到相對(duì)冷門(mén)的技術(shù)細(xì)節(jié)時(shí),有興趣的讀者可以自行查閱其他相關(guān)資料。例如當(dāng)列舉文件系統(tǒng)的種類(lèi)時(shí)提到exofs,書(shū)中不會(huì)過(guò)多解釋這個(gè)名詞,因?yàn)榇蟛糠钟脩?hù)只關(guān)注它是文件系統(tǒng)的一種。
在學(xué)習(xí)Linux內(nèi)核,閱讀相關(guān)圖書(shū)時(shí)候限定版本是不必要的,因?yàn)榧词拱姹咀兓砣耘f可用。本書(shū)也會(huì)注明某個(gè)技術(shù)點(diǎn)之前是什么樣的,現(xiàn)在是什么樣的,未來(lái)可能是什么樣的。人們更希望了解整個(gè)內(nèi)核框架的內(nèi)容,以及一些重要細(xì)節(jié)的深層原理。本書(shū)就將重點(diǎn)放在這兩方面內(nèi)容上,而并不局限于內(nèi)核的版本,盡可能以最終被選擇的解決方案作為實(shí)驗(yàn)重點(diǎn)。也就是說(shuō),本書(shū)所涉及的內(nèi)核版本都比較新,但是也會(huì)觀(guān)察從老版本到新版本過(guò)渡時(shí)內(nèi)核在功能上的變化,比如ip rule命令在新版本中去掉了reject等action。但是老版本的設(shè)計(jì)對(duì)于整體理解架構(gòu)很有幫助,我們的根本目的是用實(shí)現(xiàn)抽象出概念,本書(shū)講解的所有案例幾乎都使用了占據(jù)較大市場(chǎng)份額的Ubuntu。
感謝韓方,他對(duì)本書(shū)的出版起到了提綱挈領(lǐng)的作用,若沒(méi)有他的幫助,我一定會(huì)被淹沒(méi)在一堆技術(shù)細(xì)節(jié)中而不知道如何選擇。他編寫(xiě)并且修改了部分章節(jié),概覽性質(zhì)的圖書(shū)最需要高屋建瓴的能力和豐富的經(jīng)驗(yàn),韓方在這方面非常強(qiáng)。
由于時(shí)間倉(cāng)促,加之水平有限,書(shū)中的缺點(diǎn)和不足之處在所難免,敬請(qǐng)讀者批評(píng)指正。
劉京詳
2017年10月
輕松注冊(cè)成為博文視點(diǎn)社區(qū)用戶(hù)(www.broadview.com.cn),掃碼直達(dá)本書(shū)頁(yè)面。
? 提交勘誤:您對(duì)書(shū)中內(nèi)容的修改意見(jiàn)可在 提交勘誤 處提交,若被采納,將獲贈(zèng)博文視點(diǎn)社區(qū)積分(在您購(gòu)買(mǎi)電子書(shū)時(shí),積分可用來(lái)抵扣相應(yīng)金額)。
? 交流互動(dòng):在頁(yè)面下方 讀者評(píng)論 處留下您的疑問(wèn)或觀(guān)點(diǎn),與我們和其他讀者一同學(xué)習(xí)交流。
頁(yè)面入口:http://www.broadview.com.cn/5位書(shū)號(hào)
劉京洋,中山大學(xué)雙學(xué)士、碩士,創(chuàng)建中山大學(xué)嵌入式組,在嵌入式實(shí)驗(yàn)室工作6年。工作早期擔(dān)任創(chuàng)業(yè)公司總經(jīng)理,投資公司總裁助理,后來(lái)專(zhuān)心技術(shù),先后就職于TP-LINK、YY直播和網(wǎng)易游戲,從事內(nèi)核和網(wǎng)絡(luò)安全研發(fā),對(duì)Linux系統(tǒng)底層有深入的理解。聯(lián)系QQ:575705195,很高興與大家溝通探討相關(guān)學(xué)術(shù)問(wèn)題。 韓方,武漢大學(xué)研究生畢業(yè),先后就職于華為和YY直播,具有多年安全領(lǐng)域的攻防對(duì)抗、安全體系建設(shè)和開(kāi)發(fā)經(jīng)驗(yàn),精通Linux內(nèi)核開(kāi)發(fā)和應(yīng)用開(kāi)發(fā),申請(qǐng)過(guò)多項(xiàng)發(fā)明專(zhuān)利,多次參加國(guó)內(nèi)外技術(shù)峰會(huì)并進(jìn)行分享。
目錄
第一章 linux總覽
1.簡(jiǎn)介
2.Linux學(xué)習(xí)曲線(xiàn)和職業(yè)曲線(xiàn)
3.如何形成一個(gè)內(nèi)核
第二章 Linux內(nèi)核架構(gòu)
1.常見(jiàn)架構(gòu)范式與核心系統(tǒng)
2.基礎(chǔ)功能元素
3.特殊硬件框架
4.特殊軟件機(jī)制
5.系統(tǒng)調(diào)用
第三章 內(nèi)核數(shù)據(jù)結(jié)構(gòu)
1.鏈表與哈希表
2.LRU
3.樹(shù)
4.其他常見(jiàn)數(shù)據(jù)結(jié)構(gòu)
第四章 Linux系統(tǒng)的啟動(dòng)
1.啟動(dòng)的硬件支持
2.Bootloader和內(nèi)核二進(jìn)制
3.啟動(dòng)原理
第五章 進(jìn)程(重點(diǎn))
1.進(jìn)程原理
2.進(jìn)程調(diào)度
3.資源鎖
4.多進(jìn)程與進(jìn)程通信
5.進(jìn)程對(duì)資源的使用
第六章 內(nèi)存管理(重點(diǎn))
1.內(nèi)存的組織方式
2.內(nèi)核內(nèi)存的申請(qǐng)和釋放
3.內(nèi)核頁(yè)面回收算法(PFRA)
4.內(nèi)核內(nèi)存壓縮技術(shù)
5.其他內(nèi)核內(nèi)存基礎(chǔ)服務(wù)
6.用戶(hù)端對(duì)內(nèi)核內(nèi)存管理系統(tǒng)的調(diào)整
7.用戶(hù)端進(jìn)程的內(nèi)存管理
8.相關(guān)系統(tǒng)調(diào)用和API
第七章 安全
1.Linux安全體系概覽
2.安全的核心:加密與機(jī)制
3.Linux用戶(hù)和權(quán)限系統(tǒng)
4.分布于其他功能模塊的安全機(jī)制
第八章 網(wǎng)絡(luò)(重點(diǎn))
1.Linux內(nèi)核支持的網(wǎng)絡(luò)特性概覽
2.Linux網(wǎng)絡(luò)架構(gòu)與socket模型
3.IP實(shí)現(xiàn)架構(gòu)
4.IP路由系統(tǒng)
5.TCP子系統(tǒng)
6.Filter子系統(tǒng)
7.網(wǎng)絡(luò)服務(wù)質(zhì)量
第九章 總線(xiàn)
1.PCI
2.USB
3.Platform
第十章 二進(jìn)制(重點(diǎn))
1.函數(shù)調(diào)用
2.二進(jìn)制的兼容性
3.ELF文件的執(zhí)行原理
4.ELF安全性
第十一章 存儲(chǔ)(重點(diǎn))
1.磁盤(pán)管理
2.存儲(chǔ)協(xié)議:linux下SCSI子系統(tǒng)架構(gòu)
3.通用塊抽象層
4.緩存層
5.文件系統(tǒng)層
6.分布式存儲(chǔ)
7.常用存儲(chǔ)管理高級(jí)命令
第十二章 虛擬化與云
1.常見(jiàn)虛擬化方案
2.分布式文件系統(tǒng)
3.虛擬化專(zhuān)用文件系統(tǒng)
4.Docker
第十三章 其他重要模塊與高級(jí)管理工具
1.內(nèi)核到用戶(hù)空間設(shè)備管理
2.內(nèi)核調(diào)試
3.專(zhuān)用子系統(tǒng)