如何結合xv6 book來閱讀xv6源代碼?

書剛看到第二章,看得很吃力,不懂的地方非常多,感覺要讀不下去了。

看過csapp,普通的操作系統教材也在看


你的方式我覺得可能值得商榷,我覺得學習xv6的最佳方式是跟著這個6.828 / Fall 2017 來做,這裡面有實驗,有講義,有每一章節需要看的資料,循循漸進。

Learning by Doing是這個課程推薦的方式,也是我覺得學習xv6的最佳方式 。不要只抱著xv6 book一直看,那樣即使你看完了,也基本忘記完了。


補充一下樓上的答案吧。不止6.828,其實非常多學校的os課程都是拿xv6做教材的。內容大概是在其上進行一些改造。涉及的內容無非是添加syscall 改造scheduler, shell, kernel-level thread library 等等。對於xv6的源碼能更快的理解。具體的課程其實Google xv6就能找到挺多了gh和YouTube上資源也很多。結合這些lab 寫代碼過程中再看那本書。講道理你會發現真的很簡單,而且涉及內容和源碼相比真的很淺顯

隨便搜了一下找到一個小栗子 :Project 6: xv6 Threads

樓上的類似於graduate level的 樓下這個是我原來上過的CS153的一個lab。undergraduate level的:

Lab 1: Fun with processes

Lab 2: Memory management


以前看xv6到進程管理的時候,因為基礎不好,就死活看不懂了,所以就查資料,英語很渣,沒找到很有用的東西。我覺得要想看懂這種教學級別的操作系統的進程管理,對保護模式應該要了解的多一點兒。如何建gdt、ldt、idt,低特權級代碼轉移到高特權級代碼時是怎麼搞的,tss在這裡起到的作用是什麼,頁表怎麼切換。這些東西搞明白了,中斷處理、進程管理這些東西看起來會輕鬆一點兒,所以推薦於淵老師的《一個操作系統實現》這本書,看xv6時,除了xv6 book ,這應該也是不錯的資料。


最近也在看6.828.去找一下2017的schedule ,上面有每節課的講義。看看講義,然後再做做lab和homework。我感覺就夠了。我也剛開始做,歡迎交流。他的那個lab還挺長的。


推薦閱讀:

阿里雲是用什麼技術攔截未備案的域名的?
如何評價電子科大楊宏春老師對計算機專業的言論?
有哪些好的Linux學習資源?
會寫 Parser、Tokenizer 是什麼水平?

TAG:操作系統 | Unix | 源代碼 | 計算機科學 |