<>11.1 应用与硬件
硬件的控制由Windows全权负责,实际上Windows提供了通过应用来间接控制硬件的方法,利用操作系统提供的系统调用
功能就可以实现对硬件的控制,在Windows中,系统调用称为API,各API就是应用调用的函数,这些函数的实体被存储在DLL文件中
假如要在窗口中显示字符串,就可以使用Windows API中的Text Out函数
‘设备描述的句柄’中的参数hdc,是用来指定字符串及图形等绘制对象的识别值,表示的也不是直接硬件设备
Windows实际上向CPU传递了某些指令,从而通过软件控制了硬件
<>11.2 支撑硬件输入输出的IN指令和OUT指令
Windows控制硬件时借助的是输入输出指令,其中具有代表性的两个输入输出指令就是IN和OUT,这些指令也是汇编语言的助记符
IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中,OUT指令则是把CPU寄存器中存储的数据,输出到指定端口号的端口
计算机主机中,附带了用来连接显示器及键盘等外围设备的连接器,而各连接器内部,都连接有用来交换计算机主机同外围设备之间电流特性的IC。这些IC,统称为
I/O控制器。由于电压不同,计算机主机和外围设备无法直接连接,I/O控制器用来解决此问题
显示器,键盘等外设中都有各自专用的I/O控制器,I/O控制器中有用于临时保存输入输出数据的内存,这个内存就是端口
,得名于由于端口像是计算机主机和外设之间进行货物装卸的港口
I/O控制器内部的内存,也称为寄存器,但它和CPU内部的寄存器不同,CPU内部的寄存器用来进行数据运算吹,而I/O寄存器主要用来临时存储数据的
一个I/O控制器既可以控制一个外设,也可以控制多个外设,各端口之间通过端口号进行区分,端口号也称为I/O地址
,IN指令和OUT指令在端口号指定的端口和CPU之间进行数据的输入输出,这和通过内存地址来进行的主存的读写是一样的
<>11.3 测试用的输入输出程序
在AT兼容机中,蜂鸣器的默认端口号为61H,用IN指令通过该端口输入数据,并将数据的低2位设定为ON,再通过相同的方法输出数据,这时蜂鸣器就会响起来。通过相同的方法,将数据的低2位设定为OFF并输出,蜂鸣器就停止了
现在的Windows禁止了应用程序直接控制硬件的方式
<>11.4 外围设备的中断请求
IRQ 中断请求,用来暂停当前正在运行的程序,并跳转到其它程序运行的必要机制,该机制称为中断处理
中断处理在硬件控制中担当着相当重要的角色,因为没有中断处理,就可能出现处理无法顺畅进行的情况
从中断处理开始到请求中断(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是暂停的。中断处理程序运行结束后,处理也会返回到主程序中继续
实施中断请求的是连接外围设备的I/O控制器,负责实施中断处理程序的是CPU,外围设备的中断请求会使用不同于I/O端口的其它编号,该编号称为中断编号
,操作系统及BIOS会提供响应中断编号的中断处理程序
如果有多个外围设备同时进行中断请求的话,CPU也很难办。这时需要在I/O控制器和CPU中间加入名为中断控制器
的IC来进行缓冲,中断控制器会把多个外围设备发出的中断请求有序地传递各CPU
CPU接到来自中断控制器的中断请求后,会把当前正在运行的主程序中断,并切换到中断处理程序。中断处理程序的第一步处理,就是把CPU内所有寄存器的数值保存到内存的栈中。当处理完中断请求后,会把栈中保存的数值还原到CPU寄存器中,然后继续对主程序进行处理
在中断请求完毕后,各寄存器的数值必须要还原到中断前的状态,只要寄存器的值保持不变,主程序就可以像什么事也没发生一样继续处理
<>11.5 用中断来实现实时处理
大部分的外围设备,都会频繁的发出请求,其原因就是为了实时处理从外围设备中输入的数据
<>11.6 DMA可以实现短时间内传送大量数据
DMA
:指不通过CPU的情况下,外围设备直接和主存进行数据传送,磁盘等都用到了DMA机制,通过利用DMA,大量数据就可以在短时间内转送到主存,之所以这么快,是因为CPU作为中介的时间备节省了
资源标签中有DMA设定,假如某软盘DMA设定为02,那么02这个编号称为DMA通道,CPU借助DMA通道,来识别哪一个外设使用了DMA
I/O端口号,IRQ,DMA通道可以说是识别外设的3点组合,不过IRQ和DMA通道并不是所有外设都必须具备的。假如多个外设具有相同的端口号,IRQ,DMA通道的话,计算机就无法正常工作,出现‘设备冲突’
<>11.7 文字及图片的显示机制
显示器中显示的信息一直存储在某内存中,该内存称为VRAM
,在程序中,只要往VRAM中写入数据,该数据就会在显示器中显示出来,实现该功能的程序,是由操作系统或BIOS提供,并借助中断来进行处理的
在现在的计算机中,显卡等专用硬件中一般配置了与主存相独立的VRAM和GPU (图形处理器)
,对经常需要描绘图形的Windows来说,较大的VRAM是必须的,且为了提升图形的描绘速度,有时还需要专用的图形处理。但不管怎样,内存VRAM中存储的数据就是显示器上显示的信息,这一机制是不变的
用软件来控制硬件,实际上只是利用输入输出指令同外围设备进行输入输出的处理而已。中断处理是根据需要来使用的选项功能,DMA则直接交给对应的外围设备