目的: 檢驗學員對並行程式設計和 CS:APP 第 9 章的認知
作答表單: 測驗 1 (針對 Linux 核心「設計」課程)
作答表單: 測驗 2 (針對 Linux 核心「實作」課程)
1
以下程式碼依據論文〈Lock-Free Linked Lists and Skip Lists〉,嘗試實作 non-blocking singly-linked list,參見 gist,新增和刪除的操作建立在一個 key 值唯一且由小到大排序的鏈結串列。已知測試程式碼不會遇到任何 assert 錯誤。
Thoughput 及 Scability 隨著執行緒數量的增加而提升。
請補完程式碼,使其運作符合預期。作答規範:
AAAA
為 enum identifierBBBB
, CCCC
, DDDD
為表示式,請以最精簡的 C11 程式碼撰寫,不包含小括號 (即 (
和 )
)延伸問題:
2
以下嘗試運用 CS:APP 第 9 章 提到的 mmap(2) 撰寫簡易的記憶體配置器,編譯和測試:
參考執行輸出:
程式碼可見 alloc (部分遮蔽),已知測試程式碼不會遇到任何 assert 錯誤。
請補完程式碼,使其運作符合預期。作答規範:
AAAA
為 identifierBBBB
和 CCCC
為表示式,請以最精簡的 C11 程式碼撰寫,不包含小括號 (即 (
和 )
)對照:
延伸閱讀:
mmap-malloc 支援多執行緒