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

padaray (陳浩文)

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

  • 簡介:國立成功大學電機所 114 級
  • GitHub: padaray
  • HackMD: padaray

成果發表與貢獻

閱讀文件時做的錯字修訂:

作業與隨堂測驗

  • lab0: GitHub / HackMD

    完成 C 語言佇列實作和改進,實作和驗證 Fisher–Yates shuffle 演算法,研讀 lib/list_sort.c

  • quiz1 + 2: HackMD

  • quiz3 + 4: HackMD

  • Assessment: HackMD

    閱讀〈因為自動飲料機而延畢的那一年〉,研讀課程教材和 CS:APP 3/e

  • Integration: HackMD

    運作基本的 linux 核心模組

期末專題

vcam: HackMD / GitHub / Youtube

了解 V4L2 框架、Framebuffer、vcam 程式碼,在 Linux 6.8 版本成功運行 vcam

與授課教師的互動

一對一討論:5月 20日 (星期一)⋅下午6:30 - 7:00

  • 並行程式設計:排程器原理-問題討論:coroutine 的機制存在,會不會取代 preemptive 機制

  • Linux 核心的紅黑樹-問題討論: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\)