2020元旦獻禮——從零開始開發一個作業系統
序言
在2019年的最後一天終於完成了整個系統的開發,並給它起名曰——Inios 。就如同文章名字一樣,完全是從核心編寫,非二次開發,從最初的“hello os”到初次有了系統的樣子。主要用C語言編寫,部分組合語言。。整個作業系統完成後的大小為39.6 KB
之所以這麼小其實主要是語言的原因,另一個重要原因是在開發中對部分系統程式碼和字型庫以及媒體的壓縮。中間進行多次迭代,最終完成整個作業系統的開發Inios。
系統預覽
開發環境及主要工具
- win 8.1 x64 :用來開發Inios的“載體”
- qemu 虛擬機器:測試Inios
- wxmedit:16進位制編輯器
- nsak:彙編器
- Notepad++:程式碼編輯器
- Git:除了提交程式碼外,還用來生成特殊檔案
系統功能
命令列終端
mem
: 顯示記憶體的使用情況cls
: 清空控制檯內容dir
: 列出目錄type
:檢視檔案內容hlt
:執行.hrb可執行程式shift+F1
:強制關閉程式enter
:關閉當前應用程式視窗F11
:將最下面的視窗置頂Tab
:切換視窗滑鼠點選
:切換視窗/移動視窗shift+F2
:開啟終端/開啟另一個終端視窗(支援多個)exit
:關閉當前終端視窗ncst xx
:一個終端可以執行多個程式
保護系統
主要做了“記憶體訪問許可權 ”、“異常”和“應用程式存入DS作業系統用的段地址”。
多工
常用的多工,如果一個系統只能執行一個程式的話,其實是缺少靈魂的。
文字顯示
在原來的基礎上,實現了中文顯示,用到HZK16.fnt編碼庫。雖然字型庫較大,但是經過壓縮後,還是小了一半。
滑鼠、鍵盤控制
一個作業系統常用的功能,需要說明的一點的是,在進行滑鼠控制時,用現在的滑鼠控制並不好用,可能是更改了協議,不過值得慶幸的是,用筆記本的觸控板進行測試,效果還是不錯的。
視窗應用程式
視覺化視窗程式支援。
媒體播放
這裡的媒體主要是指“音訊”,說是音訊,其實不如說“蜂鳴器”演奏的好,因為我們的音樂都是用“蜂鳴器”來發聲的。
壓縮
採用的是作者自己做的壓縮工具,前後權衡,既可以保證壓縮率,也可保證解壓速度——tek
壓縮。
圖片預覽
支援jpg
和bmp
初始開發文件
起初是想這每天都會記錄,記錄包括但不限於開發中的bug及容易忽略的問題和技巧。但是由於時間原因只是寫了5天的文件,後面的會後續補充。仔細想想這5天其實也足夠了,其中包括開發中所需要的初始流程及工具的介紹和使用。如果您也想試著開發玩玩,不妨看下這個簡單的文件。文件連結:說明文件.pdf
寫在最後
至此文章寫完,雖然每次都進行測試。但難免有所疏漏,如有有問題,歡迎指正,我將不勝感激。專案開源,如果您對此有著興趣歡迎繼續開發。如果可以的話,可以點一個一個star
支援專案地址或點下推薦。這將是對我最大的鼓勵,拳拳謝意,無以言表。
參考文獻
- 《組合語言(第三版)王爽著》
- 《作業系統設計與實現 上冊 Andrew S.Tanenbaum 著》
- 《30天自制作業系統 川合秀實 著》