“并发”与“并行”的区别
并发 指两个或多个事件在同一时间间隔内发生,看似都在向前推进;
- 在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。好比CPU你用完了我接着用,我用完了下一个进程接着用,重在交替。
- 从宏观外来看,在一段时间内,所有程序都在向前推进,好像是这些进程都在执行。
- 由于处理器的速度很快,因而从宏观上来看,这些程序都在向前推进,仿佛每个进程都拥有一个属于自己的处理器,即所谓的虚处理器。
并行 指两个或多个事件在同一时刻内在不同的物理设备上发生;
- 无论在微观还是宏观上都是在同时进行。
- 每个事件在同一时刻真正的同时进行。
- 在单CPU中无法实现进程与进程之间的并行。
- 可以实现不同物理设备上的并行。
举个栗子
- 背景: 将CPU比做成铲子,然后每个进程事件就是人去种树,然后现在有小明和小红都要种一颗小树,假设小明小红的能力属性一致。
- 种树流程: 拿铲子挖坑 → 丢铲子取树苗 → 拿铲子将树苗种起来。
- 并发种树: 小明先抢到铲子然后就开始挖坑,小红就在旁边等小明用完铲子。小明挖完坑后把铲子给小红去拿树苗,然后小红就开始拿着铲子挖坑。等小明将树苗拿回来时候也许还需要等一小段时间(一直等到小红把坑挖好,或者她中途不挖坑把铲子丢下去干其他事情),然后小红挖完坑后丢下铲子去拿树苗的时候小明就拿起铲子将树苗种在土里,小明的任务就完成了。小红拿完树苗回来的时候也拿起铲子将树埋起来完成了任务。
- 并行种树: 有两把铲子,小明和小红同时去挖坑、取树苗和种树,一段时间后小明小红都种完了树。
- 解释: 并发的种树由于资源的限制只有一把铲子,所以各自只是在不断的换铲子来挖坑种树,在一段时间后两人交替的完成了任务,宏观上看似都在种树。而并行的种树就是真正意义上的同时种树,同时完成任务。
理解“宏观上并发,微观上串行”
- 宏观上并发就是指在同一时间段内,CPU高速处理不同任务,看似每个程序都在向前推进。微观上,单CPU中在高速不断的切换进程执行。
- 比如有A和B两个事件,先在CPU上处理A事件,随后A需要用到输出设备,CPU就开始去执行B事件,然后B需要用到输入设备,CPU又回过来处理A事件,最后处理完A事件后又处理完B。从微观上来讲A和B事件在CPU中是在不断的交替执行的。而在宏观上来看,AB事件都在同时向前推进,仿佛每个事件都有一个专门的处理器。即宏观上并发,微观上交替执行即串行。
资料参考:
- 并发和并行的区别?
- 《计算机操作系统教程》(第四版 编著:左万利 王英 )