大家好,我是魚皮。“操作系統(tǒng)”作為所有軟件的基礎,是計算機王國的掌舵者。我們常用“靈魂、大腦、內(nèi)核、基石”等詞來形容它,足以見得它對計算機而言有多么重要。
事實也確實如此,作為每個程序員必須好好修煉的“基本功”,它能直接解決我們在工作中的很多疑難雜癥,比如做高性能服務端編程時,經(jīng)常會用到內(nèi)存、進程、線程、IO 等相關知識。而且,我一直認為,花大量時間研究 OS 這些底層知識,是很有必要的,雖然短期看不到效果,但卻是從 0 到 1 必然的過程。學懂了這些基本功,再去琢磨那些被“追捧”的流行技術啊、demo 啊,都能輕松地理解背后高級的設計,理解系統(tǒng)中的性能瓶頸。我也很喜歡研究操作系統(tǒng),作為程序員的三大浪漫之一,它雖然枯燥無聊,卻又存在無限可能。對技術人來說,即便為此消耗了大把時光,費盡心力,也是值得。正如我的偶像“計算機鬼才”彭東所說:"生活可以一地雞毛,但操作系統(tǒng)卻是心中的光"。彭東在操作系統(tǒng)上的成就,讓我頗為佩服,他被稱為“計算機鬼才”,是有原因的。非科班出身,卻憑借驚人的意志與熱愛,自學微機原理,編程語言,數(shù)據(jù)結構與算法,翻遍了操作系統(tǒng)和硬件書籍,獨立開發(fā)了 x86 平臺下的 LMOS 和 arm 平臺下的 LMOSEM 兩個操作系統(tǒng)。LMOS 現(xiàn)在已經(jīng)發(fā)布 8 個測試版本,是多進程、多線程、多 CPU、支持虛擬內(nèi)存的全 64 位操作系統(tǒng)內(nèi)核,代碼量足足有 10 萬多行。如此浩大的項目,沒點“程序員的浪漫”精神,想必很難堅持下來。他的書《深度探索嵌入式操作系統(tǒng):從零開始設計、架構和開發(fā)》也曾給了我很多啟發(fā)。數(shù)十年深入研究操作系統(tǒng),他對 Linux、BSD、SunOS 等開源操作系統(tǒng),以及 Windows 的 NT 內(nèi)核都非常熟悉,在編譯器,數(shù)據(jù)庫等基礎架構方面也頗有研究。可以說,在操作系統(tǒng)領域,他是當之無愧的 KOL,非常有發(fā)言權。這條路上,會有哪些難點和阻礙,會踩哪些坑,他都了如指掌。所以,當我聽說彭東在極客時間寫了一個《操作系統(tǒng)實戰(zhàn)45講》專欄,非常意外,第一時間就訂閱了。讓我很驚喜的是,彭東把“學操作系統(tǒng)不要死看書”的主張貫穿到專欄里,通過配套實驗帶你完成一個 OS,當你真的動手寫了一個 OS 的時候,對操作系統(tǒng)的理解會是質(zhì)的飛躍。下圖是彭東梳理的「簡化版操作系統(tǒng)知識體系」,圖中的每一小塊,都會隨著課程的進行,逐一展開,建議先馬后看。他會帶你從 0 到 1,一步步實現(xiàn)一個基于 x86 平臺的 64 位多進程的操作系統(tǒng)—— Cosmos,你將擁有一個屬于自己的操作系統(tǒng)內(nèi)核,對 Linux 內(nèi)核的理解也會更加透徹。跟著學下來,操作系統(tǒng)架構設計能力會大幅提升,還可以學到系統(tǒng)級別的軟件編程技巧,這對我們拓展技術深度和廣度是大有裨益的。最重要的是,求職面試也會成為加分項,自己動手寫過操作系統(tǒng),真有“飄”的資本,簡歷自然脫穎而出。
這門課程上線兩個月,訂閱量就已經(jīng)超 10000 訂閱了,這個結果其實并不意外,畢竟,業(yè)界大牛手把手帶著寫 OS 的機會實在太難得。我在追更的同時,也不禁佩服,彭東海量的知識儲備和極佳的表達能力。要知道,越是底層的知識越不好講透:要用通俗易懂的語言,把復雜的操作系統(tǒng)“講”出來;要注意細節(jié)與重點的把握和梳理;要把復雜的內(nèi)容,交付給各個不同思想層次,不同思維方式的人。前兩天,編輯在后臺篩選留言做個了好評圖,大家可以看看:“撒哈拉沙漠都沒有這課干”,可以看出這課有多干!

不得不說,彭東太會講了,不僅把枯燥的原理講得明明白白,講述中還充滿魔力,吸引我深挖下去,這門課還有幾個不得不提的特色。為了方便“計算機小白”理解,快速上手實操,課程中加入了大量的圖示和詳細的代碼注釋,足以看出彭東的用心,也能感受到他的“內(nèi)功深厚”。比如下面的虛擬內(nèi)存數(shù)據(jù)結構設計圖,計算機結構示意圖,文件系統(tǒng)框架圖和進程狀態(tài)切換流程圖等,篇幅限制,這里僅是冰山一角,專欄中還有大量圖示和知識導圖。再比如,課程中的代碼示例,這個詳細程度的代碼注釋,是比較少見的。摘自《操作系統(tǒng)實戰(zhàn) 45講》第9講瞧一瞧-Linux的自旋鎖和信號量如何實現(xiàn)?在介紹每個內(nèi)核組件實現(xiàn)時,都會先講清原理,再帶你基于設計理解去動手實現(xiàn);然后與 Linux內(nèi)核的實現(xiàn)做前后對比。既能邊學邊練,又能幫你從“上帝視角”審視 Linux 內(nèi)核。專欄中的每一講,都會匹配可以工作的代碼,傳在 gitee 上;可以跟著課程一步步實現(xiàn),也可以直接使用每節(jié)課提供的代碼進行調(diào)試,直到最終實現(xiàn)一個操作系統(tǒng)。實際上,動手“run”起來,哪怕只是讀和 clone 老師的代碼,也會對操作系統(tǒng)有更深一層的理解。4. 開源計劃,新的挑戰(zhàn)
為了把課程內(nèi)容實踐得更好,最近彭東還整了個“大計劃” —— 籌備建立一個開源社區(qū),把 Cosmos 運作成一個開源項目,專欄的讀者都有望優(yōu)先成為第一批 contributer。
盡管操作系統(tǒng)知識體系復雜,學起來可能會無從下手,學習過程中遇到問題不知道如何解決,這些困難使得很多人最后遺憾放棄。
為了解決大家“買課一時爽,學課難上天”的困境,彭東老師發(fā)起“手寫 OS 打卡行動”,60 天帶你實現(xiàn)自己的操作系統(tǒng)!所有專欄讀者都可以免費加入。
老師將用自己學習操作系統(tǒng)的方式,帶大家實現(xiàn)自己的操作系統(tǒng):首先了解操作系統(tǒng)基礎知識后,邊寫代碼邊研究。再加上知識輸入和實踐雙管齊下,最終建立了自己的知識體系。
這次打卡行動已經(jīng)為大家梳理了實現(xiàn)一個操作系統(tǒng)的必備知識點,大家只要跟著老師的步伐,和2000 名優(yōu)秀的技術人一起學習和討論交流,相信屬于你自己的操作系統(tǒng)就在不遠處!

說了這么多,來看看打卡行動對應的各章節(jié)的知識點和精彩看點吧。

整個 OS 開發(fā)路就像這一條大河,如果你想創(chuàng)新,只靠一行兩行代碼,一兩天的創(chuàng)造肯定是不夠的。持之以恒是成功的法寶,堅持在河中激起足夠多的波浪,你才有可能改變河流的流向。
點擊「閱讀全文」,68 元就能拿下,和彭東老師一起實現(xiàn)自己的操作系統(tǒng)!