contributed by < POCHUN-CHEN >
fibdrv.c
存在著 DEFINE_MUTEX
, mutex_trylock
, mutex_init
, mutex_unlock
, mutex_destroy
等字樣,什麼場景中會需要呢?撰寫多執行緒的 userspace 程式來測試,觀察 Linux 核心模組若沒用到 mutex,到底會發生什麼問題。嘗試撰寫使用 POSIX Thread 的程式碼來確認。 搭配閱讀〈並行和多執行緒程式設計〉fork
以前,clone
老師的專案該怎麼辦?觀察 fibdrv.ko 核心模組在 Linux 核心掛載後的行為(要先透過 insmod 將模組載入核心後才會有下面的裝置檔案 /dev/fibonacci)
模組載入核心:
理想值為"0"
確保沒有未被釋放的內存貨資源。
當核心物件被創建時,其引用計數器初始化為1。每當代碼複製對核心物件的引用時,引用計數器就會增加。同樣地,當代碼釋放對核心物件的引用時,引用計數器就會減少。只有當引用計數器的值為0時,核心物件才會被完全釋放。
Reference counting是Linux kernel中非常重要的技術,因為它可以防止釋放未使用的內存和資源,從而增強了系統的穩定性和可靠性。
:::
應閱讀 Linux 核心的正式文件,第一手材料優先。
jserv
計算出最高位整數儲存,前面還有幾個沒有用到的 bit (前面有幾個 0)。
名稱 | 記憶體位置排序 |
---|---|
Big-Endian | 最高位 的位元組放在 最低 的記憶體位址上。 |
Little-Endian | 最高位 的位元組放在 最高 的記憶體位址上。 |