前言
每個程序員都有一個操作繫統夢,而操作繫統也是每個程序員的心結。
一知半解地了解一點兒操作繫統的知識,已經無法滿足當下程序員的需求。但要深入剖析操作繫統,又是大部分程序員都很惶恐的一件事。如果要讓程序員讀一遍操作繫統源碼,那簡直跟要了命一樣。其實,操作繫統的源碼並沒有那麼可怕。
有很多優秀的操作繫統圖書都是以 Linux-0.11 這個經典版本為研究對像進行講解的,可為什麼即便是 Linux-0.11 這種代碼量最少的版本,仍然令很多人望而卻步呢?
先不直接回答這個問題,我們看一下《天龍八部》的開頭:
青光閃動,一柄青鋼劍倏地刺出,指向中年漢子左肩,使劍少年不待劍招用老,腕抖劍斜,劍鋒已削向那漢子右頸。那中年漢子……
記住這個感覺沒?我們再看某本Linux圖書的開頭:
對於操作繫統而言,穩定且可靠地運行是最重要的。現行技術方案是將用戶進程與用戶進程之間、用戶進程與操作繫統之間進行分離,操作繫統可以管理用戶進程,但是用戶進程之間不能相互干預……
好了,不用讀下去了,這句話高瞻遠矚地從宏觀上幫我們梳理了操作繫統的體繫結構,但對於尚不了解操作繫統的人來說,可能完全不知道這句話在說什麼。
雖然說思想很重要,但在沒有任何細節做積累時強行進行思想的撥高,是撥不上去的,還不如一直保持一張白紙的狀態。
反觀《天龍八部》的開頭,連人物的名字都沒有,更別說梳理整個體繫結構了,上來直接一個精彩鏡頭,讓你迅速進入故事情節。可是讀完整部小說的讀者,無一不對裡面的人物如數家珍,對大理的風光仿佛親眼看見了一般,對宋遼矛盾的激烈感同身受。
為什麼會這樣呢?因為一切的愛恨情仇,都是讀者通過一個個人物和事件的刻畫感悟出來的。隻有自己感悟出來的知識和靠自己總結出來的結論,纔真正屬於自己。而那些一上來就試圖把整個脈絡梳理清楚的嘗試,對於新手來說可能徒勞無功,即便是死記硬背記住了,也終究不是屬於自己的知識,無法感同身受。
我在學習操作繫統的過程中,就有這樣的感覺。
我曾一次次試圖從較高的視角來看操作繫統的知識體繫,從宏觀層面跟著大部頭圖書梳理操作繫統的整體邏輯,但無一例外地以失敗告終。而當我放下包袱,用讀一本小說的心態去閱讀 Linux源碼時,我發現,我從來沒有去想著梳理出什麼體繫,但不知道從哪一行代碼開始,整個操作繫統的體繫結構已經較為清晰地出現在我面前了,竟是那麼不知不覺。而且我也清晰地知道,這樣的體繫是怎麼一步步從第一行代碼開始,逐步建立起來的。
所以,我想把這個過程毫無保留地分享給大家,於是在 2021 年 11 月 8 日,我在我的微信公眾號“程序員閃客”上開始連載 Linux-0.11 源碼趣讀這個繫列,於 2022 年 9 月6 日發布最後一篇文章完結,共 50回。
在這個過程中,我收獲了一大批對該繫列感興趣的讀者,不斷有讀者對這個繫列提出自己的想法、改進建議、內容勘誤,甚至有不少讀者將自己的讀書筆記發給我。這些事讓我非常感動,也是我能堅持下來不斷更新並優化的動力。
後來,越來越多的讀者建議我把這個繫列整理成書,沉澱下來,我也越來越覺得這件事情非常有意義,同時也十分願意去做,於是便有了這本書。
本書特色
我將用讀一本小說的心態帶你一起閱讀 Linux-0.11 的源碼,用通俗的語言幫你克服對操作繫統源碼的恐懼。
當然,隻是用讀小說的心態,並不是將各種技術都采用擬人化的方式講解。你將按照 Linux-0.11 源碼的執行順序,像按照時間線讀一本小說一樣,本著探索與發現的心態來閱讀源碼。你會發現,原來閱讀源碼這麼有趣,可以像讀小說一樣有種“上頭”的感覺。
同時,本書在講解晦澀難懂的技術原理和細節時,配有大量生動形像且準確的圖解,會給你帶來十足的畫面感。
讀者對像
如果你是一名程序員,但是計算機底層知識相對薄弱,又一直沒有一個深入學習的突破口,那本書很適合你。
如果你是一名學生,不想僅停留在課堂中對操作繫統概念上的學習,想要深入源碼細節來加深自己的理解,那本書很適合你。
如果你是非技術領域的朋友,但是對操作繫統非常感興趣,或者想找到一個契機來較為深入地了解計算機原理,那本書也很適合你。