动机两方面:
- 优化go程序免不了要了解一些实现细节,能看到的资源太零散(大牛可能觉得太简单?)。
- go代码并不多,go.15 基本go实现,好读。但是和任何的应用代码相比,其各个方面细节都更加的分散,需要综合。一次读明白,记录清楚,一劳永逸。
一些系统底层,理解不够深入,希望不影响整体理解:
- 系统和汇编层面理解有限,这里只关注 linux_amd64。
- 编译器相关, 结合代码 + 注释 + 反汇编,尽力而为。
很久没写这么多字,可读性差些,完善中。
整理主要出于自学目的,看代码如破案,不断发现和分析线索,独有一番乐趣。有人愿意看当然欢迎,道行和精力都有限,疏漏和不足请看官请不吝赐教。
内容 完成度(%):
注: 80% 可能就会暂时停下,先求贯通整体。
- 包依赖关系
- goroutine
- asm, stack and syscall 80%
- stack增长 50%
- goroutine 80%
- runtime自己的同步 80%
- schedule: overview 80 %
- schedule: park 60%
- schedule: timer 80%
- schedule: sync, chan 50%
- schedule: netpoll() 80%
- schedule: schedule(),sysmon() 80%
- startup 10%
- [panic/defer]
- [signal]
- mallocgc
- escape: stack or heap? 70%
- [静态看布局]
- [malloc/free]
- [gc]
- [memprof]
- 结构
4. map 6. refect - cgo
- 编译器和工具链