Chapter 0:為何要打造一個作業系統 === :::info 心靈雞湯可以撐過枯燥乏味的學習過程。 ::: >Creation Time[time=Tue, Aug 12, 2025 2:38 AM] --- # 挑戰自我 ![maslow-hierachy-of-needs-min](https://hackmd.io/_uploads/S14J9pDule.jpg) 這是大家熟知的馬斯洛需求理論:最底層的是基本的生理需求,吃喝拉撒睡;第二層是安全需求,人生安全、健康、財富財產安全;第三層是社會需求,包含家人、朋友、伴侶等歸屬感的滿足;第四層是自尊的需求,建立個人的影響力和社會地位;最後是自我實現的需求,追求自我認定的理想和目標。 > 我覺得從無到有打造作業系統應該是屬於「自我實現」層級的。 因為打造作業系統並不是任何一個企業的面試標準,就算真的打造出作業系統,它並不能保證可以得到任何一個工作,就短期效益而言真的是少得可憐,還不如多刷一些 leetcode,或是背一些面試考古題還比較實際。的確,面對研究所考試的時候,作業系統其實就是個背科,可以理解的部分就先理解再背,無法理解的部分直接生吞活剝硬背下來就對了。沒辦法,研究所考試準備時間也就頂多六到八個月,資工所的科目又特別多,同時間還有線性代數、離散數學、資料結構、演算法,當下真的只能囫圇吞棗,以求最大得分效益。之後出了社會,通過面試進入科技業,其實也不太需要對於作業系統有多深刻的了解,你懂的,大家都是糊口飯吃而已。 > 可以回答作業系統的所有問題,不代表具有解決問題的能力。 But!對~人生最重要的就是這個「But」,在科技業打滾十年後,一路從系統廠前進到半導體廠,從客戶端變成提供晶片的供應商,其實一路上都離不開要跟作業系統打交道,尤其是 Linux 這頭巨獸,我相信在業界打滾多年的人,都會有一套生存之道。每每遇到很艱難的問題時,都是因為我對作業系統的不夠深刻了解,雖然燒香拜佛後總能僥倖度過難關,但不免心裡虛虛的,也因此激發我想要找個機會好好了解作業系統的求知慾,能更有效率更專業的提升解決問題的能力。 > 求知慾是人類進步的原動力。 我之前有嘗試直接看 jserv 「Linux 核心設計」線上講座,但 Linux 這頭巨獸實在太高深莫測了,能理解三成就偷笑了,大部分都一知半解的聽完講座。畢竟 Linux 可是累積了成千上萬人的努力,說它是人類智慧的結晶都不為過,如此龐大且複雜的 Linux 我們該如何面對呢?其實就像任何複雜的東西一樣,一開始都是從最簡單粗暴的想法開始的,然後隨著時間的累積,慢慢發展成複雜的樣態。而我們之所以無法理解,常常是因為我們跳過了中間的歷史脈絡,以及當初為何如此設計的背景原因,只看到眼前晦澀難懂的表象,忽略了底層邏輯。作業系統的底層邏輯其實就是:CPU 的抽象化;記憶體的抽象化;週邊的抽象化。考驗的是你的抽象化能力。 > 說到底,作業系統跟很多抽象學科一樣,想像力就是你的超能力! 就讓我們從最間單粗暴的開始吧!就像練馬拉松一樣,一開始先出門跑步開始,先跑再說,然後你會開始遇到很多問題,很多疑問,缺什麼補什麼,然後開始加入跑班尋求更專業的協助,甚至需要心理層面的支持,看著熱血沸騰的動漫「強風吹拂」,觀賞每年驚心動魄的「箱根驛傳」,有時候就是需要這種熱血,不然真的很難度過那些痛苦的時刻。學習音樂也是一樣,先做再說,隨著接觸越多,開始會有自己的理想和目標,然後一步步朝著目標前進,雖然學習過程從來就是痛苦的,但是帶來的成就感卻是無以言喻的,或許,體驗過的才會知道吧~就如同你無法向從沒看過夕陽的人,描述夕陽的紅帶來的感動。 > 千里之行始於足下。 從無到有打造作業系統,聽起來就很屌,就如同半馬破二或是破百,鐵人挑戰226,目標具有挑戰性,過程肯定是不輕鬆的,甚至有點自虐,但是一旦達成,你會贏得所有人的尊敬。挑戰之所以挑戰,就是需要獨自忍受孤獨和痛苦,就如同那些頂尖的運動選手一樣,他們肯定經歷我們常人無法想像的訓練,才能達到如此非凡的成就。 > 挑戰自我,就有機會看到人生不一樣的風景。 # 生命就該浪費在美好事物上 [《操作系统真象还原》札记](https://github.com/yifengyou/os-elephant?tab=readme-ov-file) 這是中國作者鄭綱寫的一本書,台灣翻譯是「撰寫一個完整的作業系統」,感謝有這本書的存在,讓我有機會從無到有打造作業系統,完成資工人的三大浪漫之一:自幹作業系統、自幹編譯器、自幹(CPU/圖形學/網路/資料庫...)。 > 王佑中博士曾說過「寫一個 OS 是多麼美好的事,在有限的生命中千萬不要遺漏了它。」 雖然撰寫作業系統是個艱鉅的任務,而且帶來的經濟效益幾乎沒有,但只要想到未來如果我能憑一己之力,拍攝影片講解我是如何從無到有打造作業系統的,我就興奮到睡不著覺。除了給自己留記錄以外,其他人也可以感受一下撰寫作業系統的難度,甚至如果你有失眠困擾的,我相信講解影片應該會有蠻大的幫助。 # 自我期許 單純,我會盡可能的讓作業系統保持單純,用最低的知識儲量,完成一個最單純的作業系統,它是一個入門磚,雖然距離真正商業的作業系統有很大的一段距離,未來需要自行去摸索,但希望這份資源是個起點,足以讓你勇敢的踏上偉大航道,航行在無邊無際的程式碼中。 > Life is simple. It's just not easy. ![https___dev-to-uploads.s3.amazonaws.com_uploads_articles_rejmj5v8uhfiumssc7qa](https://hackmd.io/_uploads/rycl2kudxx.jpg) 祝福各位旅途愉快 :)