- 精通Linux內核:智能設備開發核心技術
- 姜亞華
- 1335字
- 2020-06-04 15:15:24
前言
2013年11月,我加入Intel,開始創作本書,最初決定在3.10版本的內核基礎上寫作,轉眼間多年已逝,內核版本已經更新到5.x,本書也隨之更新至5.05版本。少數討論也涉及3.10版本的內容,保留它們主要是希望可以讓讀者看到內核的更新和優化思路。建議讀者在閱讀本書時,可以下載3.10和5.05兩個版本的內核代碼作為參考。
內容
本書分為以下五個部分。
知識儲備篇:包括常見的數據結構、時間、中斷處理和內核同步等內容,是后面幾部分內容的學習基礎,希望讀者能夠從中了解內核的概況,在后續章節中見到相關知識時不會感覺陌生。尤其是2.1關系型數據結構一節,它是理解其他章節數據結構間關系的基礎。
內存管理篇:包括內存尋址、物理內存和線性內存空間的管理以及缺頁異常等內容。希望讀者能夠從中學習到內存映射的原理,理解管理內存的過程,在調用內核提供的函數時能夠明白內核為用戶做了哪些操作。
文件系統篇:包括VFS的流程,sysfs、proc和devtmpfs文件系統的實現,ext4文件系統的解析。希望讀者能夠掌握文件系統的流程、文件操作的實現、sysfs等文件系統的特點以及ext4文件系統的原理。尤其是ext4文件系統,本書列舉了大量的實操案例,希望讀者可以理解它的精髓。
進程管理篇:包括進程原理、進程調度、信號處理、進程通信和程序執行等內容,希望讀者能夠掌握進程間的關系、進程調度的過程、進程通信的原理、信號的處理過程等。理解進程的創建過程尤為重要,它涵蓋了進程實現的原理。
升華篇:包括I/O多路復用、input子系統、V4L2架構、Linux設備驅動模型、Binder通信和驅動的實現等內容。升華篇綜合了前幾部分的知識,希望讀者可以掌握它們的原理,使用起來得心應手。
從難易程度來講,這五部分內容是由淺入深的。本書僅羅列了關鍵或者復雜的代碼,從它們包含的代碼就可以得知難易程度。知識儲備篇偏向工具和基礎知識,以原理分析為主。內存管理、文件系統和進程管理篇是重心,代碼量最大,這些代碼一方面可以幫助讀者理清整體的軟件架構,另一方面方便讀者在學習的時候不會因為手頭沒有代碼而感到無從下手,最重要的是代碼才是結論背后的真相,直接給出結論讓技術變成了死記硬背的工具豈不無趣。
致謝
感謝我的研究生導師蘆鵬宇,蘆老師待人平和耐心,工作一絲不茍,幫助我在校時就樹立了正確的做人和做事的方向。蘆老師對技術不懈追求的態度,在我畢業時就已經深深烙在心里,并且始終影響著我。感謝蘆老師,感謝“規格嚴格,功夫到家”的哈爾濱工業大學。這八字校訓一直激勵著我,無數個像蘆老師一樣的園丁用行動將它們教給我們這些學生。
感謝華為的陳棟,很幸運在我第一份工作中可以遇到一個對技術有信仰的前輩,他對技術不懈追求的態度讓我在第一份工作中養成了良好的習慣。
感謝Intel的劉駿、徐杰、黃衛強、王龍和Foster,劉駿將我招入Intel,更開闊了我的視野,改變了我的人生軌跡。我曾經問他,他希望我在有余力的情況下學習些什么知識,他的回答是只要是學習,就會有幫助,無論什么。徐杰在我的工作中,對我信任有加,處處委以重任,讓我在很短的時間內快速成長。
黃衛強和王龍是我在Intel的師傅(Buddy),在工作和生活中給了我很多建議,至今受用。Foster是BIOS和x86專家,幫助我快速地熟悉x86的原理。
感謝AMD的Winston、Gavin和Jennifer,讓我在AMD學習到了很多芯片相關的知識,完成了本書的最后一環。Jennifer交給我具有挑戰性的工作,讓我在新的角色中快速成長。
姜亞華
- pcDuino開發實戰
- Haskell Financial Data Modeling and Predictive Analytics
- 操作系統基礎與實踐:基于openEuler平臺
- SharePoint 2013 應用開發實戰
- Moodle 3.x Teaching Techniques(Third Edition)
- RESS Essentials
- 細說Linux基礎知識
- 新編電腦辦公(Windows 10+ Office 2013版)從入門到精通
- Kali Linux高級滲透測試(原書第3版)
- Introduction to R for Quantitative Finance
- Mastering Windows 8 C++ App Development
- Linux集群之美
- Linux操作系統案例教程(第2版)
- Linux深度攻略
- Gradle Effective Implementations Guide(Second Edition)