Caffeinated 6.828:实验 7:最终的 JOS 项目
创始人
2024-03-02 01:44:36
0

简介

对于最后的项目,你有两个选择:

  • 继续使用你自己的 JOS 内核并做 实验 6,包括实验 6 中的一个挑战问题。(你可以随意地、以任何有趣的方式去扩展实验 6 或者 JOS 的任何部分,当然了,这不是课程规定的。)
  • 在一个、二个或三个人组成的团队中,你选择去做一个涉及了你的 JOS 的项目。这个项目必须是涉及到与实验 6 相同或更大的领域(如果你是团队中的一员)。

目标是为了获得乐趣或探索更高级的 O/S 的话题;你不需要做最新的研究。

如果你做了你自己的项目,我们将根据你的工作量有多少、你的设计有多优雅、你的解释有多高明、以及你的解决方案多么有趣或多有创意来为你打分。我们知道时间有限,因此也不期望你能在本学期结束之前重写 Linux。要确保你的目标是合理的;合理地设定一个绝对可以实现的最小目标(即:控制你的实验 6 的规模),如果进展顺利,可以设定一个更大的目标。

如果你做了实验 6,我们将根据你是否通过了测试和挑战练习来为你打分。

交付期限

11 月 3 日:Piazza 讨论和 1、2、或 3 年级组选择(根据你的最终选择来定)。使用在 Piazza 上的 lab7 标记/目录。在 Piazza 上的文章评论区与其它人计论想法。使用这些文章帮你去找到有类似想法的其它学生一起组建一个小组。课程的教学人员将在 Piazza 上为你的项目想法给出反馈;如果你想得到更详细的反馈,可以与我们单独讨论。

.

11 月 9 日:在 提交网站 上提交一个提议,只需要一到两个段落就可以。提议要包括你的小组成员列表、你的计划、以及明确的设计和实现打算。(如果你做实验 6,就不用做这个了)

.

12 月 7 日:和你的简短报告一起提交源代码。将你的报告放在与名为 “README.pdf” 的文件相同的目录下。由于你只是这个实验任务小组中的一员,你可能需要去使用 git 在小组成员之间共享你的项目代码。因此你需要去决定哪些源代码将作为你的小组项目的共享起始点。一定要为你的最终项目去创建一个分支,并且命名为 lab7。(如果你做了实验 6,就按实验 6 的提交要求做即可。)

.

12 月 11 日这一周:简短的课堂演示。为你的 JOS 项目准备一个简短的课堂演示。为了你的项目演示,我们将提供一个投影仪。根据小组数量和每个小组选择的项目类型,我们可能会限制总的演讲数,并且有些小组可能最终没有机会上台演示。

.

12 月 11 日这一周:助教们验收。向助教演示你的项目,因此我们可能会提问一些问题,去了解你所做的一些细节。

项目想法

如果你不做实验 6,下面是一个启迪你的想法列表。但是,你应该大胆地去实现你自己的想法。其中一些想法只是一个开端,并且本身不在实验 6 的领域内,并且其它的可能是在更大的领域中。

  • 使用 x86 虚拟机支持 去构建一个能够运行多个访客系统(比如,多个 JOS 实例)的虚拟机监视器。
  • 使用 Intel SGX 硬件保护机制做一些有用的事情。这是使用 Intel SGX 的最新的论文
  • 让 JOS 文件系统支持写入、文件创建、为持久性使用日志、等等。或许你可以从 Linux EXT3 上找到一些启示。
  • 软更新WAFL、ZFS、或其它较高级的文件系统上找到一些使用文件系统的想法。
  • 给一个文件系统添加快照功能,以便于用户能够查看过去的多个时间点上的文件系统。为了降低空间使用量,你或许要使用一些写时复制技术。
  • 使用分页去提供实时共享的内存,来构建一个 分布式的共享内存(DSM)系统,以便于你在一个机器集群上运行多线程的共享内存的并行程序。当一个线程尝试去访问位于另外一个机器上的页时,页故障将给 DSM 系统提供一个机会,让它基于网络去从当前存储这个页的任意一台机器上获取这个页。
  • 允许进程在机器之间基于网络进行迁移。你将需要做一些关于一个进程状态的多个片段方面的事情,但是由于在 JOS 中许多状态是在用户空间中,它或许从 Linux 上的进程迁移要容易一些。
  • 在 JOS 中实现 分页 到磁盘,这样那个进程使用的内存就可以大于真实的内存。使用交换空间去扩展你的内存。
  • 为 JOS 实现文件的 mmap()
  • 使用 xfi 将一个进程的代码沙箱化。
  • 支持 x86 的 2MB 或 4MB 的页大小
  • 修改 JOS 让内核支持进程内的线程。从查看 课堂上的 uthread 任务 去开始。实现调度器触发将是实现这个项目的一种方式。
  • 在 JOS 的内核中或文件系统中(实现多线程之后),使用细粒度锁或无锁并发。Linux 内核使用 读复制更新 去执行无需上锁的读取操作。通过在 JOS 中实现它来探索 RCU,并使用它去支持无锁读取的名称缓存。
  • 实现 外内核论文 中的想法。例如包过滤器。
  • 使 JOS 拥有软实时行为。用它来辨识一些应用程序时非常有用。
  • 使 JOS 运行在 64 位 CPU 上。这包括重设计虚拟内存让它使用 4 级页表。有关这方面的文档,请查看 参考页
  • 移植 JOS 到一个不同的微处理器。这个 osdev wiki 或许对你有帮助。
  • 为 JOS 系统增加一个“窗口”系统,包括图形驱动和鼠标。有关这方面的文档,请查看 参考页sqrt(x) 就是一个 JOS “窗口” 系统的示例。
  • 在 JOS 中实现 dune,以提供特权硬件指令给用户空间应用程序。
  • 写一个用户级调试器,添加类似跟踪的功能;硬件寄存器概要(即:Oprofile);调用跟踪等等。
  • 为(静态的)Linux 可运行程序做一个二进制仿真。

via: https://pdos.csail.mit.edu/6.828/2018/labs/lab7/

作者:csail.mit 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

1626_MIT 6.82...
         全部学习汇总: GreyZhang...
2024-05-25 16:07:29
Caffeinated 6...
简介对于最后的项目,你有两个选择:继续使用你自己的 JOS 内核并...
2024-03-02 01:44:36
Caffeinated 6...
简介这个实验是默认你能够自己完成的最终项目。现在你已经有了一个文件...
2024-03-02 01:43:37
Caffeinated 6...
简介在本实验中,你将要去实现 spawn,它是一个加载和运行磁盘上...
2024-03-02 01:33:42
Caffeinated 6...
简介在本实验中,你将在多个同时活动的用户模式环境之间实现抢占式多任...
2024-03-02 01:25:22
Caffeinated 6...
简介在本实验中,你将要实现一个基本的内核功能,要求它能够保护运行的...
2024-03-02 01:12:45

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...