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

popo8712 (陳乃宇)

簡介

  • 國立成功大學 智慧資訊安全碩士學位學程

  • GitHub: popo8712

  • HackMD: popo8712

2024 Linux 核心實作 春季班 自我評量

一、成果發表和貢獻

評分:我為自己打 7 分,雖然沒有對 Linux 核心進行重大貢獻,只有在閱讀過程中找到一些文字上的小瑕疵,但我積極參與了課程中的每一次討論和實作。學習了誠實面對自己的重要性及各種開發工具,也學習到 linked list、C 語言的 bitwise 操作、數值系統和動態記憶體管理,深入理解了 u8/u16/u32/u64 型態。在課程中逐步掌握系統呼叫、排程器原理、核心模組及同步機制,並學習了現代處理器的記憶體管理機制,使我對 Linux 核心有了進一步的理解,並在實作中不斷鞏固所學知識,期望未來的自己能在開源中提出更多貢獻。

二、作業/隨堂測驗

評分:我為自己打 9 分,儘管我的知識不足,使得每個步驟都遇到困難,但我依然認真地做每份作業,並全力以赴。或許不是每個部分都達到了老師的要求,但每個面向我都細心且認真摸索,仍學到不少東西。

三、期末專題

評分:我為自己打 8 分,這項專題包含了非常多的知識內容,對於基本功非常不扎實的我,非常有幫助,透過閱讀許多文件、實作,向其他同學請教實作問題,多次的打掉重練並進行測試,雖然最終的結果不理想,但我非常努力地投入這項專題並盡最大的努力,也越來越熟悉使用這些工具,多了很多啟發,期待接下來繼續耕耘。

題目:重做 lab0 HackMD/GitHub

  • 影片(請看此就好) 6/30, 00:00上傳
  • 影片(有浮水印) 6/29上傳
  • 解釋 Linux 核心的 list_sort 並評估 (動手做實驗比較) 效能,要考慮到 merge sort 最差的狀況:https://hackmd.io/3e8LI8_0SLOo_UTDAnPKYQ
  • web server 的強化,特別留意 linenoise 的整合 (coroutine)
    • 嘗試改進 coroutine,可善用之後課程提及的基礎建設
    • 需要量化分析網頁伺服器的表現
  • 記憶體佔用狀況的分析: valgrind, massif => 要能夠反映到 merge * sort 用 recursive 與否的影響
  • git rebase 使用
  • 統計模型的理論探討

四、與授課教師的互動

評分:我為自己打 9 分,在討論過程中老師有問我 Four-Way Handshake 大致上是如何運作的,但其實老師是要問我 Three-Way Handshake,並告訴我說之後去職場上面試也有可能會遇到這種陷阱題,給了我震撼教育,因為我就算覺得怪怪的,還是會認為面試官說的關鍵字會是正確的。老師也有問我 Linux 核心的 list_sort 遞迴與否,該如何避免遞迴,以及為何要避免遞迴,這些問題我卻連關鍵字都答不太上來,平常不習慣求證的填鴨式教育所體現的結果在此把我打的體無完膚。很多事情就是由這些基礎、細節來搭蓋起地基的,應求甚解,才能擁有能力去創造更多事物。

與授課教師「一對一討論」的時間: 2024/4/29 20:00。 2024/7/4 20:00。

五、 所見所聞所感

評分:我給自己 10 分。

閱後心得:

作者在放棄平台項目後,決定開發自動飲料機,並在過程中遇到許多挑戰,如 3D 打印精度不足、冰斗設計問題及糖流速緩慢等。透過不斷試驗、調整設計,並向他人請教,最終找到解決方案。這段經歷讓我深刻體會到作者面對困難時的不放棄精神和解決問題的毅力,特別是在解決冰塊分配問題時的堅持,給人以深刻啟發。正如與 Jserv 老師的對話中提到的,面對困難應學會承受和處理,而不是逃避,這一點在 Linux 核心實作中尤為重要。作者的經歷反映了堅持和努力的重要性,激勵了我繼續前行。 這篇文章也讓我思考到自己的學習過程中也經常遇到瓶頸。特別是在學習 Linux 核心實作的過程中,總是覺得自己的能力不足,甚至萌生過放棄的念頭。然而,閱讀作者的經歷讓我明白,逃避並不能解決問題,只有面對挑戰,努力解決問題才能真正進步。而《鋼之鍊金術師》中提到的「等價交換」原則,要得到什麼就必須付出同等的代價。老師和作者都沒有放棄,我也不應該放棄自己。 此外,我也反思到其他方面的事情。比如在工作中,我們經常面臨新的挑戰和問題,解決這些問題需要持續的學習和適應。正如作者在開發自動飲料機時所展示的精神一樣,只有通過不斷的試驗和改進,才能找到最佳解決方案。這種精神不僅適用於技術開發,也適用於生活中的方方面面。我們需要學會承受壓力,迎難而上,才能在困難中找到成長的機會。

  • 回顧自身在本課程的投入狀況:

回顧自己在這門課程中的投入狀況,大學就讀企管系的我是連 github 都未曾使用過的人,知道自己有很多地方都需要加強,因此每週我都投入了至少 20 個小時的時間來學習和實作。雖然過程中遇到了許多困難和挑戰,特別是在理解複雜的概念和完成實作任務時,我經常感到壓力和疲憊,但這一切都讓我感受到課程內容的充實和重要性。儘管成效有時未達到預期,我依然堅持不懈地努力,希望能通過不斷的學習和實踐來提升自己的能力和知識水平。畢竟如果放棄了就真的什麼也沒有了,我也不想失去成長的機會。這堂課也讓我認識到了研究跟實作的嚴謹程度,需要考量到多面向,是非常需要學習的。

六、發給實驗室指導教授的學習回顧

評分:我為自己打 8 分,儘管我並非每個月都有寄信向指導教授匯報學習回顧,但在實驗室的進度會議中,以及私底下與指導教授討論研究的工具及方法,都會將 Linux 核心實作所學知識拿出來和教授分享,並討論若加入到研究中是否可行。因此教授也算是了解我在 Linux 核心實作課程中的投入,希望通過這樣的回顧,能讓指導教授更全面地了解我的學習進展,並給予我更多的建議和指導。

五月份回顧發信時間為 2024/6/27 15:50。

自我評量

  • GEOMEAN = \((7*9*8*9*10*8)^{1/6}\) ≒ 8.45
  • 方案 B: 1 + floor(GEOMEAN) ≒ 9