手寫操作系統(tǒng)+shell+文件系統(tǒng),絕了
去年秋招及年后找工作的小伙伴應(yīng)該感受到了寒氣逼人,機(jī)會(huì)又少、又卷……加上chatGPT的出現(xiàn),可以預(yù)見未來(lái)幾年,簡(jiǎn)單、基礎(chǔ)、重復(fù)性工作大概率會(huì)被機(jī)器人取代……我們將何去何從呢?毫無(wú)疑問(wèn),成為技術(shù)大牛!
如何成為技術(shù)大牛呢?修內(nèi)功!讓自己變得強(qiáng)大且不可替代!
這些修內(nèi)功的課程,市面上少有人做,做相關(guān)課程的人,大多缺實(shí)戰(zhàn)經(jīng)驗(yàn),所以課程偏理論,大家學(xué)起來(lái)總感覺軟綿綿的不得勁…
子牙老師之前是JVM專家,這次帶來(lái)的是他的第二個(gè)課程:手寫操作系統(tǒng),非常硬核、重實(shí)戰(zhàn)…推薦給大家
哈嘍,我是子牙,一個(gè)很卷的硬核男人。喜歡研究底層,聚焦做那些大家想學(xué)沒地方學(xué)的課程:操作系統(tǒng)、虛擬機(jī)、模擬器、編程語(yǔ)言…
我經(jīng)常被問(wèn)到:子牙老師你是怎么學(xué)會(huì)OS的?我就是用很笨的方式學(xué)會(huì)的:手寫操作系統(tǒng)。計(jì)算機(jī)圈有個(gè)不成文的規(guī)則:不重復(fù)發(fā)明輪子。這個(gè)原則是針對(duì)干活,從學(xué)習(xí)的角度,重復(fù)發(fā)明輪子,把自己放在設(shè)計(jì)者的角度,而不是學(xué)習(xí)者、研究員的角度去學(xué)習(xí),是最高明的學(xué)習(xí)方式
下面我就給大家分享下我是怎么手寫一個(gè)操作系統(tǒng)的,我也順便給大家介紹下我打造的這個(gè)課程。
經(jīng)常也有人問(wèn)我,手寫操作系統(tǒng)有什么意義呢?能升職加薪嗎?不說(shuō)個(gè)例不靠技術(shù)走上去的人,大體來(lái)說(shuō),技術(shù)行業(yè),位居高位年限百萬(wàn)的,基本都是技術(shù)牛叉的那波人吧。所以你有答案了嗎?
為了讓大家能夠快速了解或者更好的了解手寫操作系統(tǒng)小班,我錄了個(gè)視頻,感興趣的可以看看
01
手寫操作系統(tǒng)
手寫一個(gè)操作系統(tǒng),應(yīng)該是所有Coder的夢(mèng)想吧。奈何這方面的資料奇缺,雖然有部分書籍,但是沒有一定的基礎(chǔ)也是看不懂的,導(dǎo)致很多Coder這一生都沒能實(shí)現(xiàn)這個(gè)夢(mèng)想。
我比較幸運(yùn),十多年時(shí)間,誤打誤撞補(bǔ)齊了手寫操作系統(tǒng)需要的絕大多數(shù)基礎(chǔ)。先說(shuō)下一個(gè)完整的操作系統(tǒng)包含哪些,如圖

那實(shí)現(xiàn)一個(gè)操作系統(tǒng)需要哪些基礎(chǔ)呢?
1、語(yǔ)言層面:匯編、C語(yǔ)言。這兩門語(yǔ)言要達(dá)到精通級(jí)別,能融會(huì)貫通使用才行。因?yàn)閷憙?nèi)核會(huì)涉及到匯編與C語(yǔ)言之間的互相調(diào)用
2、操作系統(tǒng)層面,對(duì)操作系統(tǒng)的中斷機(jī)制、進(jìn)程線程機(jī)制、內(nèi)存機(jī)制要非常了解,最好是了解Windows、Linux兩個(gè)內(nèi)核對(duì)于此的底層實(shí)現(xiàn)。這些機(jī)制是你寫一個(gè)能跑的操作系統(tǒng)必備的,你腦海中沒有那么多底料,在實(shí)現(xiàn)的時(shí)候遇到各種奇葩問(wèn)題,你將束手無(wú)策
3、尤其要對(duì)操作系統(tǒng)的執(zhí)行流機(jī)制非常熟悉,要熟練使用ROP技術(shù)構(gòu)建執(zhí)行流,在寫內(nèi)核的時(shí)候會(huì)經(jīng)常用到此技術(shù),比如任務(wù)的退出、fork函數(shù)
4、硬件層面,需要對(duì)BIOS中斷、屏幕操作、鍵盤操作、時(shí)鐘中斷、CPU段頁(yè)門非常熟悉,熟練使用
5、還要了解Linux的可執(zhí)行文件格式ELF,要熟練使用gcc、nasm,深刻理解編譯、鏈接,沒有這一塊的知識(shí)點(diǎn),你寫的內(nèi)核將無(wú)法調(diào)試,也就意味著你寫不出來(lái)
……
看到這,有些小伙伴就慌了:這我能學(xué)得會(huì)嗎?穩(wěn)住,別怕,有我!我的課程會(huì)在合適的節(jié)點(diǎn)穿插講匯編、C語(yǔ)言、操作系統(tǒng)內(nèi)核、硬件、gcc、elf、Makefile等關(guān)聯(lián)知識(shí),還有課后答疑及課后練習(xí),你只要感興趣,都可以學(xué),不用擔(dān)心基礎(chǔ)問(wèn)題,是真的能讓你學(xué)得會(huì)的操作系統(tǒng)課程
不過(guò)你確實(shí)需要花費(fèi)一點(diǎn)努力,下點(diǎn)苦功夫才能學(xué)會(huì)。這些知識(shí)你今天不學(xué),遲早還是要學(xué)。技術(shù)這行,如果沒有實(shí)力支撐,就是吃青春飯,底層功力扎實(shí),才能越老越吃香!而且互聯(lián)網(wǎng)紅利已經(jīng)結(jié)束,進(jìn)入內(nèi)卷時(shí)代,與其被別人卷,不如主動(dòng)卷,成為TOP!
02
學(xué)這個(gè)課有什么用
咱們也不能空談理想,聊點(diǎn)現(xiàn)實(shí)的:寫一個(gè)操作系統(tǒng),有什么現(xiàn)實(shí)意義呢?
一、從面試角度來(lái)說(shuō),無(wú)論你是Java、Python、go,亦或是c、c++,面試中都會(huì)被問(wèn)到操作系統(tǒng)或者硬件相關(guān)的問(wèn)題,你可能不知道,或者背答案應(yīng)付。問(wèn)題一變,就啞口無(wú)言了。如果你寫過(guò)一個(gè)操作系統(tǒng),你將深入理解這些,面試官問(wèn)一個(gè)問(wèn)題,你能答出一串,獲得好感,占得談薪先機(jī)
二、從工作角度來(lái)說(shuō),如果你寫過(guò)操作系統(tǒng),打通了這層認(rèn)知,你寫的每一行代碼,你能一眼看穿它的本質(zhì),想想這種堅(jiān)定的感覺,再想想你平時(shí)惴惴不安的感覺,你選哪個(gè)?
三、從就業(yè)角度來(lái)說(shuō),未來(lái)是萬(wàn)物互聯(lián)時(shí)代,IOT、人工智能、虛擬現(xiàn)實(shí)等這些產(chǎn)業(yè)的背后涉及的操作系統(tǒng),無(wú)不是Linux系。我的這個(gè)手寫操作系統(tǒng)課程,會(huì)結(jié)合講Windows內(nèi)核、Linux內(nèi)核,寫一個(gè)自己的內(nèi)核。一個(gè)課程,讓你學(xué)會(huì)三個(gè)操作系統(tǒng),為不確定的未來(lái)留點(diǎn)后路
四、從學(xué)習(xí)角度來(lái)說(shuō),新技術(shù)層出不窮,底層技術(shù)已經(jīng)基本穩(wěn)定。追逐新技術(shù),沒有盡頭。萬(wàn)變不離其宗,操作系統(tǒng)就是技術(shù)行業(yè)的宗,學(xué)一次,受益終身。學(xué)習(xí),要追求效率,要學(xué)習(xí)那些相對(duì)不變的,有個(gè)這個(gè)基礎(chǔ),再去學(xué)那些變化的,秒懂。比如你學(xué)會(huì)了linux的多線程,就等于同時(shí)學(xué)會(huì)了所有編程語(yǔ)言的多線程
五、從個(gè)人發(fā)展角度來(lái)說(shuō),如果你沒有底層功力,技術(shù)這行你能達(dá)到的高度是非常有限的,因?yàn)槟銢]有自學(xué)能力,遇到問(wèn)題你只能問(wèn)別人,等別人的答案,可能還不一定是正確答案…想想求人的痛苦,為何自己不成為實(shí)力的擁有者呢?
總結(jié)來(lái)說(shuō)就是,手寫一個(gè)操作系統(tǒng),是實(shí)力的象征。技術(shù)這個(gè)行業(yè),誰(shuí)會(huì)不喜歡一個(gè)技術(shù)牛叉的coder呢?跟面試官聊嗨了,面試官對(duì)你刮目相看的時(shí)候,你想要的薪資不就有底氣聊了嗎?
03
課程詳細(xì)介紹
前面講的可能看起來(lái)有點(diǎn)牛叉,不免會(huì)讓有些人懷疑我是不是在吹牛,所以我準(zhǔn)備給出有力的事實(shí)

手寫操作系統(tǒng)課程安排

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


手寫操作系統(tǒng)二期大綱


課程相關(guān)的代碼我已經(jīng)全部寫完
實(shí)模式切入保護(hù)模式
實(shí)現(xiàn)內(nèi)存檢測(cè)、物理內(nèi)存管理模塊、虛擬內(nèi)存管理模塊
實(shí)現(xiàn)了輸出模塊。
要知道你用Linux終端,它會(huì)自動(dòng)翻頁(yè),這個(gè)功能你如果寫內(nèi)核都是要自己實(shí)現(xiàn)的
實(shí)現(xiàn)了鍵盤中斷。
就是你鍵盤敲什么,屏幕就顯示什么,為后面加入命令行做準(zhǔn)備
實(shí)現(xiàn)了時(shí)鐘中斷,通過(guò)時(shí)鐘中斷調(diào)度任務(wù)。
與Windows、Linux一模一樣
實(shí)現(xiàn)了進(jìn)程線程、任務(wù)切換、阻塞喚醒。當(dāng)然,任務(wù)模塊的東西很多,后面會(huì)逐步加入
實(shí)現(xiàn)態(tài)的切換,由內(nèi)核態(tài)切入用戶態(tài)發(fā)起系統(tǒng)調(diào)用
實(shí)現(xiàn)了系統(tǒng)調(diào)用模塊,通過(guò)0x80中斷實(shí)現(xiàn)應(yīng)用態(tài)對(duì)內(nèi)核態(tài)的范圍及返回
實(shí)現(xiàn)了硬盤驅(qū)動(dòng)、仿EXT文件系統(tǒng)內(nèi)核、文件系統(tǒng)API、文件系統(tǒng)shell命令
課程配套代碼,分支我是按照課時(shí)打的,方便大家到時(shí)閱讀代碼

課程筆記已經(jīng)做好了,與上面貼的課程大綱一模一樣,會(huì)嚴(yán)格按照筆記授課,可以放心

最后介紹下自己:前阿里P8。2021年加入圖靈學(xué)院成為一名講師,2022年離職創(chuàng)業(yè)嘗試做手寫JVM,運(yùn)氣較好,一舉成功。所以才有機(jī)會(huì)做手寫OS這個(gè)課程。后面我會(huì)做更多的大家想學(xué)又沒地方學(xué)的課程:Linux內(nèi)核、手寫編程語(yǔ)言、手寫MySQL……
手寫OS目前有500位VIP,他們來(lái)自各行各業(yè),大家真的學(xué)的很認(rèn)真,也很積極,積極幫助其他小伙伴解決問(wèn)題,這是你想要的學(xué)習(xí)氛圍嗎?

我也收獲了很多好評(píng),分享一下。沒有炫耀或做秀的意思,就是想讓大家看到我的課程質(zhì)量


真心做教育,踐行“子牙出品,必屬精品”
如果你想更多了解我,歡迎去我公眾號(hào)【硬核子牙】看我之前的文章及我的奮斗歷程。白手起家程序員的職場(chǎng)心得,應(yīng)該會(huì)對(duì)你有很大啟發(fā)
彈指揮間,創(chuàng)業(yè)已經(jīng)兩年了。為了慶祝創(chuàng)業(yè)兩周年,給大家?guī)?lái)了超大福利

兩周年超大福利

1、所有課程九折優(yōu)惠,歷史最低價(jià);
2、所有報(bào)名小伙伴均享新出課程八折優(yōu)惠,比如今年的新課,可享八折優(yōu)惠上車。不止是今年的新課,后面我出的所有新課,已報(bào)名小伙伴都可以享八折優(yōu)惠

兩周年活動(dòng)規(guī)則

1、時(shí)間從3.1-3.15。手寫OS價(jià)格4050,手寫JVM價(jià)格2519
2、活動(dòng)力度較大,每個(gè)課程20個(gè)名額
3、本次招生是手寫OS二期最后一次招生,三期預(yù)計(jì)到七月開課,所以想學(xué)習(xí)手寫OS的,不要錯(cuò)過(guò)這次機(jī)會(huì)哦
性價(jià)比超高,可全網(wǎng)比價(jià)!感興趣的小伙伴別錯(cuò)過(guò)超大優(yōu)惠上車哦~

