官术网_书友最值得收藏!

推薦序二

在翻譯了《Understanding the Linux Kernel》和《Linux Kernel Development》這兩本書后,每當有讀者詢問如何學習Linux內核時,我都不敢貿然給出建議。如此龐大的內核,各個子系統之間的關系錯綜復雜,代碼不斷更新和迭代,到底該從何入手?你的出發點是哪里?你想去的彼岸又是哪里?相應的學習方法都不同。

一旦踏入Linux內核領域,要精通Linux內核的精髓,幾乎沒有捷徑可走。盡管通往山頂的路有無數條,但每條路上都布滿荊棘,或許時間和毅力才是斬荊披棘的利器。

從最初到現在,Linux內核的版本更新達上千個,代碼規模不斷增長,平均每個版本的新增代碼有4萬行左右。在源代碼的10個主要子目錄(arch、init、include、kernel、mm、IPC、fs、lib、net、drivers)中,驅動程序的代碼量呈線性增長趨勢。

從軟件工程角度來看內核代碼的變化規律,Linux的體系結構相對穩定,子系統數變化不大,平均每個模塊的復雜度呈下降趨勢,但系統整體規模和復雜性分別呈超線性和接近線性增長趨勢。drivers和arch等模塊的快速變化是引起系統復雜性增加的主因。那么,在代碼量最多的驅動程序中,有什么規律可循?最根本的又是什么?

本書更多的是關于Linux內核代碼背后機理的講解,呈現給讀者的是一種思考方法,讓讀者能夠在思考中舉一反三。盡管驅動程序只是內核的一個子系統,但Linux內核是一種整體結構,牽一發而動全局,對Linux內核其他相關知識的掌握是開發驅動的基礎。本書的內容包括中斷、定時器、進程生命周期、uevent、并發、編譯亂序、執行亂序、等待隊列、I/O模型、內存管理等,實例代碼也被大幅重構。

明代著名的思想家王明陽有句名言“知而不行,是為不知;行而不知,可以致知”。因此在研讀本書時,你一定要親身實踐,在實踐之后要提升思考,如此,你才可以越過代碼本身而看到內核的深層機理。

陳莉君

西安郵電大學

主站蜘蛛池模板: 通州市| 勐海县| 南宁市| 高青县| 扶绥县| 银川市| 兰州市| 克什克腾旗| 南阳市| 新郑市| 墨玉县| 营口市| 健康| 阿坝县| 汝阳县| 蒙阴县| 新蔡县| 天津市| 丽江市| 新野县| 兴仁县| 禄劝| 广南县| 正镶白旗| 浮梁县| 庄浪县| 环江| 财经| 罗定市| 栖霞市| 多伦县| 天等县| 河津市| 怀集县| 西昌市| 图片| 久治县| 德阳市| 丹江口市| 九龙城区| 大渡口区|