在《程序是怎样跑起来的》前几张中提到,用户通过操作系统来控制硬件,也就是通过系统调用也称API来调用硬件的。在第11章中讲到,用户使用Windows系统来控制硬件实质上是使用指令间接控制的,指令是由Windows系统发出的。而发出的指令例如书中所举的是IN/OUT指令,是用来控制输入和输出的。IN/OUT指令因其语法格式,需要提供基本的端口号,而端口简而言之就是储存输入输出数据的内存。端口位于I/O控制器中,而I/O控制器实质上是IC原件的集合,与CPU有着相似的原理(都是通过电流的不同来传递信号),而且计算机中存在多个I/O控制器,因此就可以连接多个外围设备,不同的I/O控制器也是不同的端口,都有独属于自己的地址也叫端口号。而IN/OUT指令就是将指定的端口号的数据输入到CPU中,再由CPU输出到端口。如此用户就间接通过操作系统发送指令来控制输入输出了。
当多个外围设备连接到计算机时,就会有多个程序运行,因此为了保证处理的顺畅进行,就有IRQ中断处理来解决。就像书中所举的例子,处理文档和电话是两个程序,当突然来电话时,电话就叫做中断设备,假使没有中断处理,那么只能等处理完文档再接电话。因此,中断处理的好处显而易见。同时为了避免多个程序同时进行,“中断控制器”就会先拦截下需要处理的程序,按照顺序向CPU传递信号。在这一过程中,CPU接收到中断请求,就会把“手头上”的数据暂时放入栈中,来处理中断请求,等处理完后再将栈中数据拿回到寄存器。除此之外,还有叫做DMA机制,这种机制不经过CPU,直接向内存输入数据。因此DMA机制会使运行更加的方便快捷。
文字和图像这些在计算机显示器中显示的信息都存储在VRAM内存之中,但是由于VRAM内存的容量问题无法更好的显示文字或图片,因此显卡作为专用硬件就被独立分出去,显卡包括GPU和VRAM,拥有自己独立的内存。以此来更好的显示文字或图像。