2.0: 操作系统的组织简介(Introduction)

操作系统的一个关键要求是支持同时运行多个活动。例如,使用第1章中描述的系统调用接口,一个进程可以通过 fork 启动新进程。操作系统必须在这些进程之间分时共享计算机的资源。例如,即使进程数量多于硬件CPU的数量,操作系统也必须确保所有进程都有机会执行。此外,操作系统还必须为进程之间提供隔离。也就是说,如果一个进程出现错误并发生故障,不应影响那些不依赖于该错误进程的其他进程。然而,完全的隔离过于严格,因为进程之间应该能够有意地进行交互;例如,管道就是一个例子。因此,操作系统必须满足三个要求:多路复用、隔离和交互。

本章概述了操作系统如何组织以实现这些三个要求。事实证明,有许多方法可以实现这一目标,但本书专注于围绕**单体内核(monolithic kernel)**的主流设计,这种设计被许多类Unix操作系统采用。本章还概述了 xv6 的进程(这是 xv6 中实现隔离的单位)以及 xv6 启动时创建第一个进程的过程。

xv6 运行在多核 RISC-V 微处理器上,其许多底层功能(例如,进程的实现)特定于 RISC-V。RISC-V 是一种64位的CPU,而 xv6 是用 “LP64” C 语言编写的,这意味着在 C 语言中,long 类型 (L) 和指针 (P) 是64位的,而 int 类型是32位的。本书假设读者已经对某些体系结构进行了少量的机器级编程,并将在相关内容出现时介绍 RISC-V 特有的概念。RISC-V 的用户级ISA文档 [1] 和特权架构文档 [2] 是完整的规范。您还可以参考《The RISC-V Reader: An Open Architecture Atlas》 [3]。

完整计算机中的CPU被外围硬件所包围,其中大部分以 I/O 接口的形式存在。xv6 针对由 qemu 模拟器的 -machine virt 选项模拟的支持硬件而编写。这些硬件包括RAM、包含启动代码的ROM、与用户键盘/屏幕相连的串行连接以及用于存储的磁盘。

References

  • 1、The RISC-V instruction set manual Volume I: unprivileged specification ISA. https://drive.google.com/file/d/17GeetSnT5wW3xNuAHI95-SI1gPGd5sJ_/view?usp=drive_link, 2024.

  • 2、The RISC-V instruction set manual Volume II: privileged specification. https://drive.google.com/file/d/1uviu1nH-tScFfgrovvFCrj7Omv8tFtkp/view?usp=drive_link, 2024.

  • 3、David Patterson and Andrew Waterman. The RISC-V Reader: an open architecture Atlas. Strawberry Canyon, 2017.