2019 春 虛擬機器
課程在介紹虛擬機器的發展歷史還有背後使用的技術。前半段介紹 process VM ,後半段為 system VM 。因為是軟硬體的 interface 所以會提到作業系統還有計算機結構教的東東。我覺得是這學期修過最有趣的一堂課。感謝明宏跟我一起度過這門課!
上課
沒有加簽限制,開課時 40 人未滿,到最後期末報告 19 人參與。其實只要願意花時間把上課用到的先備知識查清楚不會有太大的困難,只是你可能不會有很完整的概念。
老師似乎快要退休了,所以他還肯教課應該是想再多看看有什麼有趣的學生吧。如果你特別喜歡跟老師做問答與互動,他絕對會滿足你的要求。老師會抽問同學,如果你常出現那就肯定會被他記住,足見他的用心,被抽問的話你也就必須跟上課堂的內容。
上課除了提到經典的作法老師都會延伸到目前業界做到什麼地步,並且使用甚麼技巧。不會讓你覺得學到的東西跟現實世界扯不上關係。
作業
作業採兩人一組共同繳交一份 write-up,也可以一個人一組,但有人可以一起討論總是好的。跟明宏一組。另外還要感謝聖福還有韜韜學長一起寫作業。居然一起看到 204 的日出實在是太硬了⋯⋯做完作業成就感十足。
作業出來雖然沒什麼引導性,但我覺得最大的收穫是 trace 大型專案時逐漸摸清架構,透過 gdb 適時暫停來抓到檔案間的呼叫順序。而且這種大型專案往往都有自己規定好的 coding convention ,也可以看看一個大家熱衷於維護的專案是怎麼去定義變數還有函數呼叫。另外也有很多神奇的 MACRO 用法,也是我寫了作業才會的。
作業一:QEMU trace (process VM)
要求 QEMU 實際運作時 branch condition 的狀況。
- Understanding the state of the art emulator, QEMU
- Learning DBT (Dynamic Binary Translation) based instrumentation
- Getting familiar with the basics of ARMv8 ISA.
作業二:Hypervisor instrumentation (system VM)
要求記錄系統 VM 中的 MEM trap, IO trap, CPU trap 。
- Experience how to build a hosted VM hypervisor and boot up guest virtual machines
- Observe how the hypervisor works and how the traps to VMM are generated
- Instrumenting the hypervisor code
考試與報告
只有期中考,而且是 take home exam 。題目都是非常原創的,就算上課全聽還是要查詢更多題目相關的 domain knowledge 來回答。但是考試配分不重,老師對考試也有很多著墨,真是一門優質好課。
期末的部分是上課報告,提供題目做選擇,看要研究虛擬機器還是雲端應用。老師對這項倒是很要求而且積極鼓勵,認為資工系絕對還是要有呈現的能力。最後幸運拿到 peer evaluation 中第一名,老師送了一件 49th Annual IEEE/ACM International Symposium on Microarchitecture, 2016, Taiwan 的 T-shirt 哈哈,獎品不是重點,是榮耀!
附上我與明宏的 期末報告 repository 。
小結
謝謝老師,下學期我要修 Compiler !
另外我的 Github 裡也有作業的 write-up ,有興趣可以參考看看。
Original link: eopXD