0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

我做到了3天手搓操作系統(tǒng)

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2022-11-29 11:23 ? 次閱讀

都說操作系統(tǒng)(簡稱 OS ),是程序員的三大浪漫之一,我們經(jīng)常會用“靈魂、大腦、內核、基石”等詞來形容它,足以見得它對計算機而言有多么重要。最近,我用 3 天的時間,自己寫了個操作系統(tǒng)。

在手寫 OS 的過程中,之前遇到的很多和操作系統(tǒng)密切相關的疑難雜癥,都找到了答案。比如:

內存為什么會泄漏、服務進程為什么會 dang 掉、文件為什么打不開?

MySQL 的 IO 性能還能不能再提升?

網(wǎng)絡服務為什么會掉線?模式靠什么技術支撐?

Node.js 的 I/O 模型長什么模樣?

除此之外,在做高性能服務端編程的時候,經(jīng)常會用到內存、進程、線程、IO 相關的知識。

“學好操作系統(tǒng),能直接解決你在工作中遇到的這些問題”。就這一個原因,它就已經(jīng)是每個程序員必須好好修煉的“基本功”了。

事實也確實如此,作為每個程序員必須好好修煉的“基本功”,它能直接解決我們在工作中的很多疑難雜癥,比如做高性能服務端編程時,經(jīng)常會用到內存、進程、線程、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、支持虛擬內存的全 64 位操作系統(tǒng)內核,代碼量足足有 10 萬多行。如此浩大的項目,沒點“程序員的浪漫”精神,想必很難堅持下來。

他的書《深度探索嵌入式操作系統(tǒng):從零開始設計、架構和開發(fā)》也曾給了我很多啟發(fā)。

d4709b42-6f92-11ed-8abf-dac502259ad0.png

數(shù)十年深入研究操作系統(tǒng),他對 Linux、BSD、SunOS 等開源操作系統(tǒng),以及 Windows 的 NT 內核都非常熟悉,在編譯器,數(shù)據(jù)庫等基礎架構方面也頗有研究。

可以說,在操作系統(tǒng)領域,他是當之無愧的 KOL,非常有發(fā)言權。這條路上,會有哪些難點和阻礙,會踩哪些坑,他都了如指掌。

所以,去年聽說彭東在極客時間寫了一個《操作系統(tǒng)實戰(zhàn)45講》專欄,非常意外,當時我第一時間就訂閱了。

最近又開始二刷了,再學一遍還是有很多收獲。最讓我驚喜的是,彭東把“學操作系統(tǒng)不要死看書”的主張貫穿到專欄里,通過配套實驗帶你完成一個OS,當你真的動手寫了一個 OS 的時候,對操作系統(tǒng)的理解會是質的飛躍。

下圖是彭東梳理的「簡化版操作系統(tǒng)知識體系」,圖中的每一小塊,都會隨著課程的進行,逐一展開,建議先馬后看。

d49408c0-6f92-11ed-8abf-dac502259ad0.jpg

操作系統(tǒng)簡化知識體系圖

他會帶你從0到1,一步步實現(xiàn)一個基于 x86 平臺的 64 位多進程的操作系統(tǒng)——Cosmos,你將擁有一個屬于自己的操作系統(tǒng)內核,對 Linux 內核的理解也會更加透徹。

跟著學下來,操作系統(tǒng)架構設計能力會大幅提升,還可以學到系統(tǒng)級別的軟件編程技巧,這對我們拓展技術深度和廣度是大有裨益的。

最重要的是,求職面試也會成為加分項,自己動手寫過操作系統(tǒng),真有“飄”的資本,簡歷自然脫穎而出。

掃碼免費試讀

原價 ¥199,限時特惠¥139

今日新用戶僅 ¥68

僅限「前 50 人」優(yōu)惠

記得當時這門課程上線兩個月,訂閱量就超 10000 訂閱了,現(xiàn)在已經(jīng)將近50000 人學習了,這個結果其實并不意外,畢竟,業(yè)界大牛手把手帶著寫 OS 的機會實在太難得。

我在追更的同時,也不禁佩服,彭東海量的知識儲備和極佳的表達能力。要知道,越是底層的知識越不好講透:要用通俗易懂的語言,把復雜的操作系統(tǒng)“講”出來;要注意細節(jié)與重點的把握和梳理;要把復雜的內容,交付給各個不同思想層次,不同思維方式的人。

不得不說,彭東太會講了,不僅把枯燥的原理講得明明白白,講述中還充滿魔力,吸引我深挖下去,這門課還有幾個不得不提的特色。

1.“保姆級”圖示+代碼解析,小白也適用

為了方便“計算機小白”理解,快速上手實操,課程中加入了大量的圖示和詳細的代碼注釋,足以看出彭東的用心,也能感受到他的“內功深厚”。

比如下面的虛擬內存數(shù)據(jù)結構設計圖,計算機結構示意圖,文件系統(tǒng)框架圖和進程狀態(tài)切換流程圖等,篇幅限制,這里僅是冰山一角,專欄中還有大量圖示和知識導圖。

d4f2b744-6f92-11ed-8abf-dac502259ad0.png

再比如,課程中的代碼示例,這個詳細程度的代碼注釋,是比較少見的。

d50e7132-6f92-11ed-8abf-dac502259ad0.png

摘自《操作系統(tǒng)實戰(zhàn) 45講》第9講

瞧一瞧-Linux的自旋鎖和信號量如何實現(xiàn)?

2.邊學邊練,對比分析,強化理解 Linux

在介紹每個內核組件實現(xiàn)時,都會先講清原理,再帶你基于設計理解去動手實現(xiàn);然后與 Linux內核的實現(xiàn)做前后對比。既能邊學邊練,又能幫你從“上帝視角”審視 Linux 內核。

d5301634-6f92-11ed-8abf-dac502259ad0.jpg

3.配套源碼,真正動手“run”起來

專欄中的每一講,都會匹配可以工作的代碼,傳在 gitee 上;可以跟著課程一步步實現(xiàn),也可以直接使用每節(jié)課提供的代碼進行調試,直到最終實現(xiàn)一個操作系統(tǒng)。

實際上,動手“run”起來,哪怕只是讀和 clone 老師的代碼,也會對操作系統(tǒng)有更深一層的理解。

d5446062-6f92-11ed-8abf-dac502259ad0.gif

Cosmos系統(tǒng)運行演示

4.開源計劃,新的挑戰(zhàn)

為了把課程內容實踐得更好,最近彭東還整了個“大計劃”——籌備建立一個開源社區(qū),把 Cosmos 運作成一個開源項目,專欄的讀者都有望優(yōu)先成為第一批 contributer。

為拋棄歷史包袱,未來完整的 Cosmos 會同時開源系統(tǒng)和 CPU 源碼,還會考慮根據(jù)需求定制芯片。據(jù)彭東透露,他邀請到了非常優(yōu)秀的芯片架構師,來根據(jù)操作系統(tǒng)架構特點設計 CPU,想想就很“浪漫”了!

此外,專欄讀者都可以免費加入彭東的「操作系統(tǒng)交流群」,他經(jīng)常在群里答疑解惑,這里還有很多技術內功深厚的大佬,相互交流探討,光看聊天記錄,都能學到不少。

d785f08e-6f92-11ed-8abf-dac502259ad0.png

訂閱后在課程詳情頁,點擊鏈接即可入群

編輯小姐姐也經(jīng)常在群里出沒,鼓勵督促,可以說是伴隨式的學習了,我加過的交流群不少,這個群確實非常難得,大佬云集,知識密度高,氣氛活躍,學習體驗也很好。

說了這么多,來看看課程各章節(jié)的知識點和精彩看點吧。

d7fcf7b0-6f92-11ed-8abf-dac502259ad0.png

都說程序員 35 歲是個坎,但其實,有坎的是不上不下、“半瓶水”的人。只要扎實基礎,勤修內功,那么無論是上層開發(fā),還是理解前沿技術,都等于加了天然 buff。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)

    關注

    37

    文章

    6669

    瀏覽量

    123119
  • 程序員
    +關注

    關注

    4

    文章

    949

    瀏覽量

    29743

原文標題:3天手搓操作系統(tǒng),我做到了

文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    linux操作系統(tǒng)安裝步驟 linux操作系統(tǒng)的特點及組成

    Linux操作系統(tǒng)安裝步驟 Linux操作系統(tǒng)是一種開源的操作系統(tǒng),它以其穩(wěn)定性、安全性和靈活性而聞名。以下是安裝Linux操作系統(tǒng)的一般步驟,以Ubuntu為例: 1. 準備工作 在
    的頭像 發(fā)表于 10-21 11:24 ?360次閱讀

    新手學操作系統(tǒng) 第二周

    新手學操作系統(tǒng)1.在shel程序中發(fā)命令 編輯 人在shell中發(fā)命令2.操作系統(tǒng)中的基本命令3.獲取幫助信息的兩個方法
    的頭像 發(fā)表于 10-08 11:32 ?142次閱讀
    新手學<b class='flag-5'>操作系統(tǒng)</b> 第二周

    資深工程師80塊86中控面板!支持遠程控制

    !啟明智顯資深工程師80塊智能86中控面板,各種功能高度集成于一體,旋鈕+按鍵的操作方式簡單易上手,還支持遠程控制,超高性價比!而且資料開源啊朋友們!高性能、高
    的頭像 發(fā)表于 09-19 08:08 ?303次閱讀
    資深工程師80塊<b class='flag-5'>手</b><b class='flag-5'>搓</b>86中控面板!支持遠程控制

    為了學習內核開發(fā),大佬了一個輕量級操作系統(tǒng)YiYiYa OS

    編譯 ya -m debug -p t113-s3 -r t113-s3 編譯演示 infones模擬器演示 其它功能及開源資料獲取 整體來說,YiYiYa操作系統(tǒng)非常輕量,支持POSIX
    發(fā)表于 08-30 14:57

    為了學習內核開發(fā),大佬了一個輕量級操作系統(tǒng)YiYiYa OS

    YiYiYa操作系統(tǒng)是一個樸實無華的操作系統(tǒng),追求快速開發(fā),最小實現(xiàn),同時遵循SOLID原則。編碼簡潔明了,非常適合學習操作系統(tǒng)的同學。目前既有宏內核,也逐步實現(xiàn)了微內核架構,未來將會是混合內核
    發(fā)表于 08-27 10:08

    嵌入式實時操作系統(tǒng):Intewell操作系統(tǒng)與VxWorks操作系統(tǒng)有啥區(qū)別

    Intewell操作系統(tǒng)和VxWorks操作系統(tǒng)都是工業(yè)領域常用的操作系統(tǒng),它們各有特點和優(yōu)勢。以下是它們之間的一些主要區(qū)別:
    的頭像 發(fā)表于 07-08 14:16 ?332次閱讀
    嵌入式實時<b class='flag-5'>操作系統(tǒng)</b>:Intewell<b class='flag-5'>操作系統(tǒng)</b>與VxWorks<b class='flag-5'>操作系統(tǒng)</b>有啥區(qū)別

    的破筆記本有救了!雷電4顯卡塢!全開源了……

    工程名稱:【全網(wǎng)首發(fā)】雷電4筆記本電腦顯卡塢前言了一個雷電4顯卡盒(拓展塢)!基于JHL7440主控設計!小編看完表示:什么?的破筆記本也能用上RTX3060Ti了?!01顯卡盒功能/亮點
    的頭像 發(fā)表于 06-19 08:04 ?312次閱讀
    <b class='flag-5'>我</b>的破筆記本有救了!<b class='flag-5'>手</b><b class='flag-5'>搓</b>雷電4顯卡塢!全開源了……

    了一個ESP32墨水屏閱讀器,蠻簡單的

    工程名稱:3.7寸墨水屏閱讀器時鐘溫濕度TXT/Epub前言帥小伙ESP32墨水屏閱讀器!可輕松續(xù)航100!01閱讀器功能/亮點?1.具有閱讀器、時鐘、溫濕度監(jiān)測、鬧鐘、番茄鐘功能2.3.7寸
    的頭像 發(fā)表于 05-27 08:04 ?331次閱讀
    <b class='flag-5'>手</b><b class='flag-5'>搓</b>了一個ESP32墨水屏閱讀器,蠻簡單的

    AURIX3G可以使用Linux操作系統(tǒng)嗎?

    即使在 AURIX3G 中,也可以使用 Linux 操作系統(tǒng)嗎?
    發(fā)表于 05-22 07:12

    基于鴻道(Intewell?)操作系統(tǒng)研發(fā)的農業(yè)機器人操作系統(tǒng)

    江蘇大學與科東軟件聯(lián)合研發(fā)“農業(yè)機器人操作系統(tǒng)”,并成立“農業(yè)機器人操作系統(tǒng)”聯(lián)合實驗室,奮力推進農業(yè)智能化,推動農業(yè)科技創(chuàng)新?!稗r業(yè)機器人操作系統(tǒng)”的技術革新,對提高農業(yè)生產效率、保護環(huán)境、應對農業(yè)勞動力短缺及促進智慧農業(yè)發(fā)展
    的頭像 發(fā)表于 04-30 11:09 ?362次閱讀

    帶你認識實時操作系統(tǒng)(rtos)

    實時操作系統(tǒng)(RTOS)是為嵌入式系統(tǒng)和實時應用提供一個穩(wěn)定、可預測和高效運行環(huán)境的操作系統(tǒng)。實時操作系統(tǒng)確保了系統(tǒng)能夠在嚴格的時間限制內響
    的頭像 發(fā)表于 04-16 16:30 ?1081次閱讀
    帶你認識實時<b class='flag-5'>操作系統(tǒng)</b>(rtos)

    深度解析全球操作系統(tǒng)格局

    操作系統(tǒng)是負責協(xié)調、管理和控制計算機硬件與軟件資源的程序,是整個計算機的核心系統(tǒng)軟件。 按照操作系統(tǒng)面向的設備類型,通用操作系統(tǒng)主要包括桌面操作系統(tǒng)
    的頭像 發(fā)表于 01-18 15:00 ?955次閱讀
    深度解析全球<b class='flag-5'>操作系統(tǒng)</b>格局

    有了單片機,為什么還要使用操作系統(tǒng)

    不愿意面對的事。他能提供很好的底部的支持。以QQ為例,QQ是一款軟件,你往對話框里寫字,然后通過網(wǎng)絡傳到另一臺用戶端。如果你有操作系統(tǒng),你跟操作系統(tǒng)說,要個窗戶,他就給你窗戶,要聯(lián)
    的頭像 發(fā)表于 01-11 08:35 ?669次閱讀

    詳解實時操作系統(tǒng)和非實時操作系統(tǒng)

    實時操作系統(tǒng),當外界事件和數(shù)據(jù)產生時,系統(tǒng)能以足夠快的速度予以處理,其處理結果能在規(guī)定的時間內控制生產結果或對系統(tǒng)做出響應,并控制所有實時任務協(xié)調一致運行的操作系統(tǒng)。
    的頭像 發(fā)表于 12-26 09:54 ?4344次閱讀
    詳解實時<b class='flag-5'>操作系統(tǒng)</b>和非實時<b class='flag-5'>操作系統(tǒng)</b>

    從芯片到操作系統(tǒng),手機廠商的操作系統(tǒng)混戰(zhàn)卷到了智能手表

    ?電子發(fā)燒友網(wǎng)報道(文/莫婷婷)繼華為推出鴻蒙操作系統(tǒng)之后,不少手機廠商都推出自研操作系統(tǒng),小米推出小米澎湃OS替代MIUI,vivo也推出藍河操作系統(tǒng)。霎時間,自研操作系統(tǒng)似乎成了手
    的頭像 發(fā)表于 11-22 01:09 ?1775次閱讀
    從芯片到<b class='flag-5'>操作系統(tǒng)</b>,手機廠商的<b class='flag-5'>操作系統(tǒng)</b>混戰(zhàn)卷<b class='flag-5'>到了</b>智能手表