【问题标题】:bios and real modebios和实模式
【发布时间】:2012-05-08 09:44:17
【问题描述】:

据说bios程序只能在实模式下才能看到,也知道bios是存储在ROM中的,但是CPU映射的通常是RAM,是不是说在实模式下,内存的一些空间是映射到ROM,所以我们可以看到bios程序。

【问题讨论】:

    标签: operating-system x86 kernel bios


    【解决方案1】:

    物理地址空间不仅仅是 RAM。它包含 ROM 和内存映射设备,例如 APIC 和视频内存。您不能在实模式之外使用 BIOS 的主要原因是它被编写为在实模式下使用。有些函数可能在 16 位保护模式下工作,更多的函数可以在虚拟 8086 模式下工作,但尝试调用错误的函数可能会导致系统崩溃。此外,中断在保护模式与实模式下的工作方式不同,因此您必须重新映射函数。

    BIOS 在实模式之外不可用的另一个原因是分页。分页是将虚拟地址映射到物理地址的过程。如果操作系统使用分页,它可以选择根本不将包含 ROM 的页面映射到虚拟内存中,因此它们实际上不存在,因此无法调用。 ROM 仍然占用一些物理地址空间,但无法通过虚拟内存获得。

    【讨论】:

    • “写出来是为了在实模式下使用”是什么意思?
    • @venus.w 在某些方面,实模式的行为与保护模式非常不同。最大的区别在于内存的访问方式以及默认地址和操作数大小。 BIOS 被编写为在实模式下运行,因此它使用这些的实模式版本。尝试以不同的模式运行相同的二进制数据可能会产生一些非常奇怪的效果。当这种情况发生时,例外是最好的结果。
    • bios rom, gdt, idt是否一般存储或映射到底部1M。
    • 它们可以在虚拟内存中的任何地方(或除了 IDT 之外的任何地方)。在物理内存中,ROM 总是在同一个地方(0xA0000-0xFFFFF)。 GDT 和 IDT 可以在任何地方,但很可能在前 1MB,因为这是实模式下唯一可寻址的空间。
    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2014-03-24
    • 2015-08-25
    • 2014-12-14
    • 2021-03-28
    • 2013-01-04
    相关资源
    最近更新 更多