【Linux】并行与并发(含时间片)

简单来说

并发:多个进程轮流使用同一个CPU,在逻辑层面上,一段时间内推进完成了多个进程

并行:机器中有多个CPU可以使用,在物理层面上,做到同一时间会有多个进程同时在运行


举个例子:一群人需要用电脑做任务,每次每个人只能使用 1min

并发:现场只有一台电脑,每个人排队轮流着用这台电脑,每次每个人使用 1min,每个人的任务进度这样缓慢推进着,过一段时间后,有几个人都完成了任务

并行:现场有多台电脑,每次可以有多个人使用电脑

关于并行并发更加详细的讲解如下文:

一、时间片

时间片是指操作系统分配给每个进程的一段固定长度的时间。在这段时间内,进程拥有对 CPU 的独占使用权。时间片结束后,操作系统会暂停当前进程的执行,并选择另一个等待中的进程来执行。这种机制被称为时间片轮转法(Round Robin Scheduling)。

因为进程是需要在CPU中运行的,时间片机制确保了每个进程都能得到一定比例的 CPU 时间 ,从而实现了公平的资源共享(如共享使用CPU)。

二、并行与并发

并发

(为了方便讲解,这里设置当前机器只有一块CPU的场景)

(1)概念

并发 是指在同一时间段内,多个任务看起来像是同时进行的。实际上,这些任务是在操作系统或调度器的控制下交替执行的。并发的关键在于任务的执行是交错进行的,给人一种 "同时推进执行" 的错觉

(2)详细解释

前面在 "时间片" 的概念中提到,时间片轮转法是指进程等待队列中的每个进程都会被预分配一个时间片,一个进程放入CPU中执行,时间片耗尽后,该进程就会从CPU中剥离下来,然后放另一个进程进入CPU运行....相当于多个进程间轮流使用CPU,而一个进程时间片的时间,不一定能够将该进程执行完,一般都要几个时间片周期。

这样的时间片轮转交替使用CPU,每轮每个进程都会执行一点,几轮下来,多数进程都能被执行完毕,这样的作用是:在同一段时间内,可以执行完多个任务,其实 这就是并发,是多进程的并发。

而时间片轮转法是就是一种典型的并发调度算法

(3)一个进程时间片结束而停止运行会不会造成卡顿?

其实是有的,但是系统CPU的切换的速度很快,同时一次CPU的分配的时间片也比较短,人眼是感知不出的,如果在运行特别是有死循环的大型项目时,有时会有肉眼可见的卡顿,可能是一个CPU的一轮运行进程过多。



注:一块CPU的机器,称为单核CPU机器, 多块即为多核CPU


并行

上面讲解的 并行:并行是一种 "虚拟的同时完成多个任务",并非真正意义上同时执行多条任务,只是通过时间片轮转法,使得在同一段时间内,多个进程任务能够完成。

而当一台机器有多个CPU(即多核机器),进程一次可以有多个CPU使用,不用并行的轮流使用,实现同一时间段,多个进程任务可以真正地在 物理层面 的同时执行,这就是并行


相关推荐
waving-black2 分钟前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha14 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
eternal__day16 分钟前
Spring Cloud 多机部署与负载均衡实战详解
java·spring boot·后端·spring cloud·负载均衡
新加坡内哥谈技术1 小时前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
zyjyyds1131 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr1 小时前
Docker基础(一)
运维·docker·容器·eureka
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
文牧之1 小时前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC1 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows