早鳥報名:《Linux內核鐵三角》之《進程調度》6節課

Linux的進程調度和內存管理是理解Linux的關鍵,如果這2個問題理不清,Linux的脈絡就打不通,很多問題就無法得到解釋。

這是宋老師《Linux內核鐵三角》的第一脈——《Linux的進程、線程以及調度》2020最新版,試圖解決進程的生命週期、調度算法、多核負載均衡、Linux實時性、cgroups等一系列的問題。

Linux內核鐵三角系列共包含:進程調度、內存管理、IO/文件系統三個系列。

大綱

本課程作爲《打通Linux脈絡系列》中的一個分系列,分成6個組成部分,每次課60-70分鐘。每次課後留下3~4個練習題,可以在答疑羣討論。

  • 第一部分深入徹底地搞清楚進程生命週期,進程生命週期創建、退出、停止,以及殭屍是個什麼意思;

  • 第二部分,深入分析進程創建的寫時拷貝技術、以及Linux的線程究竟是怎麼回事(爲什麼稱爲輕量級進程),此部分也會搞清楚進程0、進程1和託孤,以及睡眠時的等待隊列;

  • 第三部分,搞清楚Linux進程調度算法,不同的調度策略、實時性,完全公平調度算法;

  • 第四部分,搞清楚Linux多核下的CPU、中斷、軟負載均衡,Linux實時性問題,SCHED_DEADLINE調度算法

  • 第五部分,cgroups調度算法,自動cgroup,Android、docker、systemd對cgroup的應用以及cpuset cgroup。

  • 第六部分,深入解釋深度睡眠TASK_UNINTERRUPTIBLE、淺度睡眠TASK_INTERRUPTIBLE和TASK_KILLABLE,D狀態以及D狀態與系統負載的關係。

通過這4部分的學習,徹底理清Linux的進程、線程,弄清楚你寫的內核和應用程序在系統裏面究竟是如何跑,知其然,知其所以然。

 

針對人羣:Linux開發者以及其他對進程調度感興趣的開發者

指導老師:宋老師

上課時間:課程已經全部上線,無需等待

上課式:在線視頻,無限回看。課程羣討論答疑。

第一部分大綱

  1. Linux進程生命週期(就緒、運行、睡眠、停止、僵死)

  2. 殭屍是個什麼鬼?

  3. 殭屍可以被殺死的一個假象(全新內容)

  4. 停止狀態與作業控制,cpulimit

  5. 內存泄漏的真實含義

  6. task_struct以及task_struct之間的關係

  7. 初見fork和殭屍

練習題

  1. fork的例子

  2. life-period例子,觀察殭屍

  3. 用cpulimit控制CPU利用率

第二部分大綱

  1. fork、vfork、clone

  2. 寫時拷貝技術

  3. Linux線程的實現本質

  4. 進程0和進程1

  5. 進程的睡眠和等待隊列

  6. 孤兒進程的託孤,SUBREAPER

練習題

  1. fork、vfork、Copy-on-Write例子

  2. life-period例子,實驗體會託孤

  3. pthread_create例子,strace它

  4. 徹底看懂等待隊列的案例

第三部分大綱

1. CPU/IO消耗型進程

2. 吞吐率 vs. 響應

3. SCHED_FIFO、SCHED_RR

4. SCHED_NORMAL和CFS

5. nice、renice

6. chrt

練習題

  1. 運行2個高CPU利用率程序,調整他們的nice

  2. 用chrt把一個死循環程序調整爲SCHED_FIFO

  3. 閱讀ARM的big.LITTLE架構資料,並論述爲什麼ARM要這麼做?

第四部分大綱

  1. Linux Deadline調度器(全新內容)

  2. Linux爲什麼不是硬實時的

  3. preempt-rt對Linux實時性的改造

  4. 多核下負載均衡

  5. 中斷負載均衡、RPS軟中斷負載均衡

練習題

  1. 用taskset調整多線程依附的CPU

  2. cyclictest

  3. SCHED_DEADLINE案例

第五部分大綱

  1. 基於cpu cgroups進行CPU資源分配

  2. Linux的sched_autogroup(全新內容)

  3. 基於cpuset cgroups進行進程CPU綁定(全新內容)

  4. Docker和cgroups

  5. Systemd和cgroups(全新內容)

  6. Android對cgroups的利用

練習題

  1. 開啓和關閉sched_autogroup,關鍵CPU利用率情況;

  2. 創建和分羣CPU的cgroups,調整權重和quota;

  3. 利用cpuset cgroups,進行進程的CPU綁定

第六部分大綱

  1. 深度睡眠TASK_UNINTERRUPTIBLE和淺度睡眠TASK_INTERRUPTIBLE(全新內容)

  2. D狀態的意思是什麼?(全新內容)

  3. 爲什麼需要深度睡眠?(全新內容)

  4. TASK_KILLABLE(全新內容)

練習題

  1. 寫內核代碼,實踐TASK_UNINTERRUPTIBLE、TASK_INTERRUPTIBLE和TASK_KILLABLE

報名方法

蘋果和電腦用戶報名方法:


電腦瀏覽器訪問yomocode.com(不支持手機訪問),先點擊網站右上角圖標,微信掃碼登錄,然後在此鏈接報名:

https://yomocode.com/courses/18

(訪問該網址,也看免費試看一小節)

報名價格:

原價759元,現在報名仍享早鳥優惠價格:599

安卓手機用戶可點擊鏈接一鍵報名:


 點擊報名

也可微信一鍵試看免費小節:


 點擊試看

詳情也可掃描如下二維碼添加客服諮詢:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章