一、CPU和程序的关系
计算机核心是CPU,CPU的核心功能是执行指令。
不同架构的CPU通常会有不同的指令集,有底层开发经历的程序员肯定知道编译器不仅可以编译高级语言(C、C++、C#),还可以编译汇编指令,最终会链接生成被CPU执行的二进制机器码。
二、CPU和设备的关系
CPU通过执行读写设备相关地址的寄存器的指令去控制设备的状态变更新 <== 设备驱动
上图展示了CPU如何访问设备,Flash中存储着程序,RAM是个中间介质。为了提高CPU的使用效率,现在的多数处理器中都引入了内存管理单元(MMU)和直接内存读取(DMA),最后的IOMMU和MMU的功能类似。
MMU:在操作系统层实现虚拟地址和物理地址的转换、访问权限控制;
DMA:在硬件层实现一段数据的快速拷贝;
IOMMU:实现IO端口的地址映射,为虚拟化技术提供硬件支持;
三、程序和设备的关系
应用程序需要获取来自设备的数据,加以处理后输出到其他设备。
与设备相关的驱动程序和应用程序都有一个标准的操作接口和执行流程的。