最近,我正在尝试编写一个简单的操作系统。这是一个很大的项目 当我编写代码时,我想知道现代操作系统如何在保护模式下联系硬件 在实模式中,我们可以调用bios中断来完成这项工作 但我想知道如何在保护模式下实现这一目标。(是否使用进出指令??) 我追溯了一些linux源代码,但仍然找不到合适的代码。
我知道这对许多人来说是一个基本问题,请帮助我,tks 抱歉我的英语不好
答案 0 :(得分:1)
在保护模式下,CPU可以在内核模式或用户模式下运行。在内核模式下,您始终可以访问硬件。调用BIOS中断是一种旧方法,但现代操作系统通常有自己的硬件设备驱动程序,并且不会经常调用BIOS。如果您了解硬件数据表,则可以使用in
和out
直接访问硬件。此外,对于现代PCI和PCI Express设备,它们支持内存映射IO(X86 CPU也支持此功能),这意味着您可以使用mov
来访问硬件。
对于x86,CPU还允许用户级程序使用输入和输出指令访问硬件。您可以在Intel CPU手册中找到它。只需设置DPL,CPL? (我忘了正确的名字)。
我想你最好读一些关于设备驱动程序的书,比如Linux设备驱动程序,第3版。 http://lwn.net/Kernel/LDD3/