- 论坛徽章:
- 0
|
回复 #1 daidongly 的帖子
1,文中提到,为使PC/AT计算机向上兼容,系统会产生一个影子区域,即BIOS代码会被复制到这个区域,而另一方面原来系统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的也就是所谓的影子区域,个体访问哪个区域由北桥或南桥决定,不同的芯片组处理的不一样,如VIA,Sis,Intel,nVidia。BIOS执行过程中由BIOS决定存取什么地方。
2,文中提到,PC/AT微机的BIOS有可能大于64KB。而我们在内存中留出的影子区域(shadow)也就是ROM BIOS的映射区只有64KB。
那么我们是怎么选择复制哪些BIOS程序呢?
现在的BIOS,至少也有512KB,一般是1MB到2MB,EFI的话至少也会是2MB吧,
开机时执行ROM,然后把整个程序解压复制到RAM中,shadow一般是中断服务程序、ACPI、DMI的一些入口数据。
3,文中提到,BIOS程序会使用一种称作32位大模式的技术把数据寄存器的访问范围设置为4G(原来是64KB)。而BIOS在执行一些列硬件检测和初始化操作后,就会把于原来PC机兼容的64KB BIOS代码和数据复制到内存低端1MB末端的64KB处,然后跳转到这个地方应且让CPU进入真正的实地址模式工作。
请问上面这个过程具体是怎么实现的?什么叫做真正的实地址模式呢?
BIOS实现,需要设置CPU的GDT表,
Intel网站上可以下载到北桥如G33,南桥如ICH9的一些Spec,可以参考一下。 |
|