手寫了個作業系統

語言: CN / TW / HK

內功決定一個程式設計師的上限,這是每個程式設計師都知道的道理。程式設計師要修哪些內功呢:彙編、C語言、C++、作業系統核心…

這些修內功的課程,市面上少有人做,做相關課程的人,大多缺實戰經驗,所以課程偏理論,大家學起來總感覺軟綿綿的不得勁…

子牙老師之前是JVM專家,離開圖靈後做了手寫JVM小班,一舉成功,這次帶來的是他的新課程手寫作業系統,非常硬核、重實戰…推薦給大家

哈嘍,小夥伴們好,我是子牙。深入研究Windows核心、Linux核心、Hotspot原始碼…

大家期待已久的手寫作業系統課程終於來啦! 既手寫JVM課程後又一全網唯一的硬核課程!一期包含七大專題,三個月時間, 直播授課 ,手把手帶你實現一個可執行的作業系統。

知道你有很多問題想問,別急,聽我娓娓道來。為了方便大家更好地瞭解課程,我錄了個更相信的影片版。雖然是課程試看影片,我也其中也分享了很多與作業系統學習相關的知識…

手寫作業系統

手寫一個作業系統,應該是所有Coder的夢想吧。奈何這方面的資料奇缺,雖然有部分書籍,但是沒有一定的基礎也是看不懂的,導致很多Coder這一生都沒能實現這個夢想。

我比較幸運,十多年時間,誤打誤撞補齊了手寫作業系統需要的絕大多數基礎,於是在手寫JVM課程做完之後,做了這個課程。

先說下一個完整的作業系統包含哪些,如圖

那實現一個作業系統需要哪些基礎呢:

  1. 語言層面:彙編、C語言。這兩門語言要達到精通級別,能融會貫通使用才行。因為寫核心會涉及到彙編與C語言之間的互相呼叫

  2. 作業系統層面,對作業系統的中斷機制、程序執行緒機制、記憶體機制要非常瞭解,最好是瞭解Windows、Linux兩個核心對於此的底層實現。這些機制是你寫一個能跑的作業系統必備的,你腦海中沒有那麼多底料,在實現的時候遇到各種奇葩問題,你將束手無策

  3. 尤其要對作業系統的執行流機制非常熟悉,要熟練使用ROP技術構建執行流,在寫核心的時候會經常用到此技術,比如任務的退出、fork函式

  4. 硬體層面,需要對BIOS中斷、螢幕操作、鍵盤操作、時鐘中斷、CPU段頁門非常熟悉,熟練使用

  5. 還要了解Linux的可執行檔案格式ELF,要熟練使用gcc、nasm,深刻理解編譯、連結,沒有這一塊的知識點,你寫的核心將無法除錯,也就意味著你寫不出來

  6. ……

看到這,有些小夥伴就慌了:這我能學得會嗎?穩住,別怕,有我!課程會在合適的節點穿插講彙編、C語言、作業系統核心、硬體、gcc、elf、Makefile等關聯知識,還有課後答疑及課後練習。

你只要感興趣,都可以學,不用擔心基礎問題,是真的能讓你學得會的作業系統課程

不過你確實需要花費一點努力,下點苦功夫才能學會。這些知識你今天不學,遲早還是要學。技術這行,如果沒有實力支撐,就是吃青春飯,底層功力紮實,才能越老越吃香!而且網際網路紅利已經結束,進入內卷時代,與其被別人卷,不如主動卷,成為TOP!

學這個課有什麼用

咱們也不能空談理想,聊點現實的:寫一個作業系統,有什麼現實意義呢?

一、從面試角度來說,無論你是Java、Python、go,亦或是c、c++,面試中都會被問到作業系統或者硬體相關的問題,你可能不知道,或者背答案應付。問題一變,就啞口無言了。如果你寫過一個作業系統,你將深入理解這些,面試官問一個問題,你能答出一串,獲得好感,佔得談薪先機

二、從工作角度來說,如果你寫過作業系統,打通了這層認知,你寫的每一行程式碼,你能一眼看穿它的本質,想想這種堅定的感覺,再想想你平時惴惴不安的感覺,你選哪個?

三、從就業角度來說,未來是萬物互聯時代,IOT、人工智慧、虛擬現實等這些產業的背後涉及的作業系統,無不是Linux系。我的這個手寫作業系統課程,會結合講Windows核心、Linux核心,寫一個自己的核心。一個課程,讓你學會三個作業系統,為不確定的未來留點後路

四、從學習角度來說,新技術層出不窮,底層技術已經基本穩定。追逐新技術,沒有盡頭。萬變不離其宗,作業系統就是技術行業的宗,學一次,受益終身。學習,要追求效率,要學習那些相對不變的,有個這個基礎,再去學那些變化的,秒懂。比如你學會了linux的多執行緒,就等於同時學會了所有程式語言的多執行緒

五、從個人發展角度來說,如果你沒有底層功力,技術這行你能達到的高度是非常有限的,因為你沒有自學能力,遇到問題你只能問別人,等別人的答案,可能還不一定是正確答案…想想求人的痛苦,為何自己不成為實力的擁有者呢?

課程詳細介紹

前面講的可能看起來有點牛叉,不免會讓有些人懷疑我是不是在吹牛,所以我準備給出有力的事實

手寫作業系統課程安排

先給大家看下完整的手寫作業系統課程安排,一共五期,當前是一期招生

手寫作業系統一期大綱

手寫作業系統一期程式碼

一期課程相關的程式碼我已經全部寫完

  1. 真實模式切入保護模式

  2. 實現記憶體檢測、實體記憶體管理模組、虛擬記憶體管理模組

  3. 實現了輸出模組。 要知道你用Linux終端,它會自動翻頁,這個功能你如果寫核心都是要自己實現的

  4. 實現了鍵盤中斷。 就是你鍵盤敲什麼,螢幕就顯示什麼,為後面加入命令列做準備

  5. 實現了時鐘中斷,通過時鐘中斷排程任務。 與Windows、Linux一模一樣

  6. 實現了程序執行緒、任務切換、阻塞喚醒。 當然,任務模組的東西很多,後面會逐步加入

  7. 實現態的切換,由核心態切入使用者態發起系統呼叫

  8. 實現了系統呼叫模組,通過0x80中斷實現應用態對核心態的範圍及返回

課程配套程式碼,分支我是按照課時打的,方便大家到時閱讀程式碼

課程筆記已經做好了,與上面貼的課程大綱一模一樣,會嚴格按照筆記授課,可以放心

多工切換是怎麼切的?看下酷帥的程式碼片段

你如果看過其他相關的影片,你會發現大家沒辦法除錯C語言。如果這樣,無疑讓學習門檻變得很高,在我這裡是不允許的,於是我花了大量時間攻克了此。即,我提供的環境,是可以除錯你寫的C語言的

最後介紹下自己:前阿里P8。2021年加入圖靈學院成為一名講師,專注講JVM與作業系統。2022年離職創業嘗試做手寫JVM,運氣較好,一舉成功。

一年多開設了五期班,積累了500多VIP。課程幹活滿滿,全網唯一,零差評。

手寫作業系統,依舊將是零差評。

真心做教育,踐行“子牙出品,必屬精品”

如果你想更多瞭解我,歡迎去我公眾號【硬核子牙】看我之前的文章及我的奮鬥歷程。白手起家程式設計師的職場心得,應該會對你有很大啟發

8.11-8.22為預售價格, 8.22-9.30為早鳥價,10月開課恢復原價4000

價效比超高,可全網比價! 感興趣的小夥伴別錯過超大優惠上車哦~