1

最近,我正在尝试编写一个简单的操作系统。这是一个大工程。
当我编写代码时,我想知道现代操作系统如何在保护模式下联系硬件
在实模式下,我们可以调用 bios 中断来完成这项工作。
但是我想知道如何在保护模式下实现这个目标。(它是使用 in 和 out 指令吗??)
我跟踪了一些 linux 源代码,但仍然找不到合适的代码。

我知道这对很多人来说是一个基本问题,请帮助我,tks。
并为我糟糕的英语感到抱歉。

4

1 回答 1

1

在保护模式下,CPU 可以在内核模式或用户模式下运行。在内核模式下,您始终可以访问硬件。调用 BIOS 中断是一种旧方法,但现代操作系统通常有自己的硬件设备驱动程序,并且不会太频繁地调用 BIOS。如果您知道硬件数据表,则可以使用inout直接访问硬件。此外,对于现代 PCI 和 PCI Express 设备,它们支持内存映射 IO(X86 CPU 也支持),这意味着您可以使用它mov来访问硬件。

对于 x86,CPU 还允许用户级程序使用 in 和 out 指令访问硬件。您可以在 Intel CPU 手册中找到它。只需设置 DPL、CPL?(我忘记了正确的名字)。

我想您最好阅读一些有关设备驱动程序的书,例如 Linux Device Drivers, 3rd edition。http://lwn.net/Kernel/LDD3/

于 2011-04-05T16:48:47.923 回答