資源嚮導之 JOS 計劃 MIT 6.828

Project of JOS


update: 2016.03.18 哇,JOS過去一段時間了,有一些同學可能獲得JOS實驗初始的源代碼比較困難,原因可能是GFW也可能是JOS官方他們每學期都可能會課程更新,然後一些更新的實驗源代碼不會一次性 “放送”~ 

找不到實驗材料的童鞋可以在下面的link中下載實驗源代碼,其 2014_JOS_lab_source_code.tar.gz 便是我們實驗需要的源代碼壓縮文件。

https://github.com/jasonleaster/MIT_6_828_assignments_2012/tree/homework2


update: 2016.01.01(有同學遇到困難會發郵件給我。但是有一部分會是前面已經完成的lab沒有做好,而影響了後面的lab。所以提出相關問題時,還一定要確保之前做過的lab完全正確,且透徹的理解。不然。。沒法聊啊)


  上網要科學上網,做lab也要科學的做.

  之前我一上來就做實驗,很多資料都不知道.現在打算重新來過


  方法:

                  0.xv6源碼不要用MIT官網的那份,我的主機是Linux/Ubuntu 14.0各種編譯error,我都改的想吐.後來直接用github上別人改好的,直接能跑起來沒有編譯錯誤的xv6. 

     1.按照MIT給出的課程安排表,每一次課的相關lecture必須全部過一遍.

     2.要求的課堂作業必須完成,很多時候課程要求的任務是很輕鬆的,只要修改部分代碼就行了.這裏我還是建議通讀所有的代碼.不要滿足於"程序填空".

     3.每一個lab新增的source file必須通讀.而且還要讀xv6對應的代碼.不要滿足於只要你填空的一些代碼.往往這樣也很難有對OS很細緻的理解.

     4.由於JOS就是從xv6直接改過來的實驗用工具,xv6是有完整源碼的.每次lab都嘗試去建立xv6和JOS之間的對應關係.

     

下面貼出來的是轉子北大未名站他們TA在11年的時候貼出來的課程實驗要求
路過的可以感受一下...
默默的感嘆 .... challenge啊...
1.	實現4KB~4MB可變頁面大小的分配,並在Lab6的DMA中進行應用,要求能驗證夥伴系統
的特性
2.	參考Linux,描述如何在不改變KERNBASE的情況下,讓JOS Kernel管理超過256MB的物
理內存
3.	在JOS中做一個緩衝區溢出的實驗(如何構造用戶程序,考察輸出)
4.	分析JOS中的各種驅動程序(磁盤、網卡、鍵盤、串口、並口等等)
5.	介紹如何實現快速系統調用(lab3的一個challenge)
6.	針對lab4的倒數第2,3個challenge,介紹如何在JOS裏用IPC實現一些有趣的應用
7.	如何在JOS中實現簡單的用戶態調試器(Breakpoint、Watchpoint)
8.	實現在內核態對指令進行反彙編(Lab3的一個challenge)
9.	參考Linux的實現,在JOS中實現類似syscall table的系統調用分發機制
10.	考慮在JOS中實現動態鏈接的機制。
11.	調研系統時鐘保存了哪些信息,並輸出當前日期和時間
12.	介紹Linux中的CFS調度算法,並考慮如何在JOS中實現
13.	(Lab6) 介紹一下LWIP協議棧
14.	(Lab6) 結合Lab6介紹一下PCI總線
15.	(Lab6) 實現一個更高效的malloc
16.	(Lab7) 從Lab7de topic中任選一個進行介紹,能實現最好

B 這部分題目與JOS不直接相關
1.	介紹GCC內聯彙編
2.	介紹Qemu的工作原理
3.	介紹Linux的內存管理(包括物理內存和虛擬內存),並和JOS做比較
4.	介紹Linux的進程管理(包括進程描述符、進程調度),並和JOS做比較
5.	介紹Linux啓動的過程
6.	介紹常用的Linux的Bootloader——Grub
7.	介紹Makefile
8.	介紹鏈接腳本的寫法(參考kern/kernel.ld,user/user.ld)
9.	介紹Git的使用
10.	介紹Ext2文件系統,並和JOS中實現的文件系統做比較
11.	介紹Linux中的隨機數生成算法,並考慮:JOS中是否可以實現類似的算法?
12.	標準庫對strcpy的實現,並和JOS作比較,說明爲什麼標準庫的實現效率更高



         關於實驗用的材料:

     由於MIT每年都會對JOS稍作調整(可能是處於防止學生參考以前學生的成果,不自己思考解答的原因吧.),那麼每年的JOS可能都多多少少有些不一樣.這就可能給瞭解JOS,時間跨度大的人聚在一起討論造成了一些障礙.爲了一致性,最好大家統一使用同一種版本的JOS.

     這裏我已知最新的版本是2014年的,而且github上有很多人已經吧解答代碼貢獻出來了,這就是很好的環境了.



OK: 一下會統一按照這種格式,記錄每一次lecture的完成情況.

比較長的lab report會以鏈接的形式給出,比較短的homework就直接寫在下面了

LEC :  Lecture Name
Preparation: To do
Assignment: To do


----------------------------------------------這可能是一場曠日持久的戰爭------------------------------------------------------------


LEC 1: Operating system
PreparationUnix intro
AssignmentHW: shell 
AssignmentLab 1: C, Assembly, Tools, and Bootstrapping

下面是我個人的lab 1實驗解答分析:: http://blog.csdn.net/cinmyheart/article/details/39754269


LEC 2: PC hardware and x86 programming slides notes
Preparation: Read Bootstrap/PC hardware appendices and the related xv6 source files
AssignmentHW: Boot xv6


再說一次,不要用MIT官網的source file,去下面的link裏下載一份.

https://github.com/penguiner/xv6




LEC 3: C and gdb (pointers example)
Homework 1 due: Boot xv6
Preparation: Read 2.9 (Bitwise operators), 5.1 (Pointers and Addresses) through 5.5(Character Pointers and Functions) and 6.4 (pointers to structures) in K&R
AssignmentLab 2: Memory management

下面是我個人的lab 2實驗解答分析:

http://blog.csdn.net/cinmyheart/article/details/39827321


LEC 4: Shell & OS organization
PreparationRead chapter 0 of the xv6 book
Homework 2 due: shell

看書就是了, xv6第0章 就是對操作系統進行介紹,有一個概括.


LEC 5: Isolation mechanisms 
Preparation: Read "Chapter 1: The first process" and the related xv6 source files
AssignmentHW: system calls

這個HW後面補,折騰了一個小時,還是沒加進去...簡直智商捉急...


LEC 6: Virtual memory (handouts: page table translation and registers)
Preparation: Read "Chapter 2: Page Tables"
Homework 3 due: systems calls
AssignmentHW lazy page allocation




LEC 7: Using virtual memory (handout: JOS virtual memory layout)
Homework 4 due: HW lazy page allocation
AssignmentLab 3: User-Level Environments

下面是我個人的lab 3實驗解答分析:

http://blog.csdn.net/cinmyheart/article/details/40023965


LEC 8: System calls, interrupts, exceptions (handouts: IDT)
Preparation: Read "Traps, interrupts, and drivers" and the related xv6 source files
AssignmentHW xv6 CPU alarm


LEC 9: Multiprocessors and locking
Preparation: Read "Locking" with spinlock.c and skim mp.c
Homework 6 due: HW multithreaded programming
AssignmentHW xv6 locks
AssignmentLab 4: Preemptive Multitasking


下面是我個人的lab 4實驗解答分析:

http://blog.csdn.net/cinmyheart/article/details/43875961



oct 29
Hacking day
AssignmentLab 5: File system, spawn, and sh

http://blog.csdn.net/cinmyheart/article/details/45150615







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章