淺談 linux kernel module

kernel module

又稱 Loadable Kernel Module(LKM)

  • linux 採用 monolithic (單核心)架構,即 OS 大部分的功能都在 kernel 中實現,例如 process management, memory management 或 process scheduler 等等,這些功能都在 kernel space 下運行。與之相反的則是 microkernel (微核心)架構,僅將 OS 最基本的功能實作在 kernel 內部,其他大部份功能都則在 user space 下運作, microkernel 的設計的優點在於其可移植性與擴展性。

閱讀全文〈淺談 linux kernel module〉

Topological Sort – 陪你刷題

如何辨識 Topological 類型題目?

1. 給你一組資料,資料之間存在先後關係(例如:元素 A 一定要先於元素 B),要你排出所有資料的線性排序。 具體的應用就是課程檔修,想要修資料結構,一定要先修過基礎程式設計。
2. 要你找出有向圖 (dirceted graph) 中是否存在 cycle 。

Leetcode 邁向千題的關卡,想要把所有題目刷過一遍,對於一位上班族來說就跟寫出來的程式沒有 bug 一樣困難,因此想要將刷題常用的觀念技巧與其對應題目整理出來,一方面可以整理自己思緒,也可以做為未來複習用。
這系列文章會一直持續下去,算是作為工程師職涯的隨身裝備。

如何辨識 Topological 類型題目

  1. 資料間的先後關係:給你一組資料,資料之間存在先後關係(例如:元素 A 一定要先於元素 B),要你排出所有資料的線性排序。 具體的應用就是課程檔修,想要修資料結構,一定要先修過基礎程式設計。
  2. 找出有向圖中的 cycle:如果圖中存在環 (cycle),則無法成功進行 topological sort。這是因為環中的元素無法確定一個線性的先後順序。

閱讀全文〈Topological Sort – 陪你刷題〉

CS:APP 學習筆記

CS:APP 全名為 Computer Systems: A Programmer’s Perspective,是 CMU 計算機概論課程的教材。
根據 jserv 老師的說法,這們課等同台灣研究所課程的難度,希望大家認真讀這本教材後,能夠有國外頂尖大學大二學生的程度。隨著電腦科技發展日新月異,最基礎的學科仍舊是所有新技術的根基,與其不斷追求新技術,不如好好打穩根基,因此決定研讀這本教科書,搭配 CMU 的課程講義與影片,還有 jserv 老師的補充資料一同學習,期許自己能夠對資訊科技有扎實的基礎。

共筆連結

我將筆記寫於 hackmd ,方便所有朋友發現任何錯誤都可以直接修正,我也同步把筆記發表於 CS:APP Taiwan study group ,歡迎一起來讀書討論!

CH2 Presentation and Maipulating Information

(推薦必讀,對於程式碼會有更深刻的認知!)
共筆連結

CH3 Machine-level Representation of Programs

共筆連結

CH7 Linking

共筆連結

參考資料

  1. CS:APP 學習指引緒論
  2. CMU 15-213