專題簡介程序員
本專題以精心設計的情景爲線索,結合go語言最新1.12版源代碼深刻細緻的分析了goroutine調度器實現原理。編程
適宜讀者小程序
專題目標微信
筆者但願即便是從未接觸過計算機底層原理的讀者,經過對本專欄的認真學習,均可以徹底掌握go語言調度器的實現原理及細節,從而能夠充分利用go調度器的特性寫出更加優秀的併發程序和解決一些與調度相關的疑難雜症;另外,讀者還能夠學到大量與程序運行相關的基礎知識,好比彙編代碼,CPU如何執行指令以及併發無鎖編程等等很是重要的編程內功心法,有了這些基礎理論,在從此的學習和工做中,讀者就徹底有能力對其它一些本身感興趣的底層實現原理作深刻的分析。併發
如何學習本專欄函數
編程是一門實踐性很強的技術,因此建議讀者在閱讀本專欄時多注重實踐練習,特別是在學習第一部分的彙編指令及函數調用棧等知識的時候,讀者能夠本身寫一些小程序而後用調試工具單步執行來跟蹤寄存器以及棧的變化,從而更好的理解這些內容。工具
專欄模塊學習
本專欄主要分爲兩大部分:spa
專欄章節(初稿已經所有完成,逐漸放上來)操作系統
開篇語
第一章 預備知識
1. CPU寄存器
2. 內存
3. 函數調用棧
4. 彙編指令
5. go語言彙編
6. 函數調用過程
7. 系統調用
8. 操做系統線程及調度
9. 線程本地存儲
第二章 初始化和調度循環
1. 調度器概述
2. 程序啓動和調度器初始化
3. 建立main goroutine
4. 啓動main goroutine
第三章 調度策略
1. goroutine的退出與調度循環
2. 再探schedule函數與尋找可運行的goroutine
3. 盜取goroutine與工做線程睡眠
第四章 被動調度
1. goroutine進入運行隊列
2. goroutine進入睡眠
3. 喚醒睡眠中的goroutine與工做線程
4. 建立工做線程
第五章 主動調度
1. 主動調度
第六章 搶佔調度
1. 搶佔運行時間過長的goroutine
2. goroutine進入系統調用以及從系統調用返回
3. 搶佔進入系統調用的goroutine
做者簡介
愛寫程序的阿波張,男,程序員,高級技術專家。
15年軟件開發經驗,作過應用層軟件,也玩過操做系統內核,目前專一於K12在線教育。
對計算機底層運行原理很感興趣,熟悉X86彙編/C/C++/Go。
最後,歡迎關注我的微信公衆號:go語言核心編程技術