Appearance
操作系统
操作系统有一个基本问题:
多个可能出错、也可能不可信的程序,怎样共同使用一台计算机?
考虑一个普通的文件处理程序:
bash
./worker input.txt output.txt即使只执行这一条命令,系统也需要回答:
- 程序文件
worker如何变成正在运行的程序? - 为什么不同程序都能使用自己的变量、堆和栈,而不会互相覆盖?
- 多个程序如何同时运行?
- 文件系统如何从存储细节抽象出文件树?
- 程序发生错误或恶意操作时,怎样限制它影响其他程序?
操作系统就是这样建立在硬件之上,为用户提供统一编程界面的系统。
本讲义以 xv6/RISC-V 为机制主线:先沿短小的源码闭合一条执行路径,再用 Linux、x86-64 和现代设备解释生产系统新增的约束。容器、NVMe、虚拟机和 eBPF 等 xv6 未实现的主题,则在已经建立的进程、内存、设备和文件系统模型上继续扩展。