操作系统如何与声卡/视频卡等外围设备进行交互

时间:2012-05-24 02:04:43

标签: operating-system hardware processor instruction-set bus

据我所知,任何程序都会被编译为一系列程序集指令,用于运行它的体系结构。我无法理解的是操作系统如何与外围设备(如视频卡)进行交互。驱动程序本身不是CPU的一系列汇编指令吗?

我唯一能想到的是它使用内存区域然后由外围设备监控,或者它使用BUS来传达操作并接收结果。这个过程有一个简单的解释。

很抱歉,如果这个问题太笼统,那就是困扰我的事情。

2 个答案:

答案 0 :(得分:3)

有简单的解释,并且有真实的解释 - 选择一个!

我将尝试一个简单的方法:沿着汇编指令,有一些专门用于与外围设备通信。硬件不是通过例如它来解释它们。在寄存器中添加值或向RAM写入内容,但是将一些数据从RAM中的寄存器或区域移动到外围(或反过来)。

在操作系统内部,例如声音驱动程序负责将一些声音数据与RAM中的一些命令数据一起组装,然后OS调用总线驱动程序发出这些特殊指令以将命令和数据移动到声卡。声卡硬件将(希望)理解命令并将数据解释为它应播放的声音。

答案 1 :(得分:3)

你的猜测基本上是正确的。根据CPU架构,外设可能会响应“内存映射I / O”(它们监视对特定内存地址的读写)或其他特定I / O指令(例如x86 IN和OUT指令)

设备驱动程序是特定于操作系统的软件,并提供操作系统和硬件之间的接口。

特定的物理设备要么具有知道如何响应来自其监视的CPU的任何信号的硬件,要么具有自己的CPU和软件,通常称为 firmware 。设备的固件并非特定于任何操作系统,并且即使在断电后也通常存储在设备的永久存储器中。但是,某些外围设备可能具有在操作系统启动时由设备驱动程序加载的固件。