2020元旦獻禮——從零開始開發一個操做系統

序言

在2019年的最後一天終於完成了整個系統的開發,並給它起名曰——Inios 。就如同文章名字同樣,徹底是從內核編寫,非二次開發,從最初的「hello os」到初次有了系統的樣子。主要用C語言編寫,部分彙編語言。。整個操做系統完成後的大小爲39.6 KB之因此這麼小其實主要是語言的緣由,另外一個重要緣由是在開發中對部分系統代碼和字體庫以及媒體的壓縮。中間進行屢次迭代,最終完成整個操做系統的開發Iniosios

系統預覽

開發環境及主要工具

  • 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操做系統用的段地址」。git

多任務

經常使用的多任務,若是一個系統只能運行一個程序的話,實際上是缺乏靈魂的。github

文字顯示

在原來的基礎上,實現了中文顯示,用到HZK16.fnt編碼庫。雖然字體庫較大,可是通過壓縮後,仍是小了一半。編輯器

鼠標、鍵盤控制

一個操做系統經常使用的功能,須要說明的一點的是,在進行鼠標控制時,用如今的鼠標控制並很差用,多是更改了協議,不過值得慶幸的是,用筆記本的觸摸板進行測試,效果仍是不錯的。工具

窗口應用程序

可視化窗口程序支持。測試

媒體播放

這裏的媒體主要是指「音頻」,說是音頻,其實不如說「蜂鳴器」演奏的好,由於咱們的音樂都是用「蜂鳴器」來發聲的。字體

壓縮

採用的是做者本身作的壓縮工具,先後權衡,既能夠保證壓縮率,也可保證解壓速度——tek壓縮。編碼

圖片預覽

支持jpgbmp格式圖片預覽。操作系統

初始開發文檔

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

寫在最後

至此文章寫完,雖然每次都進行測試。但不免有所疏漏,若有有問題,歡迎指正,我將不勝感激。項目開源,若是您對此有着興趣歡迎繼續開發。若是能夠的話,能夠點一個一個star支持項目地址或點下

推薦
這將是對我最大的鼓勵,拳拳謝意,無以言表。

參考文獻

  • 《彙編語言(第三版)王爽著》
  • 《操做系統設計與實現 上冊 Andrew S.Tanenbaum 著》
  • 《30天自制操做系統 川合秀實 著》
相關文章
相關標籤/搜索