# 第 7, 8 週課堂問答簡記 :::warning 線上討論: [https://meet.google.com/ean-rqef-zik](https://meet.google.com/ean-rqef-zik) (使用 Google Meet 時,請關閉 YouTube) ::: ## Eddielin0926 [quiz4](https://hackmd.io/@eddielin0926/2022q1-quiz4) * 在 [sched.h](https://github.com/torvalds/linux/blob/5bfc75d92efd494db37f5c4c173d3639d4772966/include/asm-generic/bitops/sched.h) 中看到 `ffs` 的應用 * TODO: bitmap 到底在 scheduler 中如何使用? ## steven1lung [quiz4](https://hackmd.io/@steven1lung/linux2022-quiz4) * 從[最早的 commit](https://github.com/torvalds/linux/commit/e506ea451254ab17e0bf918ca36232fec2a9b10c) 去看,是將 `READ_ONCE` 跟 `WRITE_ONCE` 從 `linux/compiler.h` 移走,直接寫在一個新檔案 rwonce.h 裡。這樣是為了之後讓不同的微處理器架構去定義實作自己的 `READ_ONCE` 巨集 ## sternacht [quiz4](https://hackmd.io/@sternacht09/H1jHtVNGc) * `ACCESS_ONCE` 巨集的定義 ## ganoliz [quiz4](https://hackmd.io/@ganoliz/Linux2022q1_quiz4) * user-level thread 示意圖 ## Kevin-Shih [quiz4](https://hackmd.io/@Kevin-Shih/linux2022q1-quiz4) * [kernel/sched/fair.c](https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c#L196) 程式碼片段中有出現類似的形式 `1 + ilog2(cpus)` ,用於一段更新一些 `tunable parameters` 的函數,其中一種 policy 採用與 cpu 數量成對數關係的預測方式 * TODO: 搭配 Linux CPU 排程器書籍提到的 sysctl_sched_min_granularity 來探討 ## kevinshieh0225 [quiz4](https://hackmd.io/@Masamaloka/linux2022-quiz4) ## ccs100203 [quiz4](https://hackmd.io/@cccccs100203/linux2022-quiz4) * `ACCESS_ONCE` 巨集的定義 ## bakudr18 [quiz4](https://hackmd.io/@bakudr18/r1b8zzCbc) * coroutine * `READ_ONCE` 巨集的考量 [quiz3](https://hackmd.io/@bakudr18/SkvYGt1-c) ## qwe661234 [fibdrv](https://hackmd.io/@qwe661234/linux2022q1-homework3) ## LJP-TW [fibdrv](https://hackmd.io/@LJP/Byjtmukf9) ## kdnvt [fibdrv](https://hackmd.io/@kdnvt/fibdrv) ## kevinshieh0225 [fibdrv](https://hackmd.io/@Masamaloka/linux2022-quiz3) ## yaohwang99 [fibdrv](https://hackmd.io/@yaohwang99/linux2022-fibdrv) ## freshLiver [quiz4](https://hackmd.io/@freshLiver/linux2022q1-hw4-quiz) * 若存在比 fls 還要快速的實作方式,就會使用對應的 ilog 方式處理,例如在 `arch/x86/include/asm/bitops.h` 就用 `BSLR` 指令 * Intel64 與 AMD64 的 BSR 指令在 x 為 0 時會有不同的表現 ## laneser [quiz2](https://hackmd.io/@laneser/linux2022-quiz2) ## tinyynoob [quiz2](https://hackmd.io/@tinyynoob/linux2022q1-quiz2) ## steven1lung [quiz2](https://hackmd.io/@steven1lung/SJAMABy-9) ## hankluo6 [quiz2](https://hackmd.io/@hankluo6/linux2022-quiz2)