应用与硬件之间的控制
利用操作系统提供的系统调用功能,可以实现对硬件的控制。
在Windows中,系统调用成为API。
在计算机主机中附带了用来连接显示器及键盘等外围设备的连接器。
各连接器的内部都连接有用来交换计算机主机同外围设备之间电流特性的ic,这些ic统称为I/O控制器。
I/O控制器中有用于临时保存输入输出数据的内存,这个内存就是端口。
I/O控制器内部的内存也称为寄存器,但这和CPU内部的寄存器在功能上是不同的
CPU内部的寄存器是用来进行数据运算处理的,而I/O寄存器则主要是用来临时存储数据的。
控制面板->设备管理器->键盘 :就可查看到对应的端口号。
外围设备的中断请求(IRQ)
IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制,该机制成为中断处理。
就比如,我们正在观看一个视频时有个电话打了进来,此时我们会把视频暂停下来,接完电话,在继续播放视频。在这个过程中,接电话就相当为中断处理程序,观看视频就是主程序。
如果没有中断处理,就需要把视频看完后,才接听电话,显然不太合适。中断处理程序运行结束后,处理也会返回到主程序中继续。
实时中断请求的是链接外围设备的I/O控制器,负责实施中断处理程序的是CPU。,每一个中断程序都会有一个中断编号,当有多个中断程序时,I/O控制器和CPU之间的中断控制器 IC 会进行缓冲。中端处理器会把多个外围设备发出的中断请求有序地传递给CPU。
CPU接收到来自中断控制器的中断请求后,会把当前正在运行的主程序忠犬,并切换到中断处理程序。
中断处理程序的第一步就是把CPU所有的寄存器的数值保存到内存的栈中,把栈中保存的数值还原到CPU寄存器中,然后在继续进行对主程序的处理。
中断可以实现实时处理
按照顺序调查多个外围设备的状态成为轮询。对几乎不产生中断的系统是比较合适的。但对于计算机是不合适的。比如当主程序正在调查是否有鼠标输入,这是如果发生了键盘输入的话,就会出现冲突,导致键盘输入的无法实时地显示在显示器上,而这种情况通过使用中断,反而可以实现实时显示。
DMA可以实现短时间内传送大量数据
DMA是指在不通过CPU的情况下,外围设备直接和主内存进行数据传送。
通过利用DMA,大量的数据就可以在短时间内传送到主内存。因为CPU作为中介的时间被节省了。
磁盘等都用到了DMA机制。
I/O端口号、IRQ、DMA通道可以说是识别外围设备的三点组合。
IRQ、DMA并不是必备的。