Try   HackMD

linux2025-homework3

contributed by < JimmyChongz >

注意書寫規範!

ksort

閱讀 LKMPG

嘗試插入 Hello World Module 到 Kernel

  • 確認 Linux 核心版本
$ uname -r

輸出 6.8.0-52-generic

  • 安裝 linux-headers header files for the kernel
$ sudo apt install linux-headers-`uname -r`
  • 確認 linux-headers 套件已正確安裝於開發環境
$ dpkg -L linux-headers-`uname -r` | grep "/lib/modules"

預期輸出

/lib/modules
/lib/modules/6.8.0-52-generic
/lib/modules/6.8.0-52-generic/build
  • 安裝後續會用得到的工具
$ sudo apt install util-linux strace gnuplot-nox
  • 檢驗目前與 sudo 的使用者身份
$ whoami
$ sudo whoami

輸出

jimmy@NEAT:~/linux2025$ whoami
jimmy
jimmy@NEAT:~/linux2025$ sudo whoami
root
  • Create Hello World Module
程式碼
/* 
 * 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 的通訊成本

說好的進度呢?