# [2021q1](http://wiki.csie.ncku.edu.tw/linux/schedule) 第 18 週測驗題 ###### tags: `linux2021` :::info 目的: 檢驗學員對 ==[RCU 同步機制](https://hackmd.io/@sysprog/linux-rcu)==, lock-free 程式設計, concurrent linked list, thread-local storage (tls), atomics, SMP 的 [false-sharing](https://en.wikipedia.org/wiki/False_sharing) 的認知 ::: ==[作答表單](https://docs.google.com/forms/d/e/1FAIpQLSfJa6Ex5BbcxBpNyPbZK92rmAIGJ3dqdmNibdkGJ5quC_Kmjg/viewform)== ### 測驗 `1` 考慮二種 concurrent linked list 操作手法: - lock-based - lock-free 在 AMD Ryzen Threadripper 2990WX 32-Core Processor 上,參考的效能評比: - [ ] `bench-lock` * `982500` operations per second - [ ] `bench-lockfree` * `10771081` operations per second 原始程式碼: * [bench.h](https://gist.github.com/jserv/1789389f5bef5ccc37bb136396985ad8) * [bench.c](https://gist.github.com/jserv/ec8a5c39c668122aa1d7153002a1323a) * [lock.c](https://gist.github.com/jserv/dfe37e8aa6d21ed44877c7411cb042ac) * [lockfree.c](https://gist.github.com/jserv/51d483c32b67ec6f85948fa698a0324e) ==不完整== * [Makefile](https://gist.github.com/jserv/7b1acd1ef6ac3fc02136ded6848982a9) 執行 `make` 可建構出二個執行檔: `bench-lock` 和 `bench-lockfree` 請參照 [lock.c](https://gist.github.com/jserv/dfe37e8aa6d21ed44877c7411cb042ac) 的行為,補完 [lockfree.c](https://gist.github.com/jserv/51d483c32b67ec6f85948fa698a0324e) 程式碼,使得 `bench-lockfree` 執行符合預期,並不該遇到任何 assertion 錯誤。 ==作答區== XXX = ? (第 97 行) YYY = ? (第 288 行) ZZZ = ? (第 288 行) RRR = ? (第 489 行)