computer

課程資料

作業系統概論

開課:黃世昆老師

修課年度:99資工系

課本是 《Operating System Concepts》

上課方式

這堂課的價值主要偏實做。上課主要是用投影片講解,有時老師會講 Linus 的故事。

評分方式

這學期老師只有點一次名,不過有算分。以前聽說這堂課有很多 lab, Bonus 可以做,到了期中,就有人已經 8x 了,還說學期末有六個人 100,不過這學期盛況不再, Bonus 只剩兩個。

即使如此,作業依然不少,確實可以學到許多。像是 user thread scheduler 若不是修這堂課,我大概也不會有機會寫吧。

bonus 佔 10 分,所以作業考試和 bonus 加一加,分數上限是 110 分。學期末還有調分,最後有及格的人的平均是 81。

考試作業

老師好像蠻喜歡 Linux 而不是 Windows,所以許多作業主要在 Linux 上進行。這學期有三個 online judge 的作業,越早寫完,寫出題數愈多,分數愈高。除了把題目解出來外,每份作業還要另外寫一份報告解釋自己的作法並附上相關討論。

第一個是要寫一個小型的 online judge 去 judge 老師的程式,主要是要透過 fork 執行程式並想辦法取得子程式的資源使用,及輸出入的重導。

第二個是一般基礎程設的題目:〈2009-04: On Disk Scheduling〉,相對而言比較簡單。

第三個是用 makecontext/setcontext/getcontext/swapcontext 實做 thread scheduler:〈OS-0002: A user thread scheduler〉。這個作業不太好想,一開始為了搞清楚題意費了不少心思,寫好的第一個版本異常複雜,後來跟同學討論才想出較簡單的寫法。

除此之外,還有一些程式作業:有一個是要寫個程式製造 zombie process,並寫個報告說明什麼是 zombie process。還有一個是要用 C++ 配合 pthread, semaphore 實做 monitor。還有一個是要寫程式印出在 stack, heap 等等的變數及 functions 的記憶體位址,並比較與/proc/xxx/maps 的關係。

最後還有兩個 Bonus:

第一個是要用虛擬機 (ex. VirtualBox)安裝任一 Linux,並且加入自訂 system call 重新編譯核心,同時要寫一份報告及 demo system call 的使用。

推薦使用 Ubuntu,無論是安裝,編譯核心,加 system call,網路上都有 step by step 的教學。(因為版本會一直更新,所以這裡就不附連結了)安裝起來並不困難,只要一直按下一步就好了,如果有修過 SA 的,一定會很感動,他跟 FreeBSD 比真是天壤之別。

第二個是要取得 child process 的記憶體使用量的資訊(實際上為了完成 onilne judge hw1,本來就一定要完成這件事。)

我有把自己的報告和作業程式碼放在 github 上,可供參考:

考試方面,一共有三次期中考,老師都會給考古題,雖然會考很多新東西。

第一次考試,是到系計中線上考試,題型主要是選擇、填充等等。有一些記憶和觀念的問題,也有計算題。還有一些老師說是常識。第二次難度加深,還出了一題佔分 25 的程式題,是作業 monitor 的延伸。第三次改成紙筆考試,考得又更難了一些,計算題比重變得很高,尤其出了 page replacement 的題目。這題雖然在老師給的考古題就有出現,不過計算起來相當耗時。看到他的一瞬間,就直覺認為這份考卷要寫完很難。

結語

因為很多人作業寫不完的緣故,所以作業的 deadline 一直在延。我也在期末堆了四份報告和一份 online judge 沒寫,結果寒假第一個禮拜幾乎都在寫 OS 作業 囧

老師寄來的信,說話總是很客氣。

Bonus 中要裝的 Linux 真的推薦用 Ubuntu,我自己電腦上的主要作業系統就是灌 Ubuntu,反而 Windows 7 才是裝在虛擬機裡。感覺最方便的就是,不管是要寫 Java, Perl, Pthyon, Lisp, 還是 Prolog,執行環境都是直接用內建的套件管理員就可以輕鬆裝好。而且他上面又有很多方便的程式開發工具。

我都用 Vim 寫程式、gcc 編譯、gdb 除錯、git 管理程式碼。特別是 gdb,介紹給幾個人後,他們都覺得很棒,推薦大家可以試試看。

另外介紹一個工具叫 valgrind 是我上吳育松老師的資料結構時得知的。在除錯用 pthread 寫的 multithreaded 程式時,valgrind 和 gdb 真是配合的天衣無縫。我寫 monitor 作業時,他們真的幫助良多,否則我真不知要除錯多久。

延伸閱讀

p.s. 這篇文章裡提到的工具,有些也可在 Windows 上使用,在資工系計中甚至資訊服務中心的工作站上也都有,大家可以試試看。