[修課心得] 111–2 作業系統總整與實作 (英文授課)

一系列紀錄那些年我在清、交大修課的紀錄。

樹梅派 | 一整個學期的好朋友

⊕課名⊕

作業系統統整與實作(Operating System Capstone)
以前叫做 OSDI,現在改名 OSC,可能是為了區分已經換了授課教授。

▲教授▲

葉宗泰

★修課年度★

111–2(2023 Spring)

£教了什麼£(課程大概內容。或是額外學會了什麼東西。)

參考課程網頁:連結

◆上課方式◆(投影片、團體討論、老師教學風格)

課堂會分成兩個部分,前半是老師授課,後半是同學報各周指定的 Paper。
課程部分:老師會用個人的筆記搭配簡報授課,而且老師很喜歡跟台下同學互動,所以常常會 cue 同學回答問題。授課的主題會跟當周的回家作業相關。

Paper 部分:整學期不能缺席超過三次,每次都會需要填 Google sheet 回饋表單,當天五點前會關閉回覆功能。

我自己是會再參考以前曹孝櫟老師的課程影片(連結),很有架構,很適合課前預習或寫作業卡住再課後複習。

▼考試作業▼

沒有考試,主要是寫作業(Lab) 跟報一次 Paper

基本上就是從零開始刻一個 OS 到樹莓派上可以跑。每兩周會需要跟助教 Demo 一次,每遲交一次會扣當次作業 1 分。

扣這麼少分的用意是希望同學可以好好把每一次作業寫完,畢竟這是一個疊積木的過程,如果前面沒寫好後面會爆炸,像是 uart、bootloader 或 allocator 基本上寫好後面會一直用到。

又因為作業會分 Basic 跟 Advanced ,全寫完當次分數會超過 100,所以可以前面幾周的時候拿滿分數,去補後面只有做 Basic 的部分。

最後不會特別調分,基本上就是看作業寫多少就拿多少分數。

¢最後想說的話¢

這堂課堪稱研究所至今學到最多的課,畢竟是跨考的背景幾乎沒有基礎。
從這堂課真的帶走了太多知識,回顧了一下大概列了幾點

  1. 作業系統(OS)知識
    畢竟這堂課就是 Operating System Capstone,當初修課想說自己考研究所已經讀過 OS 肯定沒問題,但在實作每一個功能的時候對於各個知識點又有更深的掌握。
  2. C 語言
    這堂課以前,大部分課幾乎都是以 Python 為主。
    以前時常看到心得說指標有多麼重要,一直到修這門課,常常需要對特定記憶體位置操作,又常常會看到兩層甚至三層指標的運用,真的會需要一顆清楚的腦袋知道自己到底指到什麼地方去了。
  3. 一點點的嵌入式系統
    這也是自己第一次需要看規格書,去認識以及操控每個 pin 腳的功能。
    一開始完全看不懂規格書的寫作格式,也超級不能適應 1 << 2 或是各種 Mask 的寫法。直到最後已經可以自如的看著規格書去針對特定的 bits 給出 0/1 的需求,實在是扎實的邁進了一大步。

這堂課佔據了自己碩一下大部分時間,基本上有一段時間真的是眼睛睜開,除了修課或開會這種必要行程,其他時間都是在寫這堂課的作業。

從一開始很堅持要手刻每一行 Code,到後來時間不夠開始找先人的作業開始 Trace 並嘗試理解。最後的體悟是其實有些 code 寫得很乾淨,用 Trace 學習法還真的不見得會學得比自己手刻來的少。

最後附上自己的 Github (連結),給之後需要的學弟妹參考。

敬,那些為了 OSC 熬夜的無數個夜晚。

--

--

楊智堯 ( Kevin Yang )

從電商及科技業務跳船的資訊研究生|期許在不同領域激起的浪花點綴成最美的一副人生圖。嘗試讓文字承載一些能量, 讓這世界或自己都因分享而更加勇敢。LinkedIn: https://www.linkedin.com/in/yangchihyao/