xv6-一个精巧操作系统(9)

202 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情


原文链接 xv6-riscv文档


Chapter 2 操作系统组织

对于操作系统关键的要求是可以同时支持多个行为。例如,进程可以使用我们在第一章介绍的操作系统接口如fork来创建新的进程,操作系统必须能够把计算机的资源时分复用(time-share)给这些进程。即使进程的数量比CPU的数量更多,操作系统也必须要确保所有的进程都有机会来执行。操作系统也必须在进程间进行隔离(isolation)。这是因为如果一个进程有bug和故障,它不会影响到那些不依赖这个有问题进程的进程。完全的隔离又太封闭了,因为我们需要让进程有机会进行中间交流,例如管道的使用。因此一个操作系统必须满足三个要求:

多路复用(multiplexing)、隔离(isolation)和交互(interaction)。

本章提供了一个关于操作系统如何被组织来实现以上三点的概览。事实证明有很多方法可以做到,但是本文集中于一种主流的基于宏内核的设计方案,这种方案在很多Unix操作系统中被采用。本章同时提供了对于xv6进程的概览,进程是xv6隔离的单元,同时提供了xv6启动时创建进程的说明。

xv6运行在一个多核的RISC-V微处理器上,并且它大部分的底层函数实现例如进程实现都是针对于RISC-V的。RISC-V是一个64位的CPU,xv6则是通过“LP64”C实现的,“LP64”C指Long(L)和指针(Pionter:P)类型都是64位而int是32位。本书假定读者已经学习了一些在一些架构上的机器层语言,并会在接下来介绍RISC-V特定的思想。一个有用的关于RISC-V的指引是The RISC-V Reader: An Open Architecture Atlas。用户指令集以及特权体系结构可以参考官方文档。

CPU是一个由大部分是I/O接口的硬件支持组成的完整的电脑。xv6基于通过qemu的‘-machine virt’选项模拟的硬件支持构建。这包括了RAM,一个保存着boot代码的ROM,一些到用户键盘和屏幕的接口以及一块用于存储的磁盘。


第二章的导读,主要介绍了一些xv6的概况。

感谢阅读。