--- title: fcu-D0812998(楊鈞安) categories: User ... # 簡介 * 國立成功大學 電腦與通信工程研究所 * GitHub: [`fcu-D0812998`](https://github.com/fcu-D0812998) * HackMD: [`楊鈞安`](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q) # 2025 Linux 核心設計/實作 春季班 自我評量 ## 第一項、成果發表和貢獻 無。 評分: 我為自己打 4 分,雖然沒有能夠對教材提出貢獻,但在後期老師分配給我的問題我都有詳細的去觀看教材與私訊老師問題的解法,雖然最後未能做到完整,希望暑假能利用空閒時間,將不足的地方補齊。 ## 第二項、作業/隨堂測驗 * [2025q1 Homework1 (lab0)](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/HkaOSod9Jl) * [2025q1 Homework2 (quiz1+2)](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/SJrhETTsJl) * [2025q1 Homework3 (kxo)](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/H1pC3B6yle) * [2025q1 Homework4 (quiz3+4)](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/ByiIZCEMlg) * [2025q1 Homework5 (assessment)](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/BJJv1avgex) 評分: 我為自己打 9 分,每份作業我都有去觀看作業上給的教材與撰寫程式碼,都有盡力去寫,儘管不是每份作業都有完成到每個要求,但我認為我在每個作業當中都有學到東西,也投入了相當程度的時間。 Homework1 : 學會了以雙向鏈結串列為基礎的 queue 操作(如插入、刪除、反轉、排序、隨機洗牌),並學會如何利用工具檢驗時間複雜度、安全性、記憶體正確性與效能,最後與 Linux 核心的 list_sort 實作比較,並且學到了如何撰寫符合規範、清楚表達變更內容的 commit 訊息。 Homework2 : 透過指標的指標,學會了如何以最佳化且簡潔的寫法實作單/雙向鏈結串列、BST 刪除、以及多種記憶體分配器。 Homework3 : 這份作業讓我學到如何運用 coroutine 機制與 kernel & user space 分工,實現低成本、高效的事件驅動式輸入與顯示,並透過資料壓縮與適當的設計減少 kernel 與 user 間的通訊開銷。 Homework4 : 未完成。 Homework5 : 紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發,並記錄 dcache hash function 的問題。 ## 第三項、期末專題 Linux 核心專題: 統計學和資訊安全 [HackMD](https://hackmd.io/@sysprog/Skxv0AVEll#Linux-%E6%A0%B8%E5%BF%83%E5%B0%88%E9%A1%8C-%E7%B5%B1%E8%A8%88%E5%AD%B8%E5%92%8C%E8%B3%87%E8%A8%8A%E5%AE%89%E5%85%A8)/[GitHub](https://github.com/fcu-D0812998/chaos_reproduce) 回答教材中針對統計學有關的問題,且討論 ASLR 的限制,並透過 KVM 實作函式等級的位址隨機化。 評分: 我為自己打 7 分,老師針對 Homework5 我所記錄的問題去分派專題題目給我,起初我是對 KVM 一竅不知,透過老師 KVM 教材一步一步地去架設虛擬環境,但這也花了比我預想還要多的時間,最後虛擬機還是無法從 host 端去利用 virtfs 技術去做掛載,但我還是有將邏輯層面的程式碼先撰寫完成,後續再去思考如何解決虛擬機那端的問題,並將我寫好的程式碼加上動態效果加入進去再去做效能分析。 ## 第四項、與授課教師的互動 一對一紀錄 [HackMD](https://hackmd.io/@L6feNY6KRiG0zkBW-s4w0Q/ryLWnyvMel) 與授課教師「一對一討論」的時間為 2024/5/30 15:30-16:00。 評分: 我為自己打 7 分,在討論當中老師詢問我很多統計學的問題,連最基本的 uniform 的定義都無法答出來,沒有學過統計學不是不會的藉口,因為不管在資料結構或是其他資訊工程系的課程中,都會提到有關統計學的東西,在這次討論中我深刻體悟到自己的問題,要了解一個問題所在,要先分析它的基本原理才能有效率的去解決問題。 ## 第五項、 所見所聞所感 評分: 我為自己打 10 分,在課程初期非常期待的加入這堂課程,每周都花了大量時間去做學習,但當卡住時都會去參閱別的同學的方法,就會有一種感覺是,為甚麼他能想到這個方法?而到後面時間不足時,才發現自己的實力是多麼明顯的不足,連基本的60分都沒有達到,而某些同學都可以做完大部分的作業並對教材做出貢獻,為甚麼我們都好手好腳,卻無法做到相同的程度。 回顧自身在本課程的投入狀況: 深知自己實力不如人,我在學習初期投入大量時間去做程式碼撰寫與教材研讀,而中間卻有一段時間怠惰下來,導致前期閱讀的教材有些忘記,作業也積了不少,在最後一個月才在趕,雖然沒有實做出來,但我都會記錄下來去詢問老師或同學,也可以從相對應教材去找到我的問題解答。在課程中除了學習 linux 核心之外,也學到了如何養成良好撰寫 commit message 的習慣,一個好的 commit message 能夠讓其他開發者能夠了解改動的意義,也可以讓開發流程清楚明瞭。 ## 自我總評量得分 自我總評量得分為 **8** 分。 * GEOMEAN : $\sqrt[5]{4*9*7*7*10} = 7.06$ * 方案 B:$1+\lfloor 7.06 \rfloor=8$