--- title: 2023 年「Linux 核心」暑期課程 image: https://i.imgur.com/E8mSVOa.png description: 著重於排程器、Linux 核心模組開發、多核和現代處理器、同步機制,和系統呼叫 tags: linux2023 --- # [2023 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2023-summer)課程 > 全程免費線上課程! 探討最新 Linux 核心技術! > 主講人: [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) ![](https://hackmd.io/_uploads/Hk0EtQfj2.png) ## 說明 [2023 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2023-summer)課程著重於排程器、Linux 核心模組開發、多核和現代處理器、同步機制、scalability,和系統呼叫等議題,希望能引導學員在探索 Linux 核心技術的道路上,得以邁開踏實且堅定的步伐。 ## 注意事項 1. 全程免費、不用報名![2023 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2023-summer)課程大部分教材 (含解說錄影) 可公開存取 * 部分教材會在學員提交作業並獲得授課教師認同後,才會發放,詳見 8 月 4 日晚間解說 * 課程直播採用 [YouTube](https://youtube.com/c/GUTS4Tech/live),線上討論採用 Google Meet,記得刷新本頁面以取得最新資訊 2. 繳交作業的學員會收到《Concurrency Primer》和《Demystifying the Linux CPU Scheduler》這二本 **尚未公開釋出** 的電子書草稿,暑期課程會引導學員研讀,並針對學員的疑惑和建議,予以答覆,歡迎學員改進電子書內容 3. 請善用 [Facebook: 系統軟體系列課程討論區](https://www.facebook.com/groups/system.software2023) 提問,私人議題則請發訊息到[授課教師的 Facebook 粉絲專頁](https://www.facebook.com/JservFans) 4. 歡迎在校生、社會人士,和 Linux 技術同好參加本課程 ## 進度表 > :warning: 下方表格會依據 Linux 技術發展、學員背景和程式設計掌握度、教材修訂,動態調整課程進度,請留意本頁面的更動。可參照 [HackMD: 訂閱筆記更改通知](https://hackmd.io/c/tutorials-tw/%2Fs%2Fhow-to-manage-notification-tw),訂閱本頁面的變更 | 時段 | 課程進度 | |:---------------------:|:----------------:| | 8 月 4 日 20:00-23:00 <br> $\to$ [錄影](https://youtu.be/AuPStbaM1cY) | [課程介紹和須知](https://docs.google.com/presentation/d/18NyCeeaf7YhB49dK_wO03jnDaYB-s-NWrfixdhIvZd8/edit?usp=sharing); [資訊科技詞彙翻譯](https://hackmd.io/@sysprog/it-vocabulary) <br> [C 語言程式設計](https://hackmd.io/@sysprog/c-programming): [C-rusted](https://arxiv.org/abs/2302.05331), [alignment](https://hackmd.io/@sysprog/c-memory), [container_of](https://hackmd.io/@sysprog/linux-macro-containerof), [list](https://hackmd.io/@sysprog/c-linked-list), [hashtable](https://hackmd.io/@sysprog/linux-hashtable), [rbtree](https://hackmd.io/@sysprog/linux-rbtree), [minmax](https://hackmd.io/@sysprog/linux-macro-minmax); <br> [作業系統術語及概念](https://hackmd.io/@sysprog/linux-concepts); <br> [檔案系統](https://hackmd.io/@sysprog/linux-file-system): [timerfd](https://hackmd.io/@sysprog/linux-timerfd), [userfaultfd](https://man7.org/linux/man-pages/man2/userfaultfd.2.html) + [slides](https://www.linux-kvm.org/images/1/10/01Wed-1415-LinuxCON-aarcangeli-userfaultfd.pdf); <br> :information_source: [第 1 份作業](https://hackmd.io/@sysprog/linux2023-summer-quiz0) 已指派,應於 8 月 13 日前繳交 | | 8 月 7 日 19:30-22:30 <br> $\to$ [錄影](https://youtu.be/RbLJKpQvfug) | [Vim](https://www.vim.org/) 的作者 [Bram Moolenaar](https://en.wikipedia.org/wiki/Bram_Moolenaar) (1961 – Aug 3, 2023) 呼籲人們幫助烏干達的貧困兒童並身體力行,樹立程式開發者的榜樣。 <br> [Linux 發展動態回顧](https://hackmd.io/@sysprog/linux-dev-review); [Process](https://hackmd.io/@sysprog/linux-process); [系統呼叫](https://hackmd.io/@sysprog/linux-syscall) $\to$ [barco](https://github.com/lucavallin/barco) ; <br> [現代處理器關鍵特徵](https://hackmd.io/@sysprog/cpu-basics), [多核處理器作業系統](https://wiki.csie.ncku.edu.tw/11-smp_os.pdf), [Cortex-A9 MPcore](http://wiki.csie.ncku.edu.tw/embedded/arm-smp-note.pdf); <br> [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency): [執行順序](https://hackmd.io/@sysprog/concurrency-ordering); <br> [RISC-V 處理器和系統模擬器](https://docs.google.com/presentation/d/10KhPgEBOkWT2jEBZBBPvX4cDYNRTWmmb29rXu-cikkk): [rv32emu](https://hackmd.io/@sysprog/Syh834lH3), [semu](https://hackmd.io/@sysprog/Skuw3dJB3) $\to$ 徵求協作者,建構小而美且高效的 RISC-V 系統模擬器,藉由 JIT/AOT 編譯快速執行 RV32/Linux | | 8 月 10 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2023-summer-quiz1)、[問題討論,檢討第 1 份作業](https://hackmd.io/@sysprog/SkmKiSfh2) <br> :information_source: [第 2 份作業](https://hackmd.io/@sysprog/r1mSqYPn3) 已指派,應於 8 月 25 日前繳交 | | 8 月 14 日 19:30-22:30 <br> $\to$ [錄影](https://youtu.be/vQlLHo8XGXg) | 使用 [tokei](https://github.com/XAMPPRocky/tokei) 統計 Linux 6.5-rc6<sup>2023 年 8 月 13 日發布</sup>: 76541 個檔案,原始程式碼合計 36.2M 行<sup>扣除程式碼註解和空白行,則有 27.3M 行</sup> <br> :information_source: 授課教師會依據[第 1 份作業](https://hackmd.io/@sysprog/linux2023-summer-quiz0)的繳交狀況,在 8 月 15 日中午前發送《Demystifying the Linux CPU Scheduler》書稿<sup>若屆時你未收到,請繼續進行「[第 1 份作業](https://hackmd.io/@sysprog/linux2023-summer-quiz0)」並在所有延伸問題**充分**完成後,發訊息到[授課教師的 Facebook 粉絲專頁](https://www.facebook.com/JservFans),提及你的 GitHub 帳號</sup> <br> [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency): [執行順序](https://hackmd.io/@sysprog/concurrency-ordering), [Atomics 操作](https://hackmd.io/@sysprog/concurrency-atomics), [POSIX Threads](https://hackmd.io/@sysprog/posix-threads), [PThread 實作](https://hackmd.io/@sysprog/concurrency-thread-package), [Ring buffer](https://hackmd.io/@sysprog/concurrency-ringbuffer); <br> [OSDI'23 論文](https://www.ptt.cc/bbs/Gossiping/M.1689707284.A.6C7.html); [The Linux Kernel Module Programming Guide](https://github.com/sysprog21/lkmpg): mutex, spinlock, rwlock, atomics; [Linux 核心同步機制](https://hackmd.io/@sysprog/linux-sync), [多核處理器](https://hackmd.io/@sysprog/multicore-locks), [排程器](https://hackmd.io/@sysprog/linux-scheduler) | | 8 月 17 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2023-summer-quiz2); [問題討論 + 作業解說](https://hackmd.io/6FOQGjztRx29BnDt2OnzSw?view) | | 8 月 21 日 19:30-22:30 <br> $\to$ [錄影](https://youtu.be/MkurPTelggE) | :information_source: [第 2 份作業](https://hackmd.io/@sysprog/r1mSqYPn3)截止日調整為 8 月 25 日 <br> [C and C++ Prioritize Performance over Correctness](https://research.swtch.com/ub) <br> [Concurrency Bugs](http://wiki.csie.ncku.edu.tw/linux/concurrency-bugs.pdf); [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency): [Lock-free](https://hackmd.io/@sysprog/concurrency-lockfree), [Hazard pointer](https://hackmd.io/@sysprog/concurrency-hazard-pointer), [RCU](https://hackmd.io/@sysprog/linux-rcu) | | 8 月 26 日 | :warning: 指派[第 3 次作業](https://hackmd.io/@sysprog/linux2023-summer-quiz3),請提交到[作業區](https://hackmd.io/@sysprog/S1zfQwD62) <br> 截止日期:不限 (越早提交,授課教師越早批改和討論),預計九月安排作業檢討的線上講座 | | 8 月 28 日 19:30-22:30 <br> $\to$ [錄影](https://youtu.be/JydlVeiHMkw) | [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency): [RCU](https://hackmd.io/@sysprog/linux-rcu), [What Has RCU Done Lately? (2023)](https://hackmd.io/@cccccs100203/So-What-Has-RCU-Done-Lately), [userspace RCU](https://hackmd.io/@sysprog/ry_6RHgS3); <br> [Linux 核心搶佔](https://hackmd.io/@sysprog/linux-preempt), [排程器](https://hackmd.io/@sysprog/linux-scheduler), 電子書: Demystifying the Linux CPU Scheduler; [中斷處理](https://hackmd.io/@sysprog/linux-interrupt), ; | | 8 月 30 日 19:30-22:30 <br> $\to$ [錄影](https://youtu.be/sW8ZqDwutpQ) | 電子書: Demystifying the Linux CPU Scheduler; [Timer](https://hackmd.io/@sysprog/linux-timer) <br> [針對事件驅動的 I/O 模型演化](https://hackmd.io/@sysprog/linux-io-model) | | 9 月 4 日 19:30-22:30 $\to$ [錄影](https://youtu.be/ObChhK03vNo) | [Linux scability](https://hackmd.io/@sysprog/linux-scalability), [KVM](https://hackmd.io/@sysprog/linux-kvm) |