你想做一個Linux核心高手嗎?
Linux核心是使用最廣泛的開源核心,在伺服器和智慧手機領域處於統治地位,物聯網、大資料、雲端計算和人工智慧等熱點技術也離不開Linux核心。對於商業公司而言,採用開源的Linux核心可以享受很多好處,比如節約成本,可以利用行業先進的技術,還可以根據自己的需求定製、修改核心。對於個人而言,從Linux核心中可以學習先進的設計方法和程式設計技術,為核心貢獻程式碼可以證明自己的技術實力。
可是, 當我們準備學習Linux核心時,會發現Linux核心的程式碼龐大而複雜,在沒有專業書籍指導的情況下,讀懂程式碼是一件非常困難的事情。想要深入理解Linux核心的你,需要入手這樣一本書《Linux核心深度解析》。
對於從事應用程式開發的軟體工程師,是否有必要學習核心呢?
應用程式通常使用封裝好的庫,看起來似乎和核心沒有關係,但是庫是在核心提供的系統呼叫的基礎上做了一層封裝。讀者如果研究了庫函式和核心配合實現庫函式提供的功能,那麼對軟體執行過程的理解將會更深刻,個人的技術水平也將會提升到新的高度—能夠設計開發出高質量的應用程式,在軟體執行過程中出現問題時可以快速地分析定位。另外,核心代表了軟體行業的最高程式設計技術,這些程式設計技術也適用於應用程式。所以答案當然是肯定的啦!
這是一本基於ARM64架構的Linux 4.x核心的書,大量圖例描述資料結構之間的關係和函式的執行流程;結合程式碼分析,以通俗化語言全面剖析Linux核心。
學習《Linux核心深度解析》,需要具備ARM64處理器的基礎知識,推薦以下兩篇文件,讀者可以從ARM公司的網站下載。(1)“ARM Cortex-A Series Programmer’s Guide for ARMv8-A”:這篇文件接近300頁,適合入門學習。
(2)“ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile”:這篇文件有6000多頁,寫得很詳細,適合當作工具書來查詢。
《Linux核心深度解析》特色:
本書介紹4.12版本的Linux核心,建議讀者在閱讀本書時到Linux核心的官方網站中下載一份程式碼,對照程式碼學習。推薦使用“Source Insight”軟體閱讀程式碼。
Linux核心支援多種處理器架構,處理器架構特定的程式碼放在“arch”目錄下。ARM處理器在手機和平板電腦等移動裝置上處於統治地位。ARM處理器從ARMv7演進到支援64位的ARMv8,ARM公司重新設計了處理器架構,ARMv8定義了AArch64和AArch32兩種執行狀態,AArch64是64位架構;AArch32是32位架構,相容ARMv7。因為ARMv8和ARMv7的差別很大,所以Linux核心把ARMv8和ARMv7當作兩種不同的處理器架構,ARMv7架構的程式碼放在“arch/arm”目錄下,ARMv8架構的程式碼放在“arch/arm64”目錄下。人們通常把ARMv8架構的AArch64執行狀態稱為ARM64架構。本書在介紹Linux核心時選擇ARM64處理器架構。
學習核心,關鍵是要理解資料結構之間的關係和函式呼叫關係。核心中資料結構之間的關係錯綜複雜,函式呼叫層次深,有些函式中的分支非常多,一個函式就可能涉及很多技術,這些都是初學者學習中的障礙。作者建議讀者在學習時抓住主要線索,弄清楚執行流程,剛開始不要過多關注函式的細節。為了方便學習,作者繪製了很多圖來描述資料結構之間的關係和函式的執行流程。另外,作者在介紹每種技術時會先介紹使用方法,從使用方法開始學習技術,相信會對讀者理解技術有很大的幫助。
這本書寫了什麼?
第1章介紹核心的引導過程,本書選擇常用的載入程式U-Boot,讀者可以從德國DENX軟體工程中心的網站下載U-Boot的程式碼,對照學習。
第2章介紹核心管理和排程程序的技術原理。
第3章介紹核心管理虛擬記憶體和實體記憶體的技術原理。
第4章介紹核心處理異常和中斷的技術原理,以及系統呼叫的實現方式。
第5章介紹核心實現的各種保護臨界區的互斥技術。
第6章介紹核心的虛擬檔案系統,核心使用虛擬檔案系統支援各種不同的檔案系統。
適用人群:
本書適用於維護或者開發Linux核心的軟體工程師、基於Linux核心開發裝置驅動程式的軟體工程師,以及想要學習瞭解Linux核心的軟體工程師和學生。
“行是知之始,知是行之成”,學習Linux核心技術尤其如此。要真正消化理解Linux核心,離不開大量的工程實踐。希望本書可以成為你前進路上的好幫手!