操作系统如何与其他硬件组件通信?

7 windows operating-systems interrupts

在 CPU(主要是操作系统)上运行的程序如何访问其他 PC 硬件?比如显卡,硬盘等等?

从我读到的,在 DOS 中,这是使用 BIOS 调用完成的,特别是 INT 指令。但是,INT 指令应该只跳转到 RAM 中的特定空间。那么当CPU只能访问RAM并接收中断时,存储在RAM中的某些程序如何访问其他计算机硬件?

Windows 是否也使用 INT 指令,或者是否有与硬件通信的新方法?

mct*_*ylr 9

[H]在 CPU(主要是操作系统)上运行的程序如何访问其他 PC 硬件?比如显卡,硬盘等等?

这个问题的完整答案很复杂,一般来说很难回答。因此,我将尝试从总体上回答它,并希望为您提供一些指示以查找更多信息以供进一步学习。我希望这是有用的。

对于 MS Windows 95 和更新版本或 x86 (IA-32) 处理器上的 Linux 使用的 32/64 位保护模式,软件中断(例如 x86 的 INT 操作码)转到适当的中断向量表(或调度表),它可以指示 CPU 在操作系统中的哪个位置,进程应该跳转到中断处理程序(或中断服务程序,ISR)来处理请求。

在 x86实模式中,如 MS-DOS,这些可能由BIOS处理,该BIOS为特定系统/芯片组/主板提供低级特定实现细节。

[H]当CPU只能访问RAM并接收中断时,存储在RAM中的某些程序如何访问其他计算机硬件?

所以你不想要通常的手波浪答案?我会尝试回答这个问题,但我不是计算机工程师或计算机体系结构专家。

有多种机制,包括

(Src: CS 473 - IO , 新墨西哥州立大学, pfeiffer, 2006)

最简单的是内存映射 I/O,其中内存地址可能映射到硬件设备(例如串行UART)和 CPU的寄存器,并写入和/或读取某些内存地址以直接访问硬件。这既快速又简单,但减少了可用作 RAM 的内存地址范围。

其他是更先进的技术,旨在允许现代 CPU 和更先进的操作系统以受控方式访问硬件。

在操作系统本身中,这些通常称为设备驱动程序,因为它们包含有关它们支持的硬件设备的特定详细信息。

而且,windows 是否也使用 int 指令,或者是否有任何新的方式与硬件通信?

是的,是的,但我想我已经解释过了。


Wil*_*ilf 0

这就是硬件驱动程序的用途。此外,Windows 现在使用 HAL(硬件抽象层)代替 DOS。