硬件视角的操作系统
本讲内容:计算机硬件的状态机模型;回答以下问题:
- 什么是计算机硬件?
- 计算机硬件和程序员之间是如何约定的?
- 听说操作系统也是程序。那到底是鸡生蛋还是蛋生鸡?
硬件与程序员的约定
Bare-metal 与程序员的约定
Bare-metal 是指在没有操作系统或者其他软件支持的情况下直接运行硬件的情况。
Bare-metal 与厂商的约定
- CPU Reset 后的状态 (寄存器值)
Reset 后处理器都从固定地址 (Reset Vector) 启动
- 厂商自由处理这个地址上的值
- Memory-mapped I/O
厂商为操作系统开发者提供 Firmware
- 管理硬件和系统配置
- 把存储设备上的代码加载到内存
- 例如存储介质上的第二级 loader (加载器)
- 或者直接加载操作系统 (嵌入式系统)
Firmware 负责加载操作系统: BIOS vs UEFI
Legacy BIOS 把第一个可引导设备的第一个 512 字节加载到物理内存的 7c00 位置
此时处理器处于 16-bit 模式。我们构造一个 512 字节的 “Master Boot Record” 作为磁盘镜像装在在模拟器上,并且用 gdb 观察指令在处理器上的执行。
如何验证这一点?
计算机系统公理:你想到的就一定有人做到
1 |
|
1 |
|
1 |
|
前三行命令定义了一个名为 hook-quit 的 GDB 钩子。当用户在 GDB 中执行 quit 命令时,GDB 将自动执行 hook-quit 钩子中定义的命令。在这个例子中,hook-quit 钩子中只有一条命令 kill,它的作用是在用户退出 GDB 时杀死正在被调试的进程。这样可以确保在退出 GDB 后,被调试的进程也会被终止,避免出现进程僵死等问题。
- 如何用 gdb 调试 qemu-S: 把CPU暂停下来
1
qemu-system-x86_64 -s -S mbr.img
-s: shorthand for -gdb tcp::1234 监听1234的端口
所以我们可以启动一个 gdb
1 |
|
这样就可以在gdb中调试这个qemu模拟器了。
硬件视角的操作系统
http://example.com/2023/08/02/操作系统/jyy操作系统/硬件视角的操作系统/