operating-system - bios和实模式

标签 operating-system x86 kernel bios

据说bios程序只能在实模式下才能看到,也知道bios是存放在ROM中的,但是CPU映射的通常是RAM,是不是说在实模式下,内存的一部分空间被映射到了ROM ,这样我们就可以看到bios程序了。

最佳答案

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

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

关于operating-system - bios和实模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354088/

相关文章:

java - 调试时如何进入Android操作系统的源代码?

memory-management - 有人可以向我解释有关分页(虚拟内存)的图表吗?

c - 为什么 memcpy 在 32 位模式下使用 gcc -march=native 在 Ryzen 上对于大缓冲区很慢?

macos - xnu内核中防止文件直接内存读取

linux - 为什么在调试 vmlinux 时 kgdb 不显示函数符号?

node.js - Meteor 项目在切换操作系统时给出 npm 模块错误

java - 如何通过java程序获取系统登录时间

assembly - popf x86 汇编

c++ - 只通过一次if语句

Android 内核模块编程