程序是怎样跑起来的(11)

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

支撑硬件输入输出的IN指令和PUT指令
Windows控制硬件时借助的是输入输出指令。其中具有代表性的两个输入输出指令就是IN和OUT。这些指令也是汇编语言的助记符。
IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中。OUT指令则是把CPU寄存器中存储的数据,输出到指定端口号的端口。

在计算机主机充附带了用来连接显示器及键盘等外围设备的连接器。而各连接器的内部,都有用来交换计算机主机同外部设备之间电流特性的IC。这些IC,统称为I/O控制器。I/O控制器中有用于临时保存输入输出数据的内存。这个内存就是端口。各个端口之间通过端口号进行区分。端口号也称为I/O地址。通过Windows的控制面板,可以查看外围设备所连接的I/O控制器的端口号。
I/O控制器内部的内存,也称为寄存器。它和CPU内部的寄存器在功能上是不同的。CPU内部的寄存器是用来进行数据运算处理的,而I/O寄存器则是主要用来临时存储数据的。IN指令和OUT指令在端口号指定的端口和CPU之间进行数据的输入输出。这与通过内存地址来进行主内存的读写是一样的道理。

IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。从中断处理开始到请求中断的程序运行结束之前,被中断的程序的处理是停止的。实施中断请求的是连接外围设备的I/O控制器,负责实施中断处理程序的是CPU。为了进行区分外围设备的中断请求会使用不同于I/O端口的其他编号,该编号称为中断编号。
CPU接收到来着中断控制器的中断请求后,会把当前正在运行的主程序中断,并切换到中断处理程序。中断处理程序的第一步处理就是把CPU所有的寄存器的数值保存到内存的栈中。中断处理程序处理完外围设备的输入输出后,会把栈中保存的数值还原到CPU寄存器中,然后再继续进行对主程序的处理。

按顺序调查外围多个设备的状态称为轮询。对几乎不产生中断的系统来说轮询是比较合适的处理。而对计算机来说就不合适了。

DMA是指在不通过CPU的情况下,外围设备直接和主内存进行数据传送。磁盘等都用到了这个DMA机制。通过利用DMA,大量数据就可以在短时间内传送到主内存。之所以这么快速,是因为CPU作为中介的时间被节省了。

posted @ 2024-02-28 16:53  ༺ཌ༈枫祁༈ད༻  阅读(5)  评论(0编辑  收藏  举报