作業系統中的根檔案系統裝置
阿新 • • 發佈:2018-12-10
在作業系統中剛進行加電啟動電腦的時候是不存在對檔案的處理的。所以對於系統模組載入記憶體期間,在螢幕上出現的“loading”並不是用printf這種檔案操作實現的,而只是通過最原始的彙編進行的。
作業系統中必須存在一個根檔案系統,其他檔案系統掛載其上。linux0.11沒有提供裝置上建立檔案系統的工具,故必須在一個正在執行的系統中利用工具例如(FDISK)做一個檔案系統並載入在本機中。因此在作業系統啟動的時候需要兩個部分的資料分別是系統核心映象和根檔案系統。
在bootsect.s檔案中根檔案系統載入部分的彙編程式碼如下圖所示:
! After that we check which root-device to use. If the device is ! defined (!= 0), nothing is done and the given device is used. ! Otherwise, either /dev/PS0 (2,28) or /dev/at0 (2,8), depending ! on the number of sectors that the BIOS reports currently. seg cs mov ax,root_dev cmp ax,#0 jne root_defined !如果ax通過比較不等於0,則什麼事情都不做,否則進行下面的操作 seg cs mov bx,sectors !bx表示的是扇區數 mov ax,#0x0208 ! 掛載/dev/ps0 - 1.2Mb (/dev/at0 (2,8)) cmp bx,#15 !比較扇區數是否和15相等 je root_defined mov ax,#0x021c ! 掛載/dev/PS0 - 1.44Mb (/dev/PS0 (2,28)) cmp bx,#18 je root_defined undef_root: jmp undef_root root_defined: seg cs mov root_dev,ax
因為剛接觸深入接觸作業系統底層,如果有任何理解上的錯誤,歡迎評論指正,共同討論學習。