Operating system bios与实模式

Operating system bios与实模式,operating-system,x86,kernel,bios,Operating System,X86,Kernel,Bios,据说bios程序只能在实模式下看到,也知道bios存储在ROM中,但CPU映射的通常是RAM,这是否意味着在实模式下,内存的一些空间映射到ROM,所以我们可以看到bios程序。物理地址空间不仅仅是RAM。它包含ROM和内存映射设备,如APIC和视频内存。您不能在实模式之外使用BIOS的主要原因是,它是为在实模式下使用而编写的。某些函数可能在16位保护模式下工作,而更多函数将在虚拟8086模式下工作,但尝试调用错误的函数可能会导致系统崩溃。此外,中断在保护模式下的工作方式与实际模式下的工作方式不同

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

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


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

什么是“它被写入实际模式中使用”。@venus.w实际模式在某些方面与受保护模式的行为非常不同。最大的区别在于访问内存的方式以及默认的地址和操作数大小。BIOS被编写为在实模式下运行,因此它使用这些BIOS的实模式版本。尝试以不同的模式运行相同的二进制数据可能会产生一些非常奇怪的效果。当这种情况发生时,异常是可能的最佳结果。bios rom、gdt、idt通常存储或映射到底部1M。它们可以位于虚拟内存中的任何位置(或除了idt之外的任何地方)。在物理内存中,ROM始终位于同一位置(0xA0000-0xFFFFF)。GDT和IDT可以在任何地方,但可能在前1MB,因为这是在实模式下唯一可寻址的空间。