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壓縮。

圖片預覽

支持jpgbmp格式圖片預覽。

初始開發文檔

起初是想這每天都會記錄,記錄包括但不限於開發中的bug及容易忽略的問題和技巧。但是由於時間原因只是寫了6天的文檔,后面的會后續補充。仔細想想這6天其實也足夠了,其中包括開發中所需要的初始流程及工具的介紹和使用。如果您也想試着開發玩玩,不妨看下這個簡單的文檔。文檔鏈接:說明文檔.pdf

寫在最后

至此文章寫完,雖然每次都進行測試。但難免有所疏漏,如有有問題,歡迎指正,我將不勝感激。項目開源,如果您對此有着興趣歡迎繼續開發。如果可以的話,可以點一個一個star支持項目地址或點下喜歡♥ 這將是對我最大的鼓勵,拳拳謝意,無以言表。

參考文獻

  • 《匯編語言(第三版)王爽著》
  • 《操作系統設計與實現 上冊 Andrew S.Tanenbaum 著》
  • 《30天自制操作系統 川合秀實 著》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM