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

I-Ying-Tsai (蔡譯潁)

簡介

  • 國立成功大學 數學系 115 級 (2022 ~ 2025)
  • GitHub: I-Ying-Tsai
  • HackMD: DX3906

2025 Linux 核心設計 春季班 自我評量

成果發表和貢獻

  • 修正了 lkmpg 專案的文法錯誤

評分 : \(2\) 分。

作業/隨堂測驗

評分 : \(7\) 分。

學期初到學期中我花了許多時間去讀懂這些作業並試著完成老師的要求,一開始對於 bitwise 操作甚至是一些像是指標的指標操作是無法讀懂的,但在深入實做作業以及隨堂測驗後,目前我遇到一段完全不認識的程式碼時(裡面可能包含了抽象的 bitwise 操作或是一些複雜的指標操作),雖然可能無法馬上讀懂,但只需要理解幾分鐘後,我就能充分掌握它們的思想,這也是我在學期前半段花最多時間以及獲得我認為同等回報的一部分。接著到學期中,我將時間花在了讀懂老師的 kxo 專案,因為在讀懂之前我沒有辦法對程式碼進行更動,裡面包括下棋的演算法中的數學推導以及實做方式、如何產生高品質的亂數、撰寫核心模組等等。接著我根據作業要求移植了繪製棋盤到 user space ,並改寫核心模組完成了與 kernel space 的溝通。但我許多細節其實並沒有寫好,僅提出想法但尚未實做,於是給自己三分的空間去將它們補上。

期末專題

評分 : \(6\) 分。

這次的期末專題我將大部分的時間都花在了查閱手冊以及理解架構上,因為在讀完老師的 Atomic 操作的教材後,我本來想著要先了解我的硬體裡是如何應用這些理論以及架構如何設計。但如果我需要掌握像是 pipeline 如何被設計,我就會需要往下去了解一大堆東西,像是 ROB Entry 的實做方式以及功用等等,即使花了一堆時間,我仍然沒有對每個使用到的東西都去翻閱其他開源專案的實做程式碼(因為 Arm 不公開這些)。原因是因為我還需要進行 LKMM 的實驗,不過因為之前的手冊查閱以及架構理解,我在進行實驗的時候可以相對快地就掌握案例的問題點。但我並未將其中一件事情做到完美,於是給自己六分。

與授課教師的互動

  • 一對一討論: 5/16
  • 課堂討論: 2/25, 4/22

我這學期主動與授課教師的互動偏少,主要是在專題題目的討論、教材閱讀以及數學推導的部份。

  • 證明了 Taylor 展開的餘項表達
  • 證明並估計泰勒展開的誤差上界
  • 分析中點對數逼近法的精度與運算成本
  • 釐清 MCS spinlock 中的自旋與指標語意
  • 分析 memory barrier 的必要性與使用時機

評分 : \(5\) 分。

所見所聞所感

評分 : \(9\) 分。

一開始選擇這門課程的理由非常單純,就是聽到朋友們說這門課非常難,於是便選了這門課程。一開始在我想像中的課程,可能會是有很多像是抽象的思考、複雜的運算等等很艱難才能觸碰到的東西,但在接觸了作業一和小考我才發現並非如此,並非只有那些很難想像的事物才被稱作困難,平常我們認為理所當然或是覺得非常簡單的東西,其背後的細節是被忽略的,而這就像老師說的:「只有能將它實做出來才是懂了。」,這個道理我在這門課學到的其中一個最大的體悟,我從前的學習方法都是只汲取想法並探討原理,但並未想過將它真正地實現出一個能讓其他人也用它的作品,即使之前因為興趣也會去探討其中像是 CNN 背後的數學原理,但也僅只於此,我對當中的專有名詞認識度很低、難以和其他人有有效得溝通,以及雖然我過去讀完原理後用 C 寫了一個 CNN ,但我抱持著我只是個學生,效果比那些專業開發者開發的工具差很多也是應該的,而完全忽略了當中的細節,導致做了很多垃圾出來。

閱讀〈因為自動飲料機而延畢的那一年〉中,作者用親身經歷揭示了從 0 到 1 開發產品時所必須面對的現實挑戰與成長曲線。最令我印象深刻的是,理想與現實之間的落差:在腦中模擬的設計往往很完美,然而當真正動手製作、接觸市場時,才會意識到現實世界的複雜性遠超過想像。這樣的經歷,讓人明白「了解現實世界的需求」是工程與創業成功的關鍵第一步。只有親自從零開發一項解決問題的產品,才能真正掌握它的全部細節、理解它的不足,也才有可能創造出屬於團隊的專業技術價值。於是我發覺我過去那種以為在腦中模擬完就認為已經完全掌握的想法真的很可笑。

在這門課中我原本期許我到最後能夠提交一些 patch 到一些開源的大專案上,但因為基本功不夠紮實,以及遇到問題喜歡自己到處碰壁的原因,我花費了許多時間在搞懂一些我以為我高中就會的東西,只能看著身邊更厲害、更注重細節的同儕們陸續提交 patch 到一些開源大專案上。不過今後我也會試著與黃老師繼續聯繫,試著尋找有沒有能為這個世界做出貢獻的地方。

自我評量 (1 ~ 10)

  • \(\text{GEOMEAN} = (2 \times 7 \times 6 \times 5 \times 9) ^ {1/5} \approx 5.2\)
  • 方案 B : \(1 + \text{floor}(\text{GEOMEAN}) = 6\)