BIOS 调用在 Linux 操作系统中不可用。我想知道内核如何阻止执行此类包含对 BIOS 子程序的调用的指令?
最佳答案
BIOS主要在 16 位模式下可用,而不是在 x86 的 32 或 64 位模式下可用Linux 在其上运行。
Linux 进程正在 user mode 中运行, 使用 virtual memory , 它有自己的虚拟 address space .
一些机器指令(特别是用于进入 BIOS 的 INT
)是有特权的,所以不能在用户模式下运行。如果您尝试在用户模式下运行它们,处理器会产生机器异常,内核会通过发送一些信号来处理它。 (一些 INT
也用于系统调用,但首选 SYSENTER
指令)。
应用程序使用 syscalls与内核交互(可能通过 VDSO )。
阅读assembly howto .也可以在 kernelnewbies.org 上询问
Linux 内核是 open source ,您可以从kernel.org下载它并研究它的源代码。
附言。 2020年后注意UEFI .这是一件复杂的事情。
关于linux - linux 内核如何防止 BIOS 系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535056/