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