2025q1 Homework3 (kxo)
contributed by < gnkuan0712
>
作業書寫規範:
- 無論標題和內文中,中文和英文字元之間要有空白字元 (對排版和文字搜尋有利)
- 文字訊息 (尤其是程式執行結果) 請避免用圖片來表示,否則不好搜尋和分類
- 共筆書寫請考慮到日後協作,避免過多的個人色彩,用詞儘量中性
- 不要在筆記內加入
[TOC]
: 筆記左上方已有 Table of Contents (TOC) 功能,不需要畫蛇添足
- 不要變更預設的 CSS 也不要加入任何佈景主題: 這是「開發紀錄」,用於評分和接受同儕的檢閱
- 當在筆記中貼入程式碼時,避免非必要的行號,也就是該手動將
c=
或 cpp=
變更為 c
或 cpp
。行號只在後續討論明確需要行號時,才要出現,否則維持精簡的展現。可留意「你所不知道的 C 語言: linked list 和非連續記憶體」裡頭程式碼展現的方式
- HackMD 不是讓你張貼完整程式碼的地方,GitHub 才是!因此你在開發紀錄只該列出關鍵程式碼 (善用
diff
標示),可附上對應 GitHub commit 的超連結,列出程式碼是為了「檢討」和「便於他人參與討論」
- 留意科技詞彙的使用,請參見「資訊科技詞彙翻譯」及「詞彙對照表」
- 不要濫用
:::info
, :::success
, :::warning
等標示,儘量用清晰的文字書寫。:::danger
則僅限授課教師作為批注使用
- 避免過多的中英文混用,已有明確翻譯詞彙者,例如「鏈結串列」(linked list) 和「佇列」(queue),就使用該中文詞彙,英文則留給變數名稱、人名,或者缺乏通用翻譯詞彙的場景
- 在中文敘述中,使用全形標點符號,例如該用「,」,而非 ","。注意書名號的使用,即
〈
和 〉
,非「小於」和「大於」符號
- 避免使用不必要的 emoji 字元
作業說明
背景知識學習
- Mutex verse Semaphore
- 避免依賴 lock, 考慮使用 Atomics
- Atomics一個操作,要就整個完成,要就完全不做,中間不會被其他執行緒插隊或中斷。
- 比如atomic_fetch_add()
- 第九周測驗、第十周測驗
開發環境
作業要求
執行命令
- 編譯:
make
- 載入 kxo module:
sudo insmod kxo.ko
- 執行:
sudo ./xo-user
- 卸載模組:
sudo rmmod kxo
- 查看核心訊息:
sudo dmesg
- 離開:
ctrl + q
- 上傳
sudo git add .
- 若遇到權限問題導致無法pull
sudo chown -R $(whoami):$(whoami) .
專案架構
kfifo
算是kernal space 和 user space 的橋樑(?) kernal space產生的資料會放在這裡面傳遞給user space
第一個想解決的問題:
想把畫面呈現這部份從 kernal space 移到 kernal space,進而降低多餘傳送的 workload 和區分行為,參考該 Commit 43dc5ba
- 原本棋盤畫出來是透過在 kernal space 的
draw_buffer
傳遞出來,然後傳遞出來的內容除了data之外還有畫格子的那些邊線等等
- 所以僅把
table[i]
放入 draw_buffer[i]
效能分析
在 kxo_release
最後加入下面這一行:
可得到:
總共節省了
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
的資料傳遞。
Simrupt
學習方向:
- 模擬 interrupt 的東西 ?
- Top Halves versus Bottom Halves
降低核心和使用者層級之間的通訊成本