【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使用,不用并行的轮流使用,实现同一时间段,多个进程任务可以真正地在 物理层面 的同时执行,这就是并行


相关推荐
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver9 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq9 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU10 小时前
Petalinux新建自动脚本启动
linux
charlie11451419110 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记10 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup10 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y10 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙52012 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
1892280486112 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存