寫在前面的話:
做這個實驗主要是為了對操作系統有一個更具體的了解,并且在這個過程中鞏固一下自己的基礎知識。
實驗需要:
虛擬機 Ubuntu系統 材料網址為:https://pdos.csail.mit.edu/6.828/2016
虛擬機我用的是Oracle VM virtualBox
part1的主要目的是介紹x86和PC bootstrap還有就是調試
這里把材料git clone以后 進入到Lab這個目錄下需要make編譯,大概需要40分鐘左右。
成功以后 make qemu 如果出現
就說明之前的編譯成功了,就可以開始做實驗了。
物理地址:
在最開始的16位英特爾8088處理器的計算機中,只有1MB的物理空間,1MB以上的部分都沒有,計算機只能用LOW MEMORY那一塊地址(RAM)
VGA DIAPLAY內存部分給一些硬件用,像是顯示屏這類的。
16-bit devices 這塊也是給一些設備用。
bios rom這塊內存負責機器的一些基礎設備的初始化,比如顯卡啊內存的初始化等。這一塊還有接下去要講的一個最重要的一個功能就是把操作系統的代碼從外存中(像磁盤啊軟盤都叫外存)讀到內存中
The ROM BIOS
這部分講的是在計算機按下電源鍵的時候究竟發生了什么。
還沒有進行調試時,第一句的物理地址是f000:fff0,這塊物理地址的計算方法是早期計算機16位數據線和20位地址線之間的歷史原因,有需要的同學可以自行百度一下。算的方法是f0000+fff0,則物理地址應該是ffff0,也就是按下電源鍵的一瞬間,跳轉到了ffff0這個地址上。
根據前面的物理地址的分布圖可以發現,這個物理地址是在BIOS ROM區域中的。
至于為什么會直接跳轉到這個位置,這是由硬件控制的。至于為什么要跳轉到這個位置,查閱了一些資料意思就是大家的一個標準,硬件都按這個標準來做,才能適用于所有不同的計算機。開機都直接能到這個位置然后在這個位置“燒制”接下來計算機開機需要的代碼。
這行代碼跳轉到了fe05b這個位置,還在BIOS區域內。繼續執行就是一些硬件初始化。
到這里第一部分就完成了
新聞熱點
疑難解答