Linux中國

Caffeinated 6.828:實驗 7:最終的 JOS 項目

簡介

對於最後的項目,你有兩個選擇:

  • 繼續使用你自己的 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國