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

embedded/2024/10/21 4:49:55/




在这里插入图片描述



简单来说


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





http://www.ppmy.cn/embedded/129179.html

相关文章

基于SSM+微信小程序的宠物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的宠物管理系统实现了管理员、店主、用户。 管理员实现了店主管理、附件宠物店、管理员、用户管理、猫狗查询、猫狗宠物社区、商品信息等、店主实现了商品信息管理。用户…

Windows PowerShell 有没有类似conda的虚拟环境功能?

PowerShell本身并不直接提供与Conda完全相同的环境功能,但PowerShell可以通过一些方法和工具来实现类似的环境管理。以下是对PowerShell和Conda环境功能的详细对比及PowerShell实现类似功能的途径: 一、Conda的环境功能 Conda是一个开源的包管理系统和…

OpenAI研究揭示ChatGPT的性别和种族偏见

🦉 AI新闻 🚀 OpenAI研究揭示ChatGPT的性别和种族偏见 摘要:OpenAI发布了一项新研究,指出ChatGPT在回应用户时,可能会根据姓名推断性别和种族特征,从而反映训练数据中的社会偏见。例如,女性名…

基于Docker安装Grafana及其基本功能

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。 拉取Grafana镜像 docker pull grafana/grafana 运行镜像 docker run -d -p 3000:3000 --namegrafana grafana/grafana 打开浏览器,访问 http://l…

css3新增都知识点

1.新的选择器 属性选择器、伪类选择器、伪元素选择器 2.圆角与阴影 border-radius(圆角)、box-shadow(阴影) 3.渐变 线性渐变(linear-gradient) 径向渐变(radial-gradient) 4…

MySQL 连接的使用

MySQL 连接的使用 MySQL 是一种广泛使用的开源关系数据库管理系统。它基于 Structured Query Language (SQL) 进行数据管理,因其高性能、易用性和可靠性而受到开发者的青睐。在许多应用程序中,尤其是那些需要处理大量数据或支持复杂查询的应用程序中,MySQL 的使用是至关重要…

数据结构(二)顺序表应用:通讯录

功能要求 能够保存联系人信息:名字、性别、年龄、电话、地址等 增加联系人信息 删除指定联系人 查找制定联系人 修改指定联系人 显示联系人信息 代码实现 头文件 seqlist.h 要包含上“contact.h”,否则不能使用contact.h里定义的好的结构 #inc…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO