硬件视角的操作系统

硬件视角的操作系统

2025 南京大学《操作系统原理》
硬件视角的操作系统

硬件视角的操作系统

一句话:硬件根本不知道有没有操作系统

  • 我就是个无情执行指令的状态机
    • 见什么指令执行什么指令

计算机系统中的抽象

  • 下层不需要知道上面怎么用,只管 “无情地提供服务”
    • 系统调用支撑应用程序
    • 指令集支撑高级语言程序
2025 南京大学《操作系统原理》
硬件视角的操作系统

计算机系统的状态机模型

无情执行指令的机器。

1. 状态

  • 内存、寄存器的数值

2. 初始状态

  • 由系统设计者规定 (CPU Reset)

3. 状态迁移

  • 从 PC 取指令执行

基本准确;但我们可以做一些补充

2025 南京大学《操作系统原理》
硬件视角的操作系统

1. 计算机系统:状态

寄存器、内存

struct CPUState {
    uint32_t regs[32], csrs[CSR_COUNT];
    uint8_t *mem;
    uint32_t mem_offset, mem_size;
};

还有外部世界的态

  • 设备上的寄存器 (memory-mapped I/O 可以访问)
  • Interrupt/Reset Line
  • 客观存在,但计算机系统不能直接访问
    • 类比:进程只能通过 syscall 访问进程外的信息
2025 南京大学《操作系统原理》
硬件视角的操作系统

例子: GPIO

gpio_set_value(GPIO_23, 1); // in Linux kernel

center

2025 南京大学《操作系统原理》
硬件视角的操作系统

2. 计算机系统:初始状态

为什么老旧电脑要配一个 RESET 按钮?

center

2025 南京大学《操作系统原理》
硬件视角的操作系统

x86 Family: CPU Reset

center

2025 南京大学《操作系统原理》
硬件视角的操作系统

考考人工智能

x86-64 的 CPU Reset 状态是怎样的?

2025 南京大学《操作系统原理》
硬件视角的操作系统

CPU Reset: 其他体系结构

RISC-V:百花齐放,百家争鸣

  • 初始 PC 无规定;寄存器除了 x0 全部 undefined
  • 少数 CSR 有规定 (例如 interrupt disabled)
    • 设计原则:省电路
    • 软件能做的,硬件绝对不管

百万碎片 😂

  • ARM: 规定了 CPU Reset,但没有规定设备寄存器的映射
  • 每台机器都看起来 “不太一样”
    • qemu-system-aarch64 -machine help
2025 南京大学《操作系统原理》
硬件视角的操作系统

3. 计算机系统:状态迁移

执行指令

  • 如果有多个处理器?
    • 可以想象成 “每次选一个处理器执行一条指令”
    • 在并发部分会回到这个问题

响应中断

  • if (intr) goto vec;

输入输出

  • 与 “计算机系统外” 交换数据
    • 类似于系统调用的 “访问外部” 机制
2025 南京大学《操作系统原理》
硬件视角的操作系统

回到开头:硬件视角的操作系统

一句话:硬件根本不知道有没有操作系统

  • 我就是个无情之行指令的状态机
    • 见什么指令执行什么指令

操作系统就是一个普通的 (二进制) 程序

  • 接管了中断、I/O、……
    • 应用程序不能直接访问
  • 把应用程序 “放” 到 CPU 上运行一会
    • 中断后,操作系统又开始执行
    • (操作系统启动后,操作系统就变成了一个中断处理程序)
2025 南京大学《操作系统原理》