绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
关于ROM BIOS的启动问题
2020-07-06 10:11:58

问题:


近看了一本书,提到ROM中的系统BIOS程序在系统启动时的处理过程,看过以后不是很明白,希望大侠能够指点一二。

1,文中提到,为使PC/AT计算机向上兼容,系统会产生一个影子区域,即BIOS代码会被复制到这个区域,而另一方面原来系统ROM中的基本输入输出程序BIOS一直处于CPU能寻址的内存高端位置处。
不太明白的是,保证ROM中BIOS程序一直处于CPU能寻址的内存的高端位置处是在什么时候完成的?

2,文中提到,PC/AT微机的BIOS有可能大于64KB。而我们在内存中留出的影子区域(shadow)也就是ROM BIOS的映射区只有64KB。
那么我们是怎么选择复制哪些BIOS程序呢?

3,文中提到,BIOS程序会使用一种称作32位大模式的技术把数据寄存器的访问范围设置为4G(原来是64KB)。而BIOS在执行一些列硬件检测和初始化操作后,就会把于原来PC机兼容的64KB BIOS代码和数据复制到内存低端1MB末端的64KB处,然后跳转到这个地方应且让CPU进入真正的实地址模式工作。
请问上面这个过程具体是怎么实现的?什么叫做真正的实地址模式呢?


解答:

1. BIOS代码的copy很常见。即在启动过程中,BIOS的代码会被拷贝到一个指定的虚拟地址,其主要用途多用于OS在运行过程中实时的调用BIOS提供的接口。是否拷贝到虚拟地址的高端部分应该是操作系统决定的,例如windows就是如此,估计LZ看的书是以windows为例。 

2,Cpu执行这条指令后,将导致CS隐藏寄存器中基地址从0xFFFF0000变成000F0000。所以物理地址将落在0x000FE05B,也就是在1M以下那个Bios。

3.这里说的是IA32架构的big real mode。有人认为这是cpu的一个bug。其过程是进入保护模式后,将各个段寄存器设置恰当后再退回到实模式,就可以在实模式下访问和保护模式下一样的4G地址空间。LZ可以google其详细流程。 


文章来源CU社区:关于ROM BIOS的启动问题

分享好友

分享这个小栈给你的朋友们,一起进步吧。

内核源码
创建时间:2020-05-18 13:36:55
内核源码精华帖内容汇总
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~