武漢大學操作系統設計課程的大作業:復現一個操作系統內核
參考: 30天自製操作系統
該實驗所有的過程以及中途遇到的問題,原理和解決思路均記錄在這裡,每一天的任務和代碼內容更新在對應的文件夾下.對應目錄下僅有當天的完成的最終代碼文件
每一個文件夾內容都可以直接運行使用,無需其他格外安裝, 運行在Windows 操作系統下
運行第{DAY}天的程序
make -C day{DAY}例如運行第10天
make -C day10清除生成的文件
make -C day{DAY} cleanQEMU在我的電腦中會存在部分操作系統狀態模擬出現錯誤的情況, day10 day11會出現異常中斷退出.
day7鍵盤輸入卡住, day14及以後對於字母的輸入重複且無法中斷是由於中文輸入法的原因,在輸入的時候切換為英文輸入法即可解決但是在我室友和同學的電腦上並未出現此情況.在我的VMWARE虛擬機的WIN10操作系統中也未出現,故無法復現此錯誤. 如果遇到這種錯誤可以編譯出img軟盤映像文件之後導入VMWARE虛擬機.VMWARE相關使用方法見day1的博客
鍵盤輸入時請切換為英文輸入法,否則會出現異常情況
day1
基本的啟動區
day10
輸入輸出緩衝區,GDT IDT,中斷處理,內存管理,圖形的繪製,鼠標的輸入,疊加處理
day20
窗口優化,定時器,中斷處理優化,多任務的進程調度,命令行窗口,鍵盤輸入的優化,執行應用程序,API
支持dir mem type cls hello 指令
day30
基本使用
命令行相關指令
dir : 查看目錄文件
mem : 查看內存及剩餘
cls : 清除控制台內容
ncst : 使用ncst + 以下指令可以運行程序且並不影響當前控制台的輸入
star1 : 繪製一點(星星)
stars : 繪製一群點
walk : 移動光標(上下左右)
color, color2 : 兩個顏色盤
notrec : 一個非矩形窗口
bball : 一個線條繪製的圓
invader : 一個外星人打飛機的應用程序
langmode + {MODE} : 語言模式切換,langmode 0為英文模式,1為日文模式,2為日文EUC模式
type + {FILENAME} : 查看文件內容(注意langmode,langmode不正確會出現亂碼,一些奇怪的格式的圖片也不要試圖去查看)
tview + {FILENAME} : 新建一個文本框查看文件內容
mmlplay + {FILENAME} : 打開音樂播放器
mmlplay daigo.mmlgview + {FILENAME} : 預覽圖片
gview night.bmp
gview fujisan.jpgcalc + {FORMAT} : 計算器
我自己的鍵盤的輸入似乎有些問題,有點奇怪
下圖為部分功能演示
課程實驗相關資料