【问题标题】:Does BIOS automatically load an interrupt table?BIOS 会自动加载中断表吗?
【发布时间】:2014-11-11 19:47:22
【问题描述】:

我见过像引导加载程序这样的程序会产生 int 10、int 13 等中断。显然这些条目并不总是存在,那么 BIOS 是否加载了它们?如果是这样,BIOS 加载了哪些中断?另外,是否可以覆盖这些条目?顺便说一句,这整件事都是 Intel x86。

【问题讨论】:

  • 这些天来,这类问题已经完全无关紧要了。现代 UEFI 兼容 BIOS 在保护模式下运行。
  • 谢谢,Hans,但 Linux 不会擦除 BIOS 中断并用自己的中断替换它们吗?

标签: x86 interrupt bios


【解决方案1】:

是的,BIOS 会在系统启动时加载它自己的中断表,更具体地说,仅当它处于实模式时才加载,称为 IVT(中断向量表)。它位于 RAM 内存的第一 KB。

现在您的问题是 BIOS 加载了哪些中断? 好吧,它完全取决于 BIOS 制造商,当首次引入 BIOS 中断的概念时。许多制造商决定实施 1000 次 BIOS 调用。但其中很少有成为非常标准的并包含在所有 BIOS 中。下面列出的很少

0x10 --> Video
0x13 --> Disk
0x14 --> Serial Port
0x16 --> Keyboard

参考:http://en.wikipedia.org/wiki/BIOS_interrupt_call#Interrupt_table

保护模式下的 IDT 是 IVT 的对应物,它告诉 CPU ISR 在 RAM 中的位置。 在实模式下覆盖 IVT 是可以的,直到您将其指向正确的位置,否则它将产生三重故障并重置 CPU。

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2021-05-21
    • 2015-04-07
    • 2012-01-30
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2020-05-24
    相关资源
    最近更新 更多