# linux2025-homework3 contributed by < `JimmyChongz` > :::danger 注意書寫規範! ::: ## ksort ### 閱讀 LKMPG #### 嘗試插入 Hello World Module 到 Kernel - 確認 Linux 核心版本 ```bash $ uname -r ``` > 輸出 `6.8.0-52-generic` - 安裝 `linux-headers` header files for the kernel ```bash $ sudo apt install linux-headers-`uname -r` ``` - 確認 `linux-headers` 套件已正確安裝於開發環境 ```bash $ dpkg -L linux-headers-`uname -r` | grep "/lib/modules" ``` > 預期輸出 ```bash /lib/modules /lib/modules/6.8.0-52-generic /lib/modules/6.8.0-52-generic/build ``` - 安裝後續會用得到的工具 ```bash $ sudo apt install util-linux strace gnuplot-nox ``` - 檢驗目前與 sudo 的使用者身份 ```bash $ whoami ``` ```bash $ sudo whoami ``` > 輸出 ```bash jimmy@NEAT:~/linux2025$ whoami jimmy jimmy@NEAT:~/linux2025$ sudo whoami root ``` - Create Hello World Module :::spoiler 程式碼 ```c /* * hello-1.c - The simplest kernel module. */ #include <linux/module.h> /* Needed by all modules */ #include <linux/printk.h> /* Needed for pr_info() */ int init_module(void) { pr_info("Hello world 1.\n"); /* A non 0 return means init_module failed; module can't be loaded. */ return 0; } void cleanup_module(void) { pr_info("Goodbye world 1.\n"); } MODULE_LICENSE("GPL"); ``` ::: ## kxo ### Linux kernel Interrupt #### 為什麼要將中斷分成「Top half」跟「bottom half」? 將必須立即處理的緊急任務與可以延後處理的非緊急任務分開,從而避免中斷處理占用過多 CPU 時間,影響系統性能。 ### main.c > 主要遊戲引擎 ### game.c > 遊戲邏輯的核心功能,主要用於檢查遊戲的勝負狀態、計算勝利的分數,以及提供合法的移動選項。 ### mcts.c > 實作**蒙地卡羅演算法** ### negamax.c > 實現基於 **Negamax 演算法** 的遊戲 AI ## How to evaluate cost of communication between kernel and user ? ## 縮減 kernel 與 user 的通訊成本 :::danger 說好的進度呢? :::