版本 d75feeabd434a7e1dc00fd3523dedd5554a56429
Changes from beginning to d75feeabd434a7e1dc00fd3523dedd5554a56429
---
title: RealBigMickey (石維廉)
categories: User
...
# 簡介
* 國立成功大學 資訊工程學系 116 級 (2023 ~ 2027)
* GitHub: [`RealBigMickey`](https://github.com/RealBigMickey)
* HackMD: [`BigMickey`](https://hackmd.io/@BigMickeya)
* LinkedIn: [`William Stevens`](https://www.linkedin.com/in/william-stevens-twnz/)
# 2025 Linux 核心設計 春季班 自我評量
## 成果發表和貢獻
`我會給自己 6 分`
成果發表與貢獻,是我這學期最大的遺憾。雖然沒能提交 patch,但並不代表毫無貢獻。
- 本學期的期末專案可視為我去年打造之專案的「重生」。在正式開始前,我額外花了一整週重新檢討過去設計中的所有可能錯誤,並系統性地整理、列出,撰寫成一份 [HackMD 紀錄](https://hackmd.io/a8-1pGhKRn2ZxPF8Vout7Q) 作為改版依據。
- 期末專案中有不少同學提出有趣的問題,像是快取的改進面或是引進 partial read write 等,我積極回應同學們提出的想法與問題,深入研究,目前也正在陸續實作到系統中。
- 詳讀 《Demystifying the Linux CPU Scheduler》第七章 30 頁的內容進行詳細校閱,包括文法錯誤、語病與句構重組等。雖然後來老師表示這些修改大多已在我提出前修正,但我仍相信其中有不少內容在教材更新過程中可能被遺漏。我仍認為這段努力具有實質貢獻價值,特別是在理解與釐清內容上。
(以下與評分項目無關)
老實說,我在學期一開始就沒把「短期內做出貢獻」視為首要目標。比起抓些文法錯誤,我更希望能夠扎實建立起自己的基礎,讓未來的貢獻能夠站得穩、走得遠。與其貿然提交 patch,不如先確認自己真的理解系統的脈絡與設計哲學——會走路之後,再學飛也不遲。
目前我已報名下一屆的「RISC-V 晶心杯」,並正在研究我特別感興趣的領域,藏是 sched_ext 可插拔排程器框架,以及正在發展中的 Linux Switch 2 鍵值切換機制。我相信這些將會是我未來可以實際貢獻的方向。
## 作業/隨堂測驗
`我會給自己 10 分`
第一週開始前就略略看過課程教材,心中抱有期待參加這門課。從第一週起就把自己所有多餘的時間貢獻給 Linux 核心設計,每週平均預計至少30小時做作業或是閱讀教材,除了期中與期末少數幾週外從未鬆懈過。
- [2025q1 Homework1 (lab0)](https://hackmd.io/@BigMickey/linux2025-homework1)
- [2025q1 Homework2 (quiz1+2)](https://hackmd.io/@BigMickey/linux2025-homework2)
- [2025q1 Homerwork3 (kxo)](https://hackmd.io/@BigMickey/linux2025-homework3)
- [2025q1 Homework4 (quiz3+4)](https://hackmd.io/@BigMickey/linux2025-homework4)
- [2025q1 Homework5 (assessment)](https://hackmd.io/@BigMickey/linux2024-homework5)
其中,作業一是進步空間最大的一份,但因為是第一次嘗試許多從未接觸過的東西,我認為最後做到的成果,沒有對不起當時的努力。後續作業一次比一次進步且漸漸完整,作業三也有受到助教的稱讚,自己也滿意。最後與老師商量後決定放下 homework6 ,轉而投入開發期末專案。
## 期末專題
`我會給自己 10 分`
- [Linux 核心專題: 雲端檔案系統設計和實作](https://hackmd.io/@sysprog/BJH6UVXZle)
- [GitHub repository](https://github.com/RealBigMickey/DisFS)
DISFS 是我目前短暫的程式生涯中最大的專案。與傳統的 Linux 核心專案不同,DISFS 並非解決現有的問題,而是一個從無到有、帶有實驗性與創造性的設計與實做。它將檔案系統與看似毫無相關的 Discord 社交平台連結在一起,透過 FUSE (Filesystem in Userspace)、PostgreSQL 資料庫、http 與 Discord api,構建出一套完整的雲端檔案系統。
過程中學習各不同檔案系統(ext4, NTFS),理解了 FUSE 在 kernel space 與 user space 間的橋接角色,並實際操作多項系統呼叫與 VFS 介面,包括 cat, mv, ls, echo 等常用指令背後所對應的一連串操作流程、參數約定與錯誤處理機制。
最有趣的地方莫過於本地快取的限制與利用:如何在減少 Discord API 呼叫次數的同時,仍維持檔案系統的即時性與使用者體驗?如何在快取一致性與載入延遲之間取得平衡?我開始理解「系統設計」並非只是寫程式,更是關於資源管理、效能優化與行為預期的深度思考。
目前總共約 2000 行程式碼,完成的操作如下:
`{ .getattr .readdir .read .mkdir .open .release .create .write .truncate .unlink .rmdir .rename }`
我認為專案很有趣且概念不會很難理解,若有興趣建議看共筆中提供的介紹影片。
## 與授課教師的互動
`我會給自己 10 分`
- 2025-03-04 課堂問答
- 對 Linux 核心做出貢獻時,若找不到 Maintainer 或是 Maintainer 消極,乃至意見與 Maintainer 答不成共識時,該採取的行動。
- 延伸探討如何有效聯繫 Maintainer、無回應時時往上找的流程
- 2025-04-29 課堂問答
- 回頭看作業三 [kxo](https://hackmd.io/@sysprog/linux2025-kxo) 的設計與實作細節
- 探討 user-space 與 kernel-space 溝通之通訊成本、page size 差異與其背後的架構原理。
- NULL == (void *) 0 在核心中如何解讀
- 研究為何不同架構的 page size 不盡相同的原因
- 2025-05-15 一對一面談
- 約 3 小時,確切感覺到老師的真誠與熱情
- 被點出自己最大的問題,總是在尋找捷徑,從而略過細節而不扎實
- 被問了四個問題,後續花一週認真研究+紀錄,其中由 `e^x - 1 no FPU no libc` 實做最為印象深刻,有挑戰且有趣的實做+理論題,詳細過程: [2025 Linux 核心設計 一對一面談](https://hackmd.io/@BigMickey/LKD2025_one_on_one)
- 上述成果在 Github 第一週獲得了 6 個 git clone
- 2025-05-27 課後一對一面談
- 約 1 小時
- 談期末專案方向
- review 一對一做出來的研究成果,執行時間結果圖表與老師預期不同
- 2025-06-10 課後一對一面談
- 約 1 小時多
- 檢討 DISFS 前身作品 Discord Clouding 種種問題
- 談期末專案實做的可行性
- 給予更多意見與鼓勵
- 學期間不間斷的與助教保持聯繫,討論每次作業與期末專案,獲得許多即時的回饋
## 所見所聞所感
`我會給自己 10 分`
起初在選這堂課時其實是猶豫不決的。
我不像系上那些 coding 強者,早早就踏入資訊領域,一切是從大學才開始的,一步一腳印、腳踏實地學習。當時大二剛修完資料結構,種種核心課程都還沒修,`e.g. 機率與統計、計算機組織、作業系統、演算法`等等,連 Markdown 都不會,不禁懷疑自己會不會還不夠資格。
學期結束回頭看,確實是段吃力的旅程。 面對自己的不足,才發現原來自己如此渺小。當初為了學習而退掉必修,諷刺的是,最大的挑戰也來自「學習」本身。每次面對的是全新的概念、新的工具,新的系統,被炸的體無完膚。但也正因如此,我從起初盲人摸象,到後來逐漸能加快閱讀教材的速度、理解課堂內容,看到自己慢慢有進步,那份成就與喜悅是藏不住的。因為這個莽撞的決定而成長,累積起來的東西不會背叛自己。
與老師的一對一中,也感悟許多,不只是因為講到期末專案,更是些故事像是台文系學生後來去台大資工所,或是 500 萬的 6 頁 pdf 等。當時老師講了一句留下深刻的印象:「我的知識是拿來解決問題的,但有些人的知識只是拿來取得分數的,之後就不再往前走了。」
課堂中另一個讓我印象深刻的是〈自動販賣機而延畢的那一年〉,講述一位交大的學生為了天馬行空而延畢故事,勵志之中也帶著一絲辛酸。我一直很崇拜那些能被熱誠吞噬、為理想燃燒殆盡的人。也在想,有沒有那麼一天,我也能成為那樣的人?星空中不一定會有流星,但如果一直低著頭,就一定看不見。
未來充滿著未知,但這學期的經歷,已深深烙印在我心上。透過數據、論點與邏輯,去解決「真實世界的問題」,這樣的學習過程讓我著迷。接下來的路上,我希望能繼續碰到 Linux,繼續變強!最後,想引用 Jserv 老師在第一堂課說過、我非常喜歡的一句話作結:「就算跌倒,也要抓一把沙。」
## 自我評量 (1 ~ 10):
$GEOMEAN = ( 6 \times 10 \times 10 \times 10 \times 10 )^{1/5} = 9.028804514$
方案 B :$1 + floor(GEOMEAN) = 1 + 9 = 10$