1. 程式人生 > >我是如何學習寫一個作業系統(一):開篇

我是如何學習寫一個作業系統(一):開篇

前言

有人說程式設計師的三大浪漫分別是編譯原理、作業系統和計算機網路

在之前完成了一兩個小軟體和網站後遇見了編譯原理,也不知道為什麼就傻傻的學,還寫了一個從零寫編譯器的系列學習筆記,不過都是小打小鬧,只能算作摸到了一點點入門的門檻。再後來想深入學習的時候,因為暑假在家很多書買來的話再帶去學校很麻煩,就索性找了一本作業系統的書,也不懂原理就擼了一個玩具型的作業系統

幾句感概

在身邊同學都在埋頭在各種Web方向,做出各種酷炫的東西,也深深覺得自己Web方向的技術棧太淺淺,之前利用React全家桶+Electron和node做後臺的一個聊天軟體,以現在來看略顯幼稚,另外的Java雖然是我的第二門語言可是到現在也不算上得檯面。下學期就大三了,越臨近就業就越焦慮,下學期可能會更側重應用方向吧。

寫這個系列的原因

因為跟著書上擼的作業系統屬於小的玩具型的作業系統,所以很多涉及到作業系統比較深入的原理都沒有進行學習,所以這個系列想作為自己學習作業系統的記錄,也就是對原理性的學習和結合實現一個玩具型的作業系統

FragileOS

FragileOS就是之前實現的一個玩具型作業系統,之前叫這個名字是因為它真的很Fragile,程式碼結構不好,功能不多,原型基本是來自別人的(後面會提到)

程式碼在github上已經分享出來了:FragileOS

主要介面

正式開始

這個學習筆記可能用到的有四本書:

  • 《x86組合語言:從真實模式到保護模式》
  • 《作業系統:精髓與設計原理》
  • 《OrangeS:一個作業系統的實現》
  • 《30天自制作業系統》

第一本和第三本第四本在之前實現那個玩具型作業系統起了很大的作用,但是第三本只看了一點,第二本則是根據別人的推薦來的。所以戰線很長很長,希望能堅持下來

環境準備

  • VirtualBox 6.0

    一個開源的虛擬機器,開發的作業系統就執行在這之上
  • GCC 8.1.0
  • NASM 2.07

    彙編器
  • objconv

    反彙編器

希望能夠堅持下去吧