--- title: 2021 年「Linux 核心」暑期課程 image: https://i.imgur.com/E8mSVOa.png description: 延伸 2021 年春季「Linux 核心設計」課程,著重於排程器、Linux 核心模組開發、多核和現代處理器、同步機制,和系統呼叫 tags: linux2021 --- # [2021 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2021-summer)課程 > 免費線上課程! 探討最新 Linux 核心技術! 報名時需要通過[先決測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz) ![](https://i.imgur.com/GwNTDsO.png) ## 說明 在 [COSCUP 2021](https://coscup.org/2021/) 研討會中,[jserv](http://wiki.csie.ncku.edu.tw/User/jserv) 和學生預計以 "[Let's Publish a Collaborative e-Book for Linux Kernel](https://coscup.org/2021/zh-TW/session/W8WLDX)" 為題發表演說,揭露最近編撰的 Linux 核心電子書,目的是兼顧開放授權的自由流通和透過訂閱制獲得部分盈利,後者將全數投入 Linux 核心教材的改進。[2021 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2021-summer)課程延伸春季「[Linux 核心設計](http://wiki.csie.ncku.edu.tw/linux/schedule)」課程,著重於排程器、Linux 核心模組開發、多核和現代處理器、同步機制,和系統呼叫等議題,搭配前述編撰的 Linux 核心電子書,希望能引導學員在探索 Linux 核心技術的道路上,得以邁開踏實且堅定的步伐。 ## 注意事項 1. [2021 年暑期「Linux 核心」](https://hackmd.io/@sysprog/linux2021-summer)課程大部分教材 (含解說錄影) 可公開存取 (因此就算報名失敗,也可免費學習,不過無法存取完整資源),但顧及教學資源,課程要求報名者先通過 ==[先決測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz)== (7 月 18 日 23:00 報名截止,名額依據作答表現排序) 才能完成報名 * 因為授課教師會**逐一批改作業**和針對學員的學習狀況**進行一對一討論**,若不限制名額,實在難以進行 2. 提交 ==[先決測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz)== 者最遲會在 7 月 19 日 11:00AM 前收到確認信件,建議及早提交,這樣授課教師尚可針對提交的答覆進行課前討論 3. 報名成功的學員會收到《[The Linux Kernel Module Programming Guide](https://github.com/sysprog21/lkmpg)》和《Linux Kernel Scheduler Internals》這二本電子書的草稿 (尚未公開釋出),暑期課程會引導學員研讀,並針對學員的疑惑和建議,予以答覆,甚至改進電子書內容 4. 請善用 [Facebook: 系統軟體系列課程討論區](https://www.facebook.com/groups/system.software2021) 提問,私人議題則請發訊息到[授課教師的 Facebook 粉絲專頁](https://www.facebook.com/JservFans) 5. 歡迎在校生、社會人士,和 Linux 技術同好參加本課程 6. 暑期「Linux 核心」課程安排在 ==晚間== 進行,已和 [AIS3 新型態資安暑期課程](https://ais3.org/) 時段錯開,請有意報名者不用擔心 ## 進度表 > 下方表格會依據 Linux 技術發展、學員背景和程式設計掌握度 (這也是為何有[先決測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz))、教材修訂,動態調整課程進度,請留意本頁面的更動。可參照 [HackMD: 訂閱筆記更改通知](https://hackmd.io/c/tutorials-tw/%2Fs%2Fhow-to-manage-notification-tw),訂閱本頁面的變更 | 時段 | 課程進度 | |:---------------------:|:----------------:| | 7 月 20 日 19:30-22:30 | [作業系統術語及概念](https://hackmd.io/@sysprog/linux-concepts), [Linux發展動態回顧](https://hackmd.io/@sysprog/linux-dev-review); [Process](https://hackmd.io/@sysprog/linux-process), [排程器](https://hackmd.io/@sysprog/linux-scheduler), [系統呼叫](https://hackmd.io/@sysprog/linux-syscall); 電子書: [The Linux Kernel Module Programming Guide](https://github.com/sysprog21/lkmpg), Linux Kernel Scheduler Internals | | 7 月 23 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz1)、問題討論,[第 1 份作業](https://hackmd.io/@sysprog/linux2021-summer-homework1) | | 7 月 27 日 19:30-22:30 | [Concurrency Bugs](http://wiki.csie.ncku.edu.tw/linux/concurrency-bugs.pdf), [現代處理器關鍵特徵](https://hackmd.io/@sysprog/cpu-basics), [多核處理器](https://hackmd.io/@sysprog/multicore-locks), [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency), [Linux 核心同步機制](https://hackmd.io/@sysprog/linux-sync) | | 7 月 30 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz2)、問題討論,作業解說,[第 2 份作業](https://hackmd.io/@sysprog/linux2021-summer-homework2) | | 8 月 3 日 19:30-22:30 | [Atomics 操作](https://hackmd.io/@sysprog/concurrency-atomics), 電子書: [The Linux Kernel Module Programming Guide](https://github.com/sysprog21/lkmpg) (mutex, spinlock, rwlock, atomics), Linux Kernel Scheduler Internals; [中斷處理](https://hackmd.io/@sysprog/linux-interrupt), [Timer](https://hackmd.io/@sysprog/linux-timer); [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency) | | 8 月 6 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz3),問題討論,作業解說 | | 8 月 10 日 19:30-22:30 | [Atomics 操作和案例分析](https://hackmd.io/@sysprog/concurrency-atomics); [裝置驅動程式案例: vcam](https://hackmd.io/@WayneLin1992/vcam); [檔案系統](https://hackmd.io/@sysprog/linux-file-system): Everything is a file descriptor; [事件驅動 I/O 模型](https://hackmd.io/@sysprog/fast-web-server), [kHTTPd](https://hackmd.io/@sysprog/linux2020-khttpd), [事件驅動伺服器:原理和實例](https://hackmd.io/@sysprog/event-driven-server), [timerfd](https://hackmd.io/@sysprog/linux-timerfd)/eventfd, [以 sendfile/splice 達到 Zero-Copy](https://hackmd.io/@sysprog/linux2020-zerocopy), [io_uring](https://en.wikipedia.org/wiki/Io_uring) | | 8 月 13 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz4)、問題討論,[第 3 份作業](https://hackmd.io/@sysprog/linux2021-summer-homework3) | | 8 月 17 日 19:30-22:30 | [Facebook 討論區回顧](https://m.facebook.com/groups/system.software2021), [coroutine](https://hackmd.io/@sysprog/coroutine), Linux Kernel Scheduler Internals (CFS), [並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency): lock-free, [RCU 同步機制](https://hackmd.io/@sysprog/linux-rcu) | | 8 月 20 日 20:00-21:30 | [隨堂測驗](https://hackmd.io/@sysprog/linux2021-summer-quiz5)、問題討論,作業解說 | | 8 月 24 日 19:30-22:30 | [RCU 同步機制](https://hackmd.io/@sysprog/linux-rcu); [io_uring](https://hackmd.io/@sysprog/iouring); 電子書 Linux Kernel Scheduler Internals: Ftrace; [Tracing With Ftrace: Critical Tooling For Linux Development](https://www.linuxfoundation.org/webinars/tracefs-the-building-blocks-of-linux-kernel-tracing-by-ftrace/); [eBPF](https://hackmd.io/@sysprog/linux-ebpf) | | 8 月 31 日 19:30-22:30 | [Facebook 討論區回顧](https://m.facebook.com/groups/system.software2021); [Linux 核心搶佔](https://hackmd.io/@sysprog/linux-preempt); [Arm 處理器架構](https://beta.hackfoldr.org/arm/); [從 big.LITTLE 到 EAS](https://hackmd.io/@sysprog/big-little), [Energy Aware Scheduling](https://hackmd.io/@Daichou/ByzK-S60E); [Scalability 議題](https://hackmd.io/@sysprog/linux-scalability); | | 9 月 3 日 20:00-21:30 | 隨堂測驗、RCU 進階,作業回顧 |