指令集架构
是cpu和软件之间的桥梁
01 指令集:用于数据搬移、计算、内存访问、过程调用等。
02 特权级 AArch64为例
- EL0:最低特权级,应用程序运行在该特权级,也称用户态。
- EL1:操作系统运行在该特权级,也称内核态。
- EL2:虚拟场景需要。
- EL3:与安全特性相关,负责普通世界和安全世界之间切换。
从EL0到EL1切换的情况:前两种是同步的特权级切换,第三种是异步的特权级切换。cpu负责保存当前执行状态,以便恢复执行应用程序。
- 应用程序需要调用操作系统提供的系统调用。
- 应用程序执行的指令触发异常。如:缺页异常。
- 应用程序执行过程中,cpu收到来自外设的中断。
03 寄存器:一般用于保存函数调用过程中栈顶的地址。
物理内存与cpu内存
物理内存:由字节组成的大数组,其中每个字节拥有一个物理地址,cpu在其中存取数据。
缓存:为解决cpu对物理内存的访存速度缓慢而引入,用于存放部分物理内存中的数据。
设备与中断
cpu和设备之间的交互方式
01 内存映射输入输出 memory mapped I/O:将输入输出设备和物理内存放在同一个地址空间,为设备内部的内存和寄存器也分配相同的地址。cpu通过和访存物理内存同样的指令读写设备地址。设备通过总线监听被分配的地址,完成请求。
02 轮询与中断:cpu可以通过轮询方式获取设备输入。设备也可通过中断机制通知cpu。(打断cpu的执行,让cpu处理中断)