程序是怎样跑起来的 -- 硬件控制方法

IRQ指的是用来执行硬件中断请求的编号

DMA指的是,不经过CPU中介处理,外围设备直接同计算机的主内存进行数据通信。像读盘这样用来处理大量数据的外围设备都具DMA功能。

中断处理是根据需要来使用的选项功能,DMA则直接交给对应的外围设备即可

应用和硬件无关?

windows提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在windows中,系统调用称为API。各API是应用调用的函数。这些函数的实现被存储在DLL文件中。

程序是怎样跑起来的 -- 硬件控制方法

支撑硬件输入输出的IN指令和OUT指令

window控制硬件时借助的是输入输出指令。其中具有代表性的是两个输入输出指令就是IN和OUT。IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中。OUT指令则把CPU寄存器中存储的数据,输出到指定端口号的端口。

计算机主机中,附带了用来连接显示器及键盘等外围设备的连接器。而各连接器的内部,都连接有用来交换计算机主机同外围设备之间电流特性的IC。这些IC统称为I/O控制器。主要是为了解决主机与外围设备之间,电压不同,数字信号及模拟信号的电流特性不同的问题。

I/O控制器有用于临时保存输入输出数据的内存。这个内存就是

端口,也称为寄存器,和CPU内部的寄存器在功能上是不同的。后者是用于数据运处理,后者是保存临时存储。

一个I/O控制器既可以控制一个外围设备,也可以控制多个外围设备。各端口之间通过端口号进行区分。端口号也称为I/O地址。

程序是怎样跑起来的 -- 硬件控制方法

外围设备的中断请求

IRQ是用来暂停当前正进行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理

实施中断请求的是连接外围设备的I/O控制器,负责实施中断请求程序的是CPU。为了进行区分,外围设备的中断请求会使用不同于I/O端口的其他编号,该编号称为中断编号

中断处理程序的第一步处理,就是把CPU所有寄存器的数据保存到内存的栈中。在中断处理程序中完成外围设备的输入输出后,把栈中保存的数值还原到CPU寄存器中,然后再继续进行对主程序的处理。

用中断来实现实时处理

大部分的外围设备,都会频繁地发生中断请求。其原因是为了实时处理外围设备输入的数据。虽然不利用中断也可以从外围设备输入数据。但那种情况下,主程序就必须要持续不断地检测外围设备是否有数据输入。

程序是怎样跑起来的 -- 硬件控制方法

DMA可以实现短时间内传送大量数据

DMA是指在不通过CPU的情况下,外围设备直接和主内存进行数据传送。

资源是计算机具备的有限资源的统称。端口号、IRQ、DMA等可以指定的数值范围都是有限的,因此他们也是资源的一种。

用软件来控制硬件听起来好像很难,但实际上只是利用输入输出指令同外围设备进行输入输出而已。中断处理是根据需要来使用的选项功能,DMA则直接交给对应的外围设备即可。

计算机能处理的事情,始终只是对输入的数据进行运算,并把结果输出。不管程序内容是什么,最终都是数据的输入输出和运算。


分享到:


相關文章: