linux - linux 内核如何防止 BIOS 系统调用?

标签 linux kernel bios

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/

相关文章:

Linux 上基于 C++ 文本的选择菜单表现异常?

有人可以解释这个 OpenCL 程序有什么问题吗?

assembly 控制台模式一字符

x86 - PCIe 设备如何在 BIOS/UEFI 中显得可启动?

C# Mono Linux 进程输出

linux - 如何使用 bash 移动到其他目录?

linux - 用于自动过程的 Cronjob

c - Linux 3.13 内核模块设置 procfile_read 文件结束条件

macos - OSCompareAndSwap (Mac OS X) 是否等同于 CMPXCHG8B?

assembly - 为什么 BIOS 中断 8(计时器)在 qemu-system-x86_64 上不起作用