首先我们要认识一些软硬件知识
处理机:处理机是处理计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件 。(包括中央处理器,主存储器,输入-输出接口,加接外围设备) (硬件)
cpu(处理器):计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。(硬件)
内核:为众多应用程序提供对计算机硬件的安全访问的一部分软件。(软件)
以上介绍均来自百度。
接下来我们认识一下多任务程序运行时的一些术语
并发: 两个或以上线程同时跳转运行,但同一时间只有一个线程运行 (单cpu)
(因为cpu的运行速度极快,我们感觉上两个或以上线程在同时运行)
并行: 两个或以上线程同时运行,多任务运行(多cpu)
串行: 一个任务做完轮换到下一个任务(单cpu)
举个例子: 我们要为宿舍其余3人登录lol账
并发: 以极高手速,每台电脑逐个逐个字符输入,每一个时刻应付的都是一台电脑
并行: 拥有多只手,同时输入账 密码
串行: 登录完一台电脑后再登录另一台**
上下文切换: cpu会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后继续运行。(适合中断处理,多任务处理,用户态切换)
(简单理解为一种状态)
然后我们就可以认识一个进程、线程、协程的简单概念了
进程: 系统进行资源分配和调度的基本单位。(包括程序,使用到的系统资源等)(操作系统调度)
(单一程序只是一堆代码,当程序经过操作系统的时候,便成为了进程)
线程: 系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。(一个线程一个cpu)(操作系统调度)
协程: 一种可以暂停执行过程的函数,挂起的意思。(不是进程也不是线程, 比线程更为轻量级)(用户调度)
所谓的调度就是切换时机,好比如一心二用的时候,什么时候该做什么一样
他们三者的切换内容都有上下文切换,当然了进程和协程还有其他这里就不介绍了。
接下来我们可以认识多任务运行了
当我们打开任务管理器的时候,里面有很多个任务,这就是多任务运行了。
以前我们的显示屏还是很大一个的时候,基本上我们运行一两个程序电脑再去做其他事情就会很卡,低配一点的电脑甚至会卡死机。这是因为在那个单核单cpu的年代,利用并发去完成多进程已经是电脑运行的极限了。
到了多核多cpu的时代,我们每运行一个程序,操作系统都会将程序分配给每一个cpu(看有多少个cpu)
总结起来就是
程序总数 >= cpu数 –> 并发 运行 (运行速度慢,资源占用足)
程序总是 <= cpu数 –> 并行 运行 (运行速度快,资源占用不足)
最后我们来了解一下进程、线程、协程三者的关系
以量级来分 : 进程>线程>协程
一个进程可以有多个线程,一个线程可以有多个协程
进程被操作系统赋予了资源,进程内的线程可以共享这些资源(蛋糕就那么大每个线程都希望争取更多的资源,所以这时候就有了调度,因为当中很复杂所以进程跟线程的调度都是由操作系统来完成)
线程内的协程被赋予了执行、挂起的能力。
举个例子 :
我们现在要进行线上支付订单,A 页面 (未支付状态页面) B 页面 (待支付状态页面)
当我们点击支付的时候,页面会跳转到 B 页面,但这个时候 A 页面是挂起的 它自己不会继续执行 , 当 B 页面支付成功/失败的时候,页面会跳转回 A 页面,这时候 A 页面根据之前被挂起的进度继续执行并返回对应信息。
假设将进程、线程、协程归结到一个浏览器的运行上的话
当我们打开一个浏览器时,它便成为了一个进程,当我们打开两个/多个直播页面的时候 (这两个/多个页面可以被视为线程或子进程),这些页面同时运行互不干扰,当我们点击某个动作的时候,该页面被挂起跳转到其他页面。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!