专题简介程序员
本专题以精心设计的情景为线索,结合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语言核心编程技术