Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

431 lines (385 sloc) 12.2 KB

目录

引言

第一部分: 基础

第一章 程序基础

第二章 并行、并发与分布式计算

第三章 排队与调度理论

第四章 内存管理工程

  • 内存屏障技术
    • 三色不变性原理
      • 强、弱不变性
      • 赋值器的颜色
      • 新分配对象的颜色
    • 赋值器屏障技术
      • 灰色赋值器的 Dijkstra 插入屏障
      • 黑色赋值器的 Yuasa 删除屏障
    • 进一步阅读的参考文献
  • 垃圾回收统一理论

第五章 Go 程序生命周期

  • 5.1 程序引导
    • 入口
    • 引导
    • 总结
    • 进一步阅读的参考文献
  • 5.2 初始化概览
    • CPU 相关信息的初始化
    • 运行时算法初始化
    • 模块链接初始化
    • 核心组件的初始化
    • 总结
  • 5.3 主 goroutine
    • 概览
    • pkg.init 顺序
    • 何去何从?

第二部分:运行时机制

第六章 调度器

  • 6.1 基本结构
    • 工作线程的暂止和复始
    • 主要结构
      • M 的结构
      • P 的结构
      • G 的结构
      • 调度器 sched 的结构
    • 总结
    • 进一步阅读的参考文献
  • 6.2 调度器初始化
    • M 的初始化
    • P 的初始化
    • G 的初始化
      • 一些细节
    • 总结
  • 6.3 调度循环
    • 执行前的准备
      • mstart 和 mstart1
      • M 与 P 的绑定
      • M 的暂止和复始
    • 核心调度
      • 偷取工作
      • M 的唤醒
      • M 的创生
        • 系统线程的创建 (darwin)
        • 系统线程的创建 (linux)
      • M/G 解绑
      • M 的死亡
    • 总结
    • 进一步阅读的参考文献
  • 6.4 线程管理
    • LockOSThread
    • UnlockOSThread
    • lockedg/lockedm 与调度循环
    • 模板线程
    • 总结
    • 进一步阅读的参考文献
  • 6.5 信号处理机制
    • 信号与软中断
    • 初始化
    • 获取原始信号屏蔽字
    • 初始化信号栈
    • 初始化信号屏蔽字
    • 信号处理
    • Extra M
    • 总结
    • 进一步阅读的参考文献
  • 6.6 执行栈管理
    • goroutine 栈结构
    • 执行栈初始化
    • G 的创生
    • 执行栈的分配
      • 小栈分配
      • 大栈分配
      • 堆上分配
    • 执行栈的伸缩
      • 分段标记
      • 栈的扩张
      • 栈的拷贝
      • 栈的收缩
    • 总结
  • 6.7 协作与抢占
    • 协作式调度
      • 主动用户让权: Gosched
      • 主动调度弃权: 栈扩张与抢占标记
      • 被动监控弃权: 阻塞监控
    • 抢占式调度
    • 总结
    • 进一步阅读的参考文献
  • 6.8 运行时同步原语
    • 运行时通知机制 note
      • 结构
      • 注册通知
      • 发送通知
      • 清除通知
    • 运行时互斥量机制 mutex
      • 结构
      • lock
      • unlock
    • 运行时信号量机制 semaphore
      • sudog 缓存
      • 基于 goroutine 抽象的信号量
    • 总结
    • 进一步阅读的参考文献
  • 6.9 系统监控
    • 监控循环
    • 总结
  • 6.10 过去、现在与未来
    • 演进史
      • 单线程版调度器
      • 多线程版调度器
      • 工作窃取调度器
    • 改进展望:非均匀访存感知的调度器设计
    • 总结
    • 进一步阅读的参考文献
  • 6.11 用户层 APIs

第七章 内存分配器

第八章 垃圾回收器

第九章 调试

第十章 兼容与契约

第三部分:编译系统

第十一章 关键字与类型系统

第十二章 泛型

  • [12.1 泛型的历史及其演化]
  • [12.2 泛型的实现]

第十三章 模块链接器

第十四章 编译器

第四部分:标准库

第十五章 错误处理

第十六章 sync 与 atomic 包

  • 16.1 sync.Pool
    • 底层结构
    • Get
    • Put
    • 偷取细节
      • pin 和 pinSlow
      • getSlow
    • 缓存的回收
    • poolChain
      • poolChain 的 popHead, pushHead 和 popTail
      • poolDequeue 的 popHead, pushHead popTail
    • noCopy
    • 总结
    • 进一步阅读的参考文献
  • 16.2 sync.Once
  • 16.3 sync.Map
    • 结构
    • Store
    • Load
    • Delete
    • Range
    • LoadOrStore
    • 总结
  • 16.4 sync.WaitGroup
    • 结构
    • Add/Done
    • Wait
  • 16.5 sync.Mutex
  • 16.6 sync.Cond
    • 结构
    • copyChecker
    • Wait/Signal/Broadcast
    • notifyList
  • 16.7 sync/atomic.*
    • 公共包方法
      • atomic.Value
      • atomic.CompareAndSwapPointer
    • 运行时实现
    • 原子操作的内存模型
    • 进一步阅读的参考文献

第十七章 其他

结束语

参考文献

附录

You can’t perform that action at this time.