pthread – Multi-thread 程式設計

pthread 是 POSIX 下的執行緒標準,針對 thread 的建立與操作定義一系列的 API 。

而且在 Windows 環境下,則有 3rd-party 透過 Windows API 實現的 pthreads-win32 ,對於要開發誇平台的軟體, pthread 就會是開發 multi-thread 時的首選。

閱讀全文〈pthread – Multi-thread 程式設計〉

淺談 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 – 陪你刷題〉