关于进程、线程、协程的简单介绍(适合从未接触过的)

首先我们要认识一些软硬件知识

处理机:处理机是处理计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件 。(包括中央处理器,主存储器,输入-输出接口,加接外围设备) (硬件)

cpu(处理器):计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。(硬件)

内核:为众多应用程序提供对计算机硬件的安全访问的一部分软件。(软件)

以上介绍均来自百度。

接下来我们认识一下多任务程序运行时的一些术语

并发: 两个或以上线程同时跳转运行,但同一时间只有一个线程运行 (单cpu)
(因为cpu的运行速度极快,我们感觉上两个或以上线程在同时运行)

并行: 两个或以上线程同时运行,多任务运行(多cpu)

串行: 一个任务做完轮换到下一个任务(单cpu)

举个例子: 我们要为宿舍其余3人登录lol账号
并发: 以极高手速,每台电脑逐个逐个字符输入,每一个时刻应付的都是一台电脑
并行: 拥有多只手,同时输入账号密码
串行: 登录完一台电脑后再登录另一台
**

上下文切换: cpu会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后继续运行。(适合中断处理,多任务处理,用户态切换)
(简单理解为一种状态)

然后我们就可以认识一个进程、线程、协程的简单概念了

进程: 系统进行资源分配和调度的基本单位。(包括程序,使用到的系统资源等)(操作系统调度)
(单一程序只是一堆代码,当程序经过操作系统的时候,便成为了进程)

线程: 系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。(一个线程一个cpu)(操作系统调度)

协程: 一种可以暂停执行过程的函数,挂起的意思。(不是进程也不是线程, 比线程更为轻量级)(用户调度)

所谓的调度就是切换时机,好比如一心二用的时候,什么时候该做什么一样

他们三者的切换内容都有上下文切换,当然了进程和协程还有其他这里就不介绍了。

接下来我们可以认识多任务运行了

当我们打开任务管理器的时候,里面有很多个任务,这就是多任务运行了。

以前我们的显示屏还是很大一个的时候,基本上我们运行一两个程序电脑再去做其他事情就会很卡,低配一点的电脑甚至会卡死机。这是因为在那个单核单cpu的年代,利用并发去完成多进程已经是电脑运行的极限了。

到了多核多cpu的时代,我们每运行一个程序,操作系统都会将程序分配给每一个cpu(看有多少个cpu)

总结起来就是

程序总数 >= cpu数 --> 并发 运行 (运行速度慢,资源占用足)
程序总是 <= cpu数 --> 并行 运行 (运行速度快,资源占用不足)

最后我们来了解一下进程、线程、协程三者的关系

以量级来分 : 进程>线程>协程

一个进程可以有多个线程,一个线程可以有多个协程

进程被操作系统赋予了资源,进程内的线程可以共享这些资源(蛋糕就那么大每个线程都希望争取更多的资源,所以这时候就有了调度,因为当中很复杂所以进程跟线程的调度都是由操作系统来完成)

线程内的协程被赋予了执行、挂起的能力。

举个例子 :

我们现在要进行线上支付订单,A 页面 (未支付状态页面) B 页面 (待支付状态页面)
当我们点击支付的时候,页面会跳转到 B 页面,但这个时候 A 页面是挂起的 它自己不会继续执行 , 当 B 页面支付成功/失败的时候,页面会跳转回 A 页面,这时候 A 页面根据之前被挂起的进度继续执行并返回对应信息。

假设将进程、线程、协程归结到一个浏览器的运行上的话

当我们打开一个浏览器时,它便成为了一个进程,当我们打开两个/多个直播页面的时候 (这两个/多个页面可以被视为线程或子进程),这些页面同时运行互不干扰,当我们点击某个动作的时候,该页面被挂起跳转到其他页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值