Go 协程为什么比进程和线程占用的系统资源低?
进程是一个可执行程序在运行时的一块独立的虚拟内存[1]空间,Linux 给每个进程分配一个虚拟内存空间,包括栈空间、未使用内存、堆空间、BSS、DATA、TEXT 等。
线程可以理解为轻量级进程,多个线程“寄生”在一个进程中,每个线程有独立的栈空间,其它虚拟内存空间,多个线程共享,所以线程之间通信比较简单,也就是说线程之间可以通过共享内存通信。
(相关资料图)
进程和线程都是 CPU 的一个执行单元,在内核态切换,切换成本较高。
协程是用户态的一个伪执行单元,在用户态切换执行流程,切换成本较低。
02、切换执行单元的成本我们通过介绍线程和协程的切换流程,讲述为什么在内核态切换的成本较高,而在用户态切换的成本较低?
因为进程和线程都是内核态切换,并且进程切换成本比线程切换成本更高,所以只介绍线程切换和协程切换的切换成本。
内核态切换 - 线程在了解线程在内核态切换之前,我们先了解一下什么是 CPU时间片[2],在操作系统中,我们会安装很多软件,并且我们会同时使用多个软件,而 CPU 资源有限。
为了让多个软件可以在操作系统中同时运行,CPU 分成一个个的时间片,在每个时间片中运行一个软件的一个线程,因为时间片非常短,所以我们会感觉多个软件在同时运行。
在编写代码时,我们为了可以让程序被分配到更多的 CPU 资源,可以多创建一些线程,用于提升程序运行的效率。需要注意的是,线程并不是创建越多越好。
因为 CPU 在内核态切换执行单元(线程)时,会有时间成本,在进行切换执行单元时,需要保存寄存器中的数据,将原执行单元的状态保存,切换操作也会占用 CPU 资源(时间片),从而减少了供线程运行的 CPU 资源(时间片)。
除了时间成本之外,还会有性能开销,系统内核调度线程,需要用户空间和内核空间切换,因为只有拥有最高权限的内核空间才可以调度线程,限于篇幅,我们不再展开叙述。
用户态切换 - 协程因为通过创建线程(执行单元),为程序争取更多的 CPU 资源,在线程切换时也会浪费 CPU 资源(时间成本),所以可以将执行单元不再在内核态运行,改为在用户态运行,也就是协程。
协程的切换成本较低,是因为切换比较简单,并且是在用户态进行切换,切换的时间成本较低(纳秒级),只需将当前协程的 CPU 寄存器的状态先保存起来,然后将需要 CPU 资源的协程的 CPU 寄存器的状态加载到 CPU 寄存器中。
关于 Go 协程的调度,我们在之前的文章中介绍过,此处不再赘述。
03 、内存占用除了 CPU 资源有限之外,内存资源也是有限的,所以我们还需要了解进程、线程、协程的内存占用。
读者朋友们应该知道 32 位操作系统只支持 4G 内存的内存条,这是因为进程在 32 位操作系统中最多只能占用 4G 内存,而在 64 位操作系统中可以占用更多内存。
线程占用内存一般是 10MB,不同的操作系统版本之间有些差异,区间在 4M - 64M。
协程占用内存最小,一个协程占用 2KB 左右的内存。
04 、总结本文我们主要介绍为什么 Go 协程比进程和线程占用的系统资源低,通过进程、线程、协程的 CPU 资源和内存占用的比较,发现无论是在切换时消耗的 CPU 资源(时间片),还是内存占用,Go 协程都有明显优势。
一句话总结就是 Go 协程的切换成本和内存占用比线程和进程都低。
需要注意的是,Go 协程占用系统资源低,并不代表可以无限创建 Go 协程。
参考资料http://www.cs.rpi.edu/academics/courses/fall04/os/c12/https://www.geeksforgeeks.org/time-slicing-in-cpu-scheduling/相关新闻
- Go 协程为什么比进程和线程占用的系统资源低?
- 萍乡:昔日荒山坡地 今日光伏基地
- 滨州邹平长山镇范公小学在全国青少儿美育成果展演中获特金奖
- 民爆光电披露发行结果:网上投资者放弃认购57.18万股
- 明起,金华市区实行新一轮购房补贴政策!
- 九代雅阁变速箱油多久换一次(13雅阁多久更换变速箱油?)
- 武昌火车站到武汉火车站地铁多长时间
- 河北省石家庄市2023-07-31 00:53发布暴雨红色预警
- 藤崎绫(关于藤崎绫简述)
- 上半年末中国银行业金融机构总资产超400万亿元
- 星际战甲新纪之战剧情是什么 星际战甲新纪之战
- 7月30日18时 水利部和中国气象局联合发布红色山洪灾害气象预警
- 新手如何用烤箱做蛋挞?教程来了,新手也能一次成功,皮酥里嫩
- 中信证券:8月有望开启今年第三个关键做多窗口 重点聚焦房地产产业链、科技产业、能源资源产业
- 沪太路飞云桥有新进展:西幅桥今日通车,东幅桥即将开工,预计明年全线建成通车
- 8月“天象日历”来啦!看流星雨,赏“超级月亮”
- 月神!StarsWar官宣第七位元老赛嘉宾——Moon
- 《法外枭雄:滚石城》发布限时免费DLC与大型更新档
- 国家规定标准工作时间 标准工作时间的规定
- 各地积极应对台风“杜苏芮” 全力做好抢险救援和生活物资保障