golang runtime 简析

本文介绍了Go Runtime的核心功能,包括协程调度、垃圾回收和内存分配。重点讨论了GPM调度模型,三色标记法的垃圾回收机制,以及Tcmalloc内存分配算法。Go的协程通过GPM模型实现高效并发,垃圾回收使用三色标记法减少STW时间,内存分配借鉴了Tcmalloc以降低锁的粒度。
摘要由CSDN通过智能技术生成

Go Runtime 的总览

golang 的 runtime 在 golang 中的地位类似于 Java 的虚拟机,不过 go runtime 不是虚拟机. golang 程序生成可执行文件在指定平台上即可运行,效率很高, 它和 c/c++ 一样编译出来的是二进制可执行文件. 我们知道运行 golang 的程序并不需要主机安装有类似 Java 虚拟机之类的东西,那是因为在编译时,golang 会将 runtime 部分代码链接进去.

golang 的 runtime 核心功能包括以下内容:

  • 协程(goroutine)调度(并发调度模型)
  • 垃圾回收(GC)
  • 内存分配
  • 使得 golang 可以支持如 pprof、trace、race 的检测
  • 支持 golang 的内置类型 channel、map、slice、string等的实现
  • 等等

下图 1 是 golang 程序、runtime、可执行文件与操作系统之间的关系. 区别于 Java 需要安装虚拟机,go 语言的可执行文件已经包含了 golang 的 runtime,它为用户的 go 程序提供协程调度、内存分配、垃圾回收等功能.此外还会与系统内核进行交互,从而真正的利用好 CPU 等资源. 本文主要简单介绍 golang runtime 的并发调度模型、垃圾回收与内存分配.

图1 go runtime

协程调度模型

调度是操作系统的核心功能了,从计算机诞生以来,任务的调度就一直在不断改进与发展,以不断适应计算机的发展. 单任务、多任务、并发、并行等调度.

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值