- 論壇徽章:
- 0
|
回復 #1 daidongly 的帖子
1,文中提到,為使PC/AT計算機向上兼容,系統(tǒng)會產生一個影子區(qū)域,即BIOS代碼會被復制到這個區(qū)域,而另一方面原來系統(tǒng)ROM中的基本輸入輸出程序BIOS一直處于CPU能尋址的內存最高端位置處。
不太明白的是,保證ROM中BIOS程序一直處于CPU能尋址的內存的最高端位置處是在什么時候完成的?
X86 CPU的地址空間在實模式下是00000H-FFFFFH,保護模式下是00000000H-FFFFFFFFH
實模式和保護模式是CPU的一個寄存器決定,查看一下Intel 64 and IA-32 Architectures Software Developer's Manual
無論是在實模式還是保護模式下,有一段地址空間即可以尋址到ROM也可以尋址以RAM,比如E0000-F0000可以訪問ROM也可以訪問RAM,訪問RAM的也就是所謂的影子區(qū)域,個體訪問哪個區(qū)域由北橋或南橋決定,不同的芯片組處理的不一樣,如VIA,Sis,Intel,nVidia。BIOS執(zhí)行過程中由BIOS決定存取什么地方。
2,文中提到,PC/AT微機的BIOS有可能大于64KB。而我們在內存中留出的影子區(qū)域(shadow)也就是ROM BIOS的映射區(qū)只有64KB。
那么我們是怎么選擇復制哪些BIOS程序呢?
現(xiàn)在的BIOS,至少也有512KB,一般是1MB到2MB,EFI的話至少也會是2MB吧,
開機時執(zhí)行ROM,然后把整個程序解壓復制到RAM中,shadow一般是中斷服務程序、ACPI、DMI的一些入口數(shù)據。
3,文中提到,BIOS程序會使用一種稱作32位大模式的技術把數(shù)據寄存器的訪問范圍設置為4G(原來是64KB)。而BIOS在執(zhí)行一些列硬件檢測和初始化操作后,就會把于原來PC機兼容的64KB BIOS代碼和數(shù)據復制到內存低端1MB末端的64KB處,然后跳轉到這個地方應且讓CPU進入真正的實地址模式工作。
請問上面這個過程具體是怎么實現(xiàn)的?什么叫做真正的實地址模式呢?
BIOS實現(xiàn),需要設置CPU的GDT表,
Intel網站上可以下載到北橋如G33,南橋如ICH9的一些Spec,可以參考一下。 |
|