閑來無事,想把之前學習操作系統的一些知識整理下,看了幾十本操作系統的書好像都忘得差不多了,最近打算自己動手來實現一個簡易操作系統,主要還是為了知行合一。
我的學習之旅
為了能夠轉崗 WXG 所以當時在 PCG 的時候大概花了一年的時間,當時除了工作主要就是看操作系統、JAVA 虛擬機、Android 虛擬機相關的書籍。有很多記不得了,我大概推薦一些(有印象的),排序不分先后:
《編碼:隱匿在計算機軟硬件背后的語言》
《穿越計算機的迷霧(第二版)》
《匯編語言》
《x86匯編語言:從實模式到保護模式(第二版)》
《計算機組成原理》
《Unix環境高級編程》
《操作系統導論》
《深入理解計算機系統》
《TCP/IP詳解》
《程序員的自我修養:鏈接、裝載與庫》
《Linux是怎樣工作的》
《操作系統真象還原》
《30天自制操作系統》
《一個64位操作系統的設計與實現》
《Linux內核完全注釋》
《Linux內核設計藝術》
《Linux內核深度解析》
當時應該還看了跟 CPU 電路相關的一些書籍,已經找不到了。初中那會讀書不努力,普高考不上只能去讀職業高中,我高中就是學電子電工的,所以學習硬件知識也不費什么勁。我 bilibili 也找了一些視頻推薦給大家:
一個8位二進制CPU的設計和實現
x86 匯編語言
操作系統實現
后續規劃
今年的計劃,上半年把操作系統的代碼和文章一點點補完,下半年把 Java 虛擬機的代碼和文章一點點補完。我目前只是整理和學習,因此代碼我只能確保能跑起來沒啥問題,肯定會有一些 bug ,性能、算法、深度和廣度等各個方面肯定比不上 linux。
除了工作那我就只能早上、中午、晚上、周六日來寫代碼和文章,不知道我頂不頂得住,也不知道有沒有那么多時間,先立一個 flag,先把我的 github 的倉庫先貼出來: miniOS
去年我計劃是錄制分享 C++ 和 OC 的視頻,今年先寫一年的代碼先,明年我還想周末直播一點點再敲一遍, 3 年的時間應該能知行合一。bilibili 我的 C++ 視頻先爛尾了。
一些心得
操作系統涉及的內容太多了,涉及硬件、編譯器、編程語言、數據結構和算法,因此學習操作系統我們還是要有一個學習目標,為什么學?想學習哪些?想學到什么程度?像我是做客戶端開發的,我的側重點就不太一樣,有些同學可能是做嵌入式開發的可能又不一樣。
做一天和尚輕松撞一天鐘,我學習操作系統主要還是為了讓自己工作沒有壓力,雖然當時主要是為了活水 WXG。能不能快速寫出技術文檔,能不能快速把需求做完,寫的代碼有沒有問題,運行速度到底快不快,出問題能不能立即反應過來,我們其實還是可以做一些思考。我做過 Android 開發做過 iOS 開發中間還做過 Win 開發,寫過 Java 寫過 C/C++ 寫過 OC ,發現只要我們的代碼是運行在操作系統上,那么本質上不會有任何區別。
這是我的來時路我記錄下來,很多同學可能覺得匯編很難、C/C++ 很難,說實話我以前一直這么認為,但當我們靜下心來去學習了解,發現其實并沒什么技術含量,只能說以前我們不了解而已,只能說我沒花時間而已。我們并沒有任何原創的東西,所以并不會有任何難度,都是站在前輩的基礎上看書問 AI 看 Linux 源碼,其實最難的還是創新。