首页 > 其他分享 >并发和并行

并发和并行

时间:2022-08-16 23:57:37浏览次数:87  
标签:操作系统 多个 并行 同时 并发 CPU

原文:面试必考的:并发和并行有什么区别?

某天下班后,我在家里进行电话面试,问到面试者这样一个问题:“能不能简单介绍一下你理解的并发和并行,并说明一下他们之间的关系”。但是面试者回答的并不好,所以我在面试评价中写到:“对并发和并行的概念不清楚”。这时,女朋友看到这句话。

img
img
img
img

并发和并行最开始都是操作系统中的概念,表示的是 CPU 执行多个任务的方式。这两个概念极容易混淆。

img
img

所谓“同时”进行

我们现在使用的 Windows 操作系统,是可以“同时”做很多件事儿的。比如我们可以一边看电影,一边聊 QQ;一边听歌,一边打游戏。

但是,这所谓的“同时”,在操作系统底层可能并不是真正的意义上的“同时”。

实际上,对于单 CPU 的计算机来说,在 CPU 中,同一时间是只能干一件事儿的。为了看起来像是“同时干多件事”,Windows 这种操作系统是把 CPU 的时间划分成长短基本相同的时间区间,即”时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个应用使用。

这样,给用户的感觉是他在同时的进行听歌和打游戏,实际上,在操作系统中,CPU 是在游戏进程和音乐播放器进程之间来回切换执行的。

操作系统时间片的使用是有规则的:某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃 CPU,等待下一轮循环再继续做。此时 CPU 又分配给另一个作业去使用。

由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给它的一个时间片到获得下一个 CPU 时间片,中间有所”停顿”,但用户察觉不出来。

所以,在单 CPU 的计算机中,我们看起来“同时干多件事”,其实是通过 CPU 时间片技术,并发完成的。

img
img

并发

并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。

就想前面提到的操作系统的时间片分时调度。打游戏和听音乐两件事情在同一个时间段内都是在同一台电脑上完成了从开始到结束的动作。那么,就可以说听音乐和打游戏是并发的。

img
img

并行

并行(Parallel),当系统有一个以上 CPU 时,当一个 CPU 执行一个进程时,另一个 CPU 可以执行另一个进程,两个进程互不抢占 CPU 资源,可以同时进行,这种方式我们称之为并行(Parallel)。

这里面有一个很重要的点,那就是系统要有多个 CPU 才会出现并行。在有多个 CPU 的情况下,才会出现真正意义上的『同时进行』。

img
img

并发与并行

我们两个人在吃午饭。你在吃饭的整个过程中,吃了米饭、吃了蔬菜、吃了牛肉。吃米饭、吃蔬菜、吃牛肉这三件事其实就是并发执行的。对于你来说,整个过程中看似是同时完成的的。但其实你是在吃不同的东西之间来回切换的。

还是我们两个人吃午饭。在吃饭过程中,你吃了米饭、蔬菜、牛肉。我也吃了米饭、蔬菜和牛肉。我们两个人之间的吃饭就是并行的。两个人之间可以在同一时间点一起吃牛肉,或者一个吃牛肉,一个吃蔬菜。之间是互不影响的。

人相当于 CPU,吃某样东西相当于进行某项作业。一个人在某个时间点只能吃一样东西,一个 CPU 在某个时间点只能进行一项作业。多个人可以同时吃多样东西,多个 CPU 可以同时进行多个作业。

img

所以,并发是指在一段时间内宏观上多个程序同时运行。并行指的是同一个时刻,多个任务确实真的在同时运行。

img
img
img
img

并发和并行的区别

并发,指的是多个事情,在同一时间段内同时发生了。并行,指的是多个事情,在同一时间点上同时发生了。

并发的多个任务之间是互相抢占资源的。并行的多个任务之间是不互相抢占资源的。

只有在多 CPU 的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。

img

就像上面这张图,只有一个咖啡机的时候,一台咖啡机其实是在并发被使用的。而有多个咖啡机的时候,多个咖啡机之间才是并行被使用的。

img
img

标签:操作系统,多个,并行,同时,并发,CPU
From: https://www.cnblogs.com/Higurashi-kagome/p/16560934.html

相关文章

  • 高并发之网络IO模型
    你好,我是坤哥今天我们聊一下高并发下的网络IO模型高并发即我们所说的C10K(一个server服务1w个client),C10M,写出高并发的程序相信是每个后端程序员的追求,高并发架构......
  • 8、ThreadPoolTaskExecutor线程并发
    一、线程池的优点:1、降低资源消耗。通过重复利用自己创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行......
  • FusionAccess模板制作并发放
    FusionAccess安装并对接具体安装步骤欢迎参照我的博客:https://www.cnblogs.com/kongshuo/p/16333561.html在FC上创建win10虚拟机创建虚拟机,下一步名称随意,操作系统类......
  • 如何保证 Redis 的高并发和高可用?讨论redis的单点,高可用,集群
    如何保证Redis的高并发和高可用?讨论redis的单点,高可用,集群。打开GitHub搜索redis,边可以看到,该项目的介绍是这样的:Redisisanin-memorydatabasethatpersistsond......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • 并发编程 1
    并发jmmjava内存模型,这个东西目前先不跟jvm模型对应起来。存在一个工作内存、驻内存的概念线程间通信cas原子性有序性可见性 结合一个两个线程之间交互的......
  • C#并发编程-4 同步
    如果程序用到了并发技术,那就要特别留意这种情况:一段代码需要修改数据,同时其他代码需要访问同一个数据。这种情况就需要考虑同步地访问数据。如果下面三个条件都满足,就必......
  • 并发编程(概念简述)
    并发编程(概念简述)1进程与线程1.1概念1.1.1线程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要......
  • Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
    苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头我国宋代禅宗大师青原行思在《三重境界》中有这样一句话:“参禅之初,看山是山,......