2012年7月31日 星期二

簡單 os

簡單 os (simple os)  是我目前用來學習 os 所開發的程式。

簡單 os 一點都不簡單, 什麼功能完全都要自己實作, 鍵盤輸入、螢幕輸出、中斷、行程切換、timer、system call。

簡單 os 很簡單, 要實作的部份都是挑最簡單的方法來做: 檔案系統用 romfs, 完成了一個 bug 超多限制超多的檔案系統 (也很容易就爛了), 目前甚至還沒有記憶體管理, 要那塊記憶體直接要就好了。螢幕捲動也很簡單, 沒做任何檢查, 理論上捲動過數十頁後, 應該會爛掉。一些理所當然的功能有些並不容易實作, 就先這樣了。

這是我寫過算蠻多的程式碼, 但在畫面上卻顯示出最少功能的作品, 也是我寫過最小的程式。

-rwxr-xr-x 1 descent descent 102983 2012-07-31 11:45 p_kernel.elf

102 KB 裡頭還有 40960 是 stack 空間, 完全不是程式碼。一般寫程式是希望程式愈小愈好, 我則希望 p_kernel.elf 越大越好。

照著 Orange's 一個作業系統的實現 的程式碼到了鍵盤螢幕的部份, 突然有了枯燥的感覺, 想要來點有趣的東西。

胡亂的把之前的努力整合, 在 vga 繪圖模式下秀出了中文。嗯!看起來比較像有點成果了 (實際上以 os 來說還差得遠)。

開機 ~!@#$ 載入 p_kernel.elf 後, 這時候已經進入了保護模式, 可以盡情的打字, 若按下 g 就會進入繪圖模式, 秀個字串, 按下 l 會得到 romfs 的檔案列表, 不過根據我的測試, 有可能會爛掉。對了,切到 vga 繪圖模式後, 就切不回文字模式了 XD。



簡單 os 是個大雜燴, 其中有參考 30 天打造 OS、一步步寫嵌入式操作系統、還有網路上其他資料, 不過最主要還是 Orange's 一個作業系統的實現 的程式碼, 然後再加上一些我自己亂寫的 code, 就變成簡單 os 了。

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。