进程线程和协程
Posted gauze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程线程和协程相关的知识,希望对你有一定的参考价值。
名次解释
1、进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
2、线程
3、协程
区别与联系
一句话总结
进程:资源分配的最小单元。早期面向进程的程序设计中进程是基本执行体;面向线程的程序设计中,进程是线程的容器,线程干活,每个进程至少有一个线程。
线程:CPU调度执行的最小单元。真正干活的。为了提高CPU的利用率和执行多任务。
协程:可协同执行的线程。也是干活的。非系统调度,协程之间调度。
资源方面
多进程:子进程和父进程有不同的代码块与资源
多线程:多个线程公用父进程的资源,线程自己不拥有资源
多协程:可以共享上下文
开销和切换成本
进程上下文切换成本很高,需要寄存很多东西
线程切换成本较低,占用资源较少
协程是非常轻量级的用户态线程,程序自己调度,切换基本没有成本
调度方面
进程是系统调度
线程是系统调度
协程是程序自身实现调度
以上是关于进程线程和协程的主要内容,如果未能解决你的问题,请参考以下文章