Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

MIT6.828-神級OS課程

2020 年 2 月 3 日 quadtree

花了兩個月多的時間,終于把 MIT6.828 的課程跟完了。剛接觸這個課程時,就有一種感覺:哇,好神奇! 這個課程真的是循序漸進,一步一步在你的腦海裏建立起 OS 的大廈框架。從 Lab1 的手把手教學到 Lab6 的放任你自由,很好地對學生的學習進行了引導。學完這個課程後,你也就擁有了一個屬于你自己的完整的內核雛形!

當然這個課程需要一些基礎,如彙編語言、操作系統、計算機組成原理以及體系結構等。畢竟操作系統是一門比較底層且考察綜合性計算機知識的課程。但這都不是重點,我一直認爲,以邊學邊做的方式來學習一門課程是最好的方式之一(爲什麽是之一呢,怕被噴…嘻嘻)。只要能堅持下來,最後你會體會到,你已經能從一個與之前完全不同的角度理解計算機!現在微內核概念這麽火,鴻蒙就是微內核OS,難道不想從原理上真正理解一下微內核OS嗎? 沒錯,6.828 這個課程就是引導我們實現了一個微內核操作系統。

沒想到這個內容能被這麽多人看到,還挺激動的。不過點贊收藏 1:5 是什麽情況,大家不要收藏退出一氣呵成啊~如果真的對計算機底層比較感興趣的話,一定要去 try 一下啊!

1. 簡介

課程評價:神級課程——要是早遇到,我還會是這種 five(廢物) 系列

課程網址:6.828: Operating System Engineering,一直跟著其 schedule 走就可以啦。

xv6 講義:a simple, Unix-like teaching operating system,講義中會將每個部分的實現講得十分詳細,在代碼編寫時遇到不太清晰的概念時,可以多參考講義。

我的實現環境: – VMware Workstation虛擬機 – Ubuntu16.04 – qemu,最好使用 MIT 給的 patch 版本(Lab6 用到 pacth 版本的qemu 較多)。安裝方法也可參考Tools Used in 6.828 鏈接 – 工具鏈 Tools Used in 6.828

環境搭建網絡上教程很多,這裏我就不再贅述,直接給出別的大佬寫的教程:MIT-6.828-JOS-環境搭建

2. Xv6

學習6.828時,你會發現經常遇到 xv6 和 JOS這兩個名詞,不明白它們兩者之間的關系,在完成實驗時思路就會不是很清晰。xv6 是一個類Unix的教學操作系統,而 JOS 是在xv6的基礎上改寫,讓我們能在其上進行實驗的 OS。 所以實際上,當我們遇到不會實現的問題時,可以去參考 xv6 相應部分的源碼。

Homework 實現:完整實現代碼。Github_SmallPond/MIT6.828_OS

  • MIT6.828_Homework_Shell_MIT_6.828
  • MIT6.828_HW2_Boot_xv6_MIT6.828
  • MIT6.828_HW3_XV6 System calls
  • MIT6.828_HW4_xv6 lazy page allocation
  • MIT6.828_HW5_xv6 CPU alarm
  • MIT6.828_HW6_Threads and Locking
  • MIT6.828_HW7_xv6 locking
  • MIT6.828_HW8_User-level threads
  • MIT6.828_HW9_barriers
  • MIT6.828_HW10_Bigger file for xv6
  • MIT6.828_HW11_xv6 log

3. JOS

以下是我實驗過程中記下的筆記,包含我的實現思路以及代碼。 不過有些重複的細節,我就沒有記錄,可以參考我的完整實現代碼。Github_SmallPond/MIT6.828_OS

  • Lab1 Booting a PC
    • LAB_1_Part1_PC Bootstrap
    • LAB_1_Part2_The Boot Loader
    • LAB1_Part3_The Kernel

  • Lab2 Memory management
    • LAB2_Part1_Physical Page Management
    • LAB2_Part2_Virtual Memory
    • LAB2_Part3_Kernel Address Space(內核地址空間)
  • Lab3 User-Level Environments
    • LAB3_User-Level Environments_PartA_User Environments and Exception Handling
    • LAB3_User-Level Environments_PartB Page Faults, Breakpoints Exceptions, and System Calls

  • Lab4 Preemptive Multitasking_
    • LAB4_Preemptive Multitasking_PartA Multiprocessor Support and Cooperative Multitasking
    • LAB4_Preemptive Multitasking_PartB Copy-on-Write Fork
    • LAB4_Preemptive Multitasking_PartC Preemptive Multitasking and IPC
  • Lab5 File system, Spawn and Shell
    • Lab5_File system, Spawn and Shell

  • Lab6 Network Driver
    • Lab6_Network Driver

4. 參考文獻

  1. MIT 6.828 JOS 操作系統學習筆記/fatsheep9146,剛入門時參考,包括環境搭建。博文寫得十分詳細,可惜貌似只寫到了 Lab2。
  2. clpsz/mit-jos-2014,此大神放出了自己到 Lab4 的代碼,其文檔提及了一些細節,很有幫助。
  3. Unknown Unknown,過程較詳細(相當于對官方文檔做了一遍翻譯),英語不好可以參考這邊,但我還是建議以官方文檔爲主,畢竟英語還是要學好呀。這位大神做到了LAB5,但不包括HW。
  4. bysui的博客, 這位大神完成了全部的實驗,但是我在後面才發現這麽好的資源!

我的課程能順利完成,少不了各位大佬記錄下的實驗過程,由衷感謝以上各位大神。同時希望我也能幫到後來的學習者~

相關文章:

  • 聊時尚 | 私藏的5個小衆童裝品牌分享,高顔值+好質感
  • 美过北海道,人少不宰客。这里就是日本的雪乡白川乡
  • Nike開挂了!新品項鏈 包包 衛衣也太好看了吧,每一個都好想要!
  • 在首爾吃吃喝喝半個月,才真正體會到韓國料理有多好吃
  • 世界唯一沒有癌症的國家,對中國免簽,你知道哪裏嗎?
  • 終于把《大宅門》的所有人物原型搜集全了,原型解析、百看不厭
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們