---
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 進階,作業回顧 |