go schedule

208 阅读1分钟

GPM模型

G: 运行栈

保存运行时环境信息

P: 逻辑processor,(全局变量,控制实际运行的M数量)

控制实际正在运行的M数量

M: 系统线程,实际processor

执行G,执行前必须先绑定一个P(maxP-1),释放P(maxP+1)
处于g0(调度栈) / g(G栈)

调度(非抢占式)

主动让出
系统调用
栈扩张(函数调用)

sysmon

gc
标记抢占执行时间过长的P
抢占sys过长的P