1、在汇编语言中是用IN指令和OUT指令同外围设备进行输入输出操作的。 2、用来识别外围设备的编号称为I/O地址或I/O端口号。
在C语言等高级编程语言开发的Windows应用中,大家几乎接触不到能直接控制硬件的指令,这是因为硬件的控制是Windows利用其操作系统提供的API实现对硬件的控制的,也借助了输入输出指令。
其中具有代表性的两个输入输出的指令就是IN和OUT。IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中,OUT指令是把寄存器中存储的数据输出到指定端口号的端口。那么端口号和端口又是什么呢?端口就是Input/Output控制气质中有用于临时保存书输入输出数据的内存。此外,Input/Output控制器内部的内存也称为寄存器,它与CPU内部的寄存器在功能上是不同的,它的功能是用来临时存储数据的,CPU内部的寄存器是用来进行数据处理的。端口号就是I/O地址。
IRQ(中断请求):用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。 它是被连接外围设备的I/O控制器实施的,而实施中断处理的程序是CPU。
因为同时有多个外围设备进行中断请求的话,CPU实时中断处理会较为困难,因此我们就在I/O控制器和CPU之间加入名为中断控制器的IC进行缓冲。不过还需要提及的一点是在中断请求完毕之后各寄存器的数值必须要还原到中断前的状态,这样主程序才能够正常运行。
轮询:按照顺序调查多个外围设备的状态,比较适用于几乎不产生中断的系统,计算机不太合适。中断处理相对于论循更适合计算机。
DMA:是指在不通过CPU的情况下,外围设备直接和主内存进行数据传送,这样数据就可以在短时间内转送到主内存。
我们需要知道I/O端口号、IRQ、DMA通道三者可以说是识别外围设备的三点组合,但有多个外围设备时,不能设定成同样的端口号、IRQ、DMA通道,因为会出现"设备冲突"。
补充:1、VRAM(Video RAM):是显示器中显示的信息一直存储在的内存,他是属内存的一部分,但内存空间较小。2、显卡等专用硬件中一般都配置有与主内存相独立的VRAM和GPU (图形处理器或图形芯片),因为对经常需要描绘图形的windows来说,数百兆的VRAM是必须的,并且为了提升图形的描绘速度,还需要专用的图形处理器。