TreeviewCopyright © qingchuan-ma all right reserved, powered by aleen42

6.828:边做边学

6.828 教授工程操作系统的基础知识,您将详细研究虚拟内存、内核和用户模式、系统调用、线程、上下文切换、中断、进程间通信、并发活动的协调以及软件和硬件之间的接口。最重要的是,您将研究这些概念之间的相互作用,以及如何管理交互引入的复杂性。

6.828 分为三个部分:课程,阅读和一系列编程实验。课程和阅读使您熟悉主要概念。实验引导您深入理解概念,因为您将从头开始构建操作系统。在实验之后,您将欣赏设计目标的含义,例如“降低复杂性”和“概念完整性”。

课程分为两个主要部分。第一部分引入了一个操作系统 xv6(x86 version 6),它是在 20 世纪 70 年代开发的 Unix Version 6 的重新实现。在每个课程中,我们将取出 xv6 的一部分并研究其源代码; 作业将帮助您学习这些课程。在第一部分结束时(大约一半),您将了解基于 Intel PC 的一个精心设计的操作系统的源代码,它将帮助您构建自己的操作系统。

第二部分课程涵盖了 Unix v6 之后发明的重要操作系统概念。我们将通过阅读研究论文并在讲座中讨论它们来研究更现代的概念。您还将在操作系统中实现其中一些较新的概念。

您可能想知道为什么我们正在研究类似 Unix v6 的操作系统,而不是 Linux,Windows 或 BSD Unix 的最新版本。xv6 足以说明操作系统中的基本设计和实现思路。另一方面,xv6 远小于任何现代生产操作系统,并且相应地更容易理解。xv6 具有与许多现代操作系统类似的结构; 一旦你探索了 xv6,你就会发现 Linux 内核很熟悉。

实验是理论结合实验的地方。在实验中,您将内化概念及其相互作用的细节。例如,尽管您可能已经在 6.004、6.033 和 6.828 课程中看到过虚拟内存,但您会在实验中发现您并未完全了解虚拟内存以及它与其他概念的交互方式。

实验分为 6 个主要部分,它们相互构建,最终形成一个原始的操作系统,您可以通过自己的 shell 运行简单的命令。

您将构建的操作系统(称为 JOS)将具有类 Unix 函数(例如 fork,exec),但是以 exokernel 风格实现(即,Unix 函数主要在用户级库中实现,而不是在核心)。JOS 操作系统的主要部分有:

  1. 引导
  2. 内存管理
  3. 用户环境
  4. 抢先式多任务处理
  5. 文件系统,spawn 和 shell
  6. 网络驱动

我们将为 JOS 的部分提供骨架代码,但您必须做所有艰苦的工作。您可以在前几个任务的细节中获得设计自由,并在最后一个任务中获得整个设计的自由。您会发现 xv6 可以帮助您理解您在 JOS 中尝试实现的许多目标,但是在 xv6 的设计和实现空间中,JOS 占据了一个非常不同的点。

你将分别完成六个实验。您可以选择将最终的 JOS 相关项目替换为第六个实验; 如果你做一个项目,你可以在一个,两个或三个学生的团队中完成。

您将为基于 x86 的标准个人计算机开发 JOS 操作系统.为了简化开发,我们将在类中使用完整的机器模拟器(QEMU)进行开发和调试。然而,这个模拟器足够真实,如果你愿意,你将能够在物理硬件上启动你自己的操作系统。

在实验结束时,您将能够找到解决大多数操作系统源代码的方法,更一般地说,您可以熟悉系统软件。您将详细了解许多操作系统概念,并能够在其他环境中使用它们。您还将很好地理解 x86 处理器和 C 编程语言。

致谢

如果没有一套过去的(Josh Cates,Austin Clements,Russ Cox,Bryan Ford,Max Krohn 和 Emil Sit),那么今天就不会存在 6.828。他们使这个课程成为现实。我们总是将 6.828 献给 Josh Cates 的纪念; 我们希望许多学生能够受到 Josh 对操作系统的热情的启发,并将操作系统命名为 JOS。我们还感谢哈佛大学,麻省理工学院(包括 SIPB),加州大学洛杉矶分校和纽约大学的学生和教学人员所做出的贡献。

results matching ""

    No results matching ""