二、硬件基础
2.1 为什么选择ARM
经典的操作系统介绍都是采用X86体系的,ARM是未来的趋势。
- ARM的发展
ARM 32位指令集->加入 Thumb 16位指令集->多核、SIMD、TrustZone->ARM V7->ARM V8(64位虚拟地址、扩大物理地址、硬件加速加密、新的异常模型) - ARMV8基础平台SOC
- 不同的核(大中小,控制功耗)
- 有安全分区、常规分区(TrustZron)
2.2 AArch64体系结构
- ARMv8支持的执行模式:Aarch64,Aarch32支持不同指令集
- Aarch64实现:PC(Program Count)
- ARM寄存器:31个64位寄存器、1个PC寄存器、4个栈寄存器(专门保存栈的状态,不用在栈上保存,比如x86的ebp)、3个异常链接寄存器、3个程序状态寄存器
- 指令集:ARM是RISC指令集(固定长度、更多通用寄存器、Load/Store结构唯一方式访问内存、简化寻址方式)
- 特权级:
- 系统状态寄存器:抽象进程状态信息(PSTATE):
- 系统控制寄存器:大小端、使用MMU、检Tag、内存系统
- 内存系统相关寄存器:控制内存页表的管理
- 地址翻译:
- 内存空间分配:kernel space 和 user space 之间有空洞(用户有地址映射到空洞是非法映射):
2.3 操作系统启动过程
2.4 中断和异常的概念
- 中断(Interrupt):
- 外部硬件设备所产生的信号
- 异步:产生原因和当前执行指令无关,如程序被磁盘读打断
- 异常(Exception):
- 软件的程序执行所产生的事件
- 包括系统调用:用户程序请求操作系统系统服务
- 同步:产生和当前执行或试图执行的指令相关
- AArch64的中断(异步异常)
- 重置(Reset):
- 最高级别的异常,用以执行代码初始化CPU核心
- 由系统首次上电或者控制软件、Watchdog等触发
- 中断(Interrupt):
- CPU外部的信号触发、打断当前执行
- 如计时器中断、键盘中断
- AArch64的异常(同步异常)
- 终止(Abort):
- 失败的指令获取或者数据访问
- 如访问不可读的内存地址
- 异常产生指令