分享到plurk 分享到twitter 分享到facebook

yuyuan0625 (陳宥沅)

簡介

Linux 核心設計/實作 (Spring 2024) 自我評量

1. 成果發表和貢獻:

我沒有對 Linux 核心和相關專案有貢獻,僅有在閱讀教材時發現格式錯誤並作修訂: Linux 核心設計: RCU 同步機制

自我評分: 6分

2. 作業/隨堂測驗:

在作業的部分我在 lab0-c 和測驗共筆作業上完成度較高,其他時間多用於閱讀課程教材,總體而言我認為我所付出的時間和努力有符合預期。透過每周的隨堂測驗讓我學習到許多實作上的技巧,如 bitwise 操作常常能降低程式的執行成本。

自我評分: 8分

3. 期末專題:

在期末專題中,介紹 RCU 的背景概念和常用 API,接著探討 Userspace RCU 的相關原理以及五種實作方式的差異、優缺點和應用場景,最後參考和重現 2023 年專題: RCU 研究中的實驗,並使用 pref 分析實驗結果。

自我評分: 8分

4. 與授課教師的互動:

  • 一對一討論: 5/16 上午11:30 - 下午12:00

在一對一討論中,我向授課老師請教: 「futex 可用於實作使用者空間之同步機制,而且相較於 pthread mutex 每次都需要進行系統呼叫調用來的更節省資源,為何不全面使用 futex 呢?」老師解答 pthread 是一個標準, futex 為 Linux 特有的實作方式,並且點出我的學習問題、提醒我在思考問題不要一味的想要做表格統整資料,要先理解相關背景才能融會貫通。最後也訂定期末專題的題目為 Userspace RCU 的相關研究,並且在討論完後開始著手進行。

自我評分: 9分

5. 所見所聞所感:

閱讀〈因為自動飲料機而延畢的那一年〉的啟發,作者在大學畢業前自行研發自動飲料機,途中就是不斷的遇到問題並且需要在有限的資源、設備之下解決。令我印相深刻的是 Jserv 告訴作者:「青春很貴,你也知道實習會發生什麼事,公司不會指派重要的工作給你,他們只會指派低風險的工作,你學習到的東西並不會比你現在多。你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」我們在大學甚至研究所時期幾乎都只有應付學校中大大小小的考試和期末專題,從來沒有真正的解決生活周遭的事情,缺乏解決問題的能力。 在這學期的「Linux 核心實作」課程中,我學到了許多細節但影響重大的技術,其中讓我印象深刻的是浮點數運算、bitwise操作、並行程式這幾個章節,這些都是在實作面常常被忽略但又對於程式性能有重大影響技術。

自我評分: 9分

6. 實驗室指導教授的學習回顧:

  • 二月份學習回顧: 3月6日 週三 下午10:54
  • 三月份學習回顧: 4月14日 週日 下午2:39
  • 五月份學習回顧: 6月22日 週六 下午4:22

二月回顧信提到 git commit message 對於多人協作的重要性以及使用 HackMD 紀錄問題對於同儕互相觀摩、討論的好處;三月回顧信介紹了編譯器和最佳化原理如何應用於實驗室相關程式;五月回顧信則分享 RCU 同步機制的思維並回報期末專題的執行狀況。另外每個月都會在實驗室會議的時候和指導教授回報課堂的學習狀況和實驗室計畫的進度,讓指導教授充分了解我的學習狀況。

自我評分: 9分

7. 1~6幾何平均分數:

  • GEOMEAN:\(\sqrt[6]{6*8*8*9*9*9}=8.08\)
  • 方案 B:\(1+\lfloor 8.08 \rfloor=9\)