Keep Calm and Carry On

Operating Systems

二、硬件基础

2.1 为什么选择ARM

经典的操作系统介绍都是采用X86体系的,ARM是未来的趋势。

  1. ARM的发展
    ARM 32位指令集->加入 Thumb 16位指令集->多核、SIMD、TrustZone->ARM V7->ARM V8(64位虚拟地址、扩大物理地址、硬件加速加密、新的异常模型)
  2. ARMV8基础平台SOC
    • 不同的核(大中小,控制功耗)
    • 有安全分区、常规分区(TrustZron)

2.2 AArch64体系结构

  1. ARMv8支持的执行模式:Aarch64,Aarch32支持不同指令集
  2. Aarch64实现:PC(Program Count)
  3. ARM寄存器:31个64位寄存器、1个PC寄存器、4个栈寄存器(专门保存栈的状态,不用在栈上保存,比如x86的ebp)、3个异常链接寄存器、3个程序状态寄存器
  4. 指令集:ARM是RISC指令集(固定长度、更多通用寄存器、Load/Store结构唯一方式访问内存、简化寻址方式)
  5. 特权级:
  6. 系统状态寄存器:抽象进程状态信息(PSTATE):
  7. 系统控制寄存器:大小端、使用MMU、检Tag、内存系统
  8. 内存系统相关寄存器:控制内存页表的管理
  9. 地址翻译:
  10. 内存空间分配:kernel space 和 user space 之间有空洞(用户有地址映射到空洞是非法映射):

2.3 操作系统启动过程

2.4 中断和异常的概念

  • 中断(Interrupt):
    • 外部硬件设备所产生的信号
    • 异步:产生原因和当前执行指令无关,如程序被磁盘读打断
  • 异常(Exception):
    • 软件的程序执行所产生的事件
    • 包括系统调用:用户程序请求操作系统系统服务
    • 同步:产生和当前执行或试图执行的指令相关
  1. AArch64的中断(异步异常)
  • 重置(Reset):
    • 最高级别的异常,用以执行代码初始化CPU核心
    • 由系统首次上电或者控制软件、Watchdog等触发
  • 中断(Interrupt):
    • CPU外部的信号触发、打断当前执行
    • 如计时器中断、键盘中断
  1. AArch64的异常(同步异常)
  • 终止(Abort):
    • 失败的指令获取或者数据访问
    • 如访问不可读的内存地址
  • 异常产生指令