0.11之路(三):system模組

劉秋杉發表於2015-04-14

現在載入第三批程式碼——system模組,仍然使用 int 0x13 中斷。
這批程式碼要比之前多很多,所以需要一點時間,於是出現了 “Loading system …”的字樣。但是,此時作業系統的main函式還沒有執行,所以它是用匯編來實現的。
system模組被載入至記憶體的 0x10000 往後的120KB空間中。這樣整個作業系統的程式碼都載入至記憶體,最後要再次確定一下根裝置號。

什麼是根裝置?
根檔案系統裝置(Root Device):
0.11使用的是Minix作業系統的檔案系統管理方式,要求系統必須存在一個根檔案系統,其他檔案系統掛接在其上,而不是同等地位。一張格式化好的軟盤就可以成為一個根檔案系統裝置。

setup程式做的第一件事就是利用BIOS中斷服務程式從裝置上提取核心執行所需的機器系統資料。然後將這些資料放在了 0x90000 ~ 0x901FD 的位置,可見已經覆蓋了原先的bootsect程式碼,bootsect只有2B未被覆蓋,可見,作業系統對記憶體的使用是非常嚴謹的——充分利用了已經沒有用的記憶體,而且幾乎正合適,只差2位元組。

最後,總結一下整個的載入過程。

開機 —— BIOS —— bootsect(int 0x19)—— setup (int 0x13)—— system(int 0x13)

相關文章