close

本來開頭應該是介紹一下底層和內功的重要性,但相信對於低並發編程的讀者就無需多言啦。

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

寫操作系統這個事,我也經常想做,但一是沒時間,二是沒能力,網上找相關的視頻或者書籍也是很少。熟悉我的讀者朋友肯定讀到我不少寫了個開頭又很快放棄的專欄,說來慚愧呀。

還好子牙老師把這塊空白補上了,我看了子牙老師手寫操作系統課程的列表,還是非常全面的,尤其是網絡部分的實現,不論是你學習 Linux 0.11 還是網上能找到的手寫操作系統教程,都是獨一無二的。

下面的時間就交給子牙老師吧!

哈嘍,小夥伴們好,我是子牙。前阿里P8。深入研究Windows內核、Linux內核、Hotspot源碼…這幾年聚集做大家想學又沒人教的課程

手寫操作系統二期開始招生啦!手寫OS是既手寫JVM課程後又一全網唯一的硬核課程!一期包含七大專題,三個月時間,直播授課,手把手帶你實現一個可運行的操作系統。二期新增專題:帶你手寫實現仿Linux EXT文件系統

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



01

手寫操作系統

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

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

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

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

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

操作系統層面,對操作系統的中斷機制、進程線程機制、內存機制要非常了解,最好是了解Windows、Linux兩個內核對於此的底層實現。這些機制是你寫一個能跑的操作系統必備的,你腦海中沒有那麼多底料,在實現的時候遇到各種奇葩問題,你將束手無策

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

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

還要了解Linux的可執行文件格式ELF,要熟練使用gcc、nasm,深刻理解編譯、鏈接,沒有這一塊的知識點,你寫的內核將無法調試,也就意味着你寫不出來

……

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

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

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



02

學這個課有什麼用

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

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

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

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

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

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


03

課程詳細介紹

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

手寫操作系統課程安排

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

手寫操作系統二期大綱

手寫操作系統二期代碼

二期課程相關的代碼我已經全部寫完

實模式切入保護模式

實現內存檢測、物理內存管理模塊、虛擬內存管理模塊

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

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

實現了時鐘中斷,通過時鐘中斷調度任務。與Windows、Linux一模一樣

實現了進程線程、任務切換、阻塞喚醒。當然,任務模塊的東西很多,後面會逐步加入

實現態的切換,由內核態切入用戶態發起系統調用

實現了系統調用模塊,通過0x80中斷實現應用態對內核態的範圍及返回

實現了仿Linux EXT的文件系統

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

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

不寫一次文件系統,你永遠不會知道創建一個文件有多繁瑣,自然遇到問題時也只能束手無策。手寫OS是值得每個Coder學一次的課程!

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

最後介紹下自己:前阿里P8。2021年加入圖靈學院成為一名講師,2022年離職創業嘗試做手寫JVM,運氣較好,一舉成功。所以才有機會做手寫OS這個課程。後面我會做更多的大家想學又沒地方學的課程:手寫編程語言、手寫MySQL、手寫推薦引擎……

手寫OS一期目前有300位VIP,他們來自各行各業,大家真的學的很認真,也很積極,積極幫助其他小夥伴解決問題,這是你想要的學習氛圍嗎?

一期即將結束,我也收穫了很多好評,分享一下。沒有炫耀或做秀的意思,就是想讓大家看到我的課程質量

真心做教育,踐行「子牙出品,必屬精品」

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

新班來了,雙十二來了,給大家帶來了超大優惠:新班優惠+預售優惠+雙十二大促,優惠價:4?99

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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()