【发布时间】:2016-08-13 07:17:34
【问题描述】:
我的问题是即使在操作系统加载后,Bios 中断是否仍位于 RAM 中?如果是,那么保留 bios 中断和中断处理程序的那部分 ram 将被保留,并且不会被其他程序覆盖。那正确吗? 提前致谢
【问题讨论】:
-
从技术上讲,BIOS 不在 RAM 中,而是在 ROM 中。不过,在启动时将其复制到 RAM 以提高性能是正常的。无论哪种方式,主板 BIOS 的典型地址范围是
0xF0000到0xFFFFF,而 VGA BIOS 的地址范围是0xC0000到0xC7FFF。在实模式下,您通常可以访问高达0xA0000(略少)的 640k RAM。另请参阅wiki.osdev.org。 -
如果您启动受保护模式的操作系统,它将根据需要重新分配内存范围,并且不使用 BIOS 中断(但可能会使用 BIOS/ROM 数据)。
-
假设我想在我的程序中使用 BIOS 中断,是从 ROM 中检索它还是从 RAM 中检索它。如果它从 RAM 中获取,则在该特定地址范围内为 BIOS 保留,并且在操作系统加载后它永远不会被覆盖。对吗?
-
传统上,如果需要,每张卡都可以有一个 rom,其中包含该卡的 bios,并且 bios 将用于这些中断。但是不久之后出现了软 bioses,因此您可以在 ram 或 rom 中使用处理程序。有关系吗?可以修改向量表,从而使处理程序的哪种存储方式无关紧要?只需要保护向量表免受不良软件的影响
-
操作系统很可能会接管 bios 调用,这是有充分理由的,让处理程序对操作系统友好,而不是操作系统周围的后门会造成损害
标签: assembly operating-system embedded bios