--- title: padaray (陳浩文) categories: User ... ## 2024 Linux 核心設計 春季班 自我評量 * 簡介:國立成功大學電機所 114 級 * GitHub: [padaray](https://github.com/padaray) * HackMD: [padaray](https://hackmd.io/@padaray) ### 成果發表與貢獻 閱讀文件時做的錯字修訂: * [虛擬攝影機裝置驅動程式](https://hackmd.io/@sysprog/rJEhcgoSn) : 訪問->存取、接口->介面、內存->記憶體 ### 作業與隨堂測驗 * lab0: [GitHub](https://github.com/padaray/lab0-c) / [HackMD](https://hackmd.io/@padaray/linux2024-homework1) 完成 C 語言佇列實作和改進,實作和驗證 Fisher–Yates shuffle 演算法,研讀 lib/list_sort.c * quiz1 + 2: [HackMD](https://hackmd.io/@padaray/linux2024-homework2) * quiz3 + 4: [HackMD](https://hackmd.io/@padaray/linux2024-homework4) * Assessment: [HackMD](https://hackmd.io/@padaray/linux2024-homework5) 閱讀〈因為自動飲料機而延畢的那一年〉,研讀課程教材和 CS:APP 3/e * Integration: [HackMD](https://hackmd.io/@padaray/linux2024-integration) 運作基本的 linux 核心模組 ### 期末專題 vcam: [HackMD](https://hackmd.io/@sysprog/ByzkF6xDA) / [GitHub](https://github.com/padaray/vcam) / [Youtube](https://youtu.be/OVUKaIWNOFA) 了解 V4L2 框架、Framebuffer、vcam 程式碼,在 Linux 6.8 版本成功運行 vcam ### 與授課教師的互動 一對一討論:5月 20日 (星期一)⋅下午6:30 - 7:00 * [並行程式設計:排程器原理](https://hackmd.io/@sysprog/concurrency-sched)-問題討論:coroutine 的機制存在,會不會取代 preemptive 機制 * [Linux 核心的紅黑樹](https://hackmd.io/@sysprog/linux-rbtree)-問題討論:AVL tree 和 rbtree 樹高分別是 1.44 × log⁡(𝑛+2) 和 2 × log(𝑛+1) ,1.44 和 2 這兩個常數如何計算而來 * CS:APP 3/e-問題討論:UTF-8 的編碼方式 ### 修課心得 課程的一開始著重在 C 語言資料結構,第一份作業實作 lab-0 時,我就在思考這堂課不是叫做 Linux Kernel 實作嗎,一直寫 C 也沒搞懂甚麼是 Linux Kernel,直到作業六 - Integration 進入核心掛載才對 Kernel 框架有了大致的了解,但也在這時才知道當初課程著重在 C 語言技術的原因,Kernel 框架是由 C 語言技術堆疊而成的,若一開始直接從 Kernel 框架下去看而不熟悉 C 語言,在理解程式碼時就會處處碰壁,讓挫敗感很重。 在學期的開始,老師就有說這是一堂需要花費大量時間的課程,每週至少要花特定時數,因為需要閱讀大量的文件,在學期初較不忙時,還能看完文件後再完成作業要求,但來到作業四時,沒有時間閱讀文件只能先完成作業,這是我要檢討的地方,沒有分配好時間造成學習效果不好。 在這堂課體悟最多是在閱讀 CS:APP 3/e,本來對於讀規格相關的書籍我會感到很無趣,但經過這學期閱讀文件的經驗,我反而能靜下心來好好閱讀,且對這本書的內容感到有興趣,我認為這對以後開發需閱讀文件很有幫助。另外閱讀〈因為自動飲料機而延畢的那一年〉也很有感悟,在修課的過程中不免有想放棄的念頭,畢竟只能盡力完成作業而沒時間看文件,作業完成度也不夠高,讓我感到相當挫折,甚至有了期中退選的想法。但看完這篇文章讓我有了繼續下去的動力。作者在過程中遇到問題都是想著解決問題,而不是放棄,我也因此想向他看齊,盡力修完這門課。 ### 與指導教授的學習回顧 * 二月回顧:3月8日 週五 下午8:53 1. circular doubly linked list 的實作中遇到的問題 2. 學習 git commit 撰寫 * 三月回顧:4月8日 週一 下午9:26 1. 補全作業 1 的驗證亂數 2. graphviz 視覺化程式碼 3. Valgrind 記憶體管理工具 * 五月回顧: 6月27日 周四 早上8:00 1. 閱讀 因為自動飲料機而延畢的那一年 2. 閱讀 CS:APP 3/e ### 自我評量 $(3 \times 7 \times 6 \times 7 \times 8 \times 7) ^ {1/6} = 6.06$ 使用方案 B 計分:$1 + floor(6.06) = 7$