前端复盘:进程、线程、协程之间的关系

1,215 阅读3分钟

进程、线程、协程

前言

在复盘前端知识点的时候,看到了有关进程网络问题,今天就在这里给各位讲解一下我个人对于进程、线程、协程的理解

来源

在第一台计算机创建出来,很长一段时间类计算机是没有操作系统的。人们只能在计算机上运行单个程序,整个流程就是输入运行指令,执行运行指令,得出运行结果。输入运行指令和执行运行指令是不能并发运行的,导致输入运行指令浪费了宝贵的计算机资源,为了提高计算机资源的利用率,聪慧的人儿研究出了操作系统,并提出了进程、线程、协程来提升计算机的资源的利用率

进程

进程,直观点说,保存在硬盘上的程序运行后,会在内存空间里面形成一个独立的内存体,这个内存体有自己独立的地址空间。上级挂靠的单位是操作系统。

特点

操作系统以进程为单位,分配资源(cpu时间片,内存等),进程是操作系统资源分配的最小的单位

线程

创造出进程后,在一定程度上提高了计算机的效率,但是每个进程都有独立的内存空间,他们之间的切换是非常开销资源的。所以为了进一步平衡资源的调度,减少资源的开销,引进了线程,用于cpu资源的调度和执行。 他的上级挂靠单位是进程

特点

线程也被称为轻量级进程,是操作系统调度的最小单位,他的上级是进程

协程

线程虽然提高了资源的利用率,但是也存在线程资源有限的情况,而且大多数线程资源都是处于阻塞状态,且线程切换虽然比进程切换资源开销的少,但是也是存在的开销的。这时候就引入了协程。协程完全是由程序自己调度的,而不是操作系统调度

特点

  • 他是一个比线程更轻量级的存在,
  • 核心特点:协程的核心在于调度那块由他自己来负责,遇到阻塞操作,立刻放弃掉,并且记录当前栈上的数据,阻塞完后立刻再找一个线程恢复栈并把阻塞的结果放到这个线程上去跑,等达到一定条件后,再恢复原来的栈信息继续执行。

总结

进程和线程

  1. 一个进程可以拥有多个(至少一个)线程,而一个线程只属于一个进程
  2. 进程是cpu资源分配的最小的单位,线程是cpu资源调度的最小的单位
  3. 进程和协程都可以并发执行
  4. 进程开销比线程更大:进程拥有自己的内存空间,线程不直接拥有资源,所以进程在创建销毁的时,操作系统要回收和分配资源,导致系统的开销更大。
  5. 进程更加的稳定安全,他有独立的内存空间,进程的崩溃不会影响到其他的进程,而线程的只是一个进程中的不同的执行路径。

线程和协程

  1. 都是用于资源的调度,不过线程是由操作系统来进行资源的调度,而协程是由用户自己进行调度。
  2. 协程比线程效率更高:他的核心思想就是在线程的基础上进一步的提高资源调度的效率。