一. 并发和并行
操作系统扫盲:
1. 对于单核cpu而言(不管单核单线程也好,单核多线程也罢),同一时间只能干一件事!!为了看起像可以“同时干多件事”,windows操作系统把cpu的时间划分为长短基本相同的时间区间,即“时间片”,通过操作系统的管理,把这些时间片依次轮流分配给各个应用使用。
2. 操作系统时间片的使用规则:某个作业在cpu分配给它的时间片结束时,整个任务并没完成,那么该作业只能被暂停下来,等待下一轮循环再继续做。由于cpu处理速度非常快,所以只要时间片间隔划分得当,当一个用户作业从用完分配给它的时间片到获得下一个时间片,中间有些许“停顿”,用户是觉察不出来的。
3. 所以在单核cpu中,我们看似可以“同时干很多事”,其实是通过时间片切换技术,并发完成的。 比如在单核cpu下,我们依旧可以一边听歌,一边打游戏,这都是时间片切换技术,让我们觉得是是同时在进行。
1. 并发的概念
在操作系统中,是指一个时间段中有几个程序都处于已启动运行 至 运行完毕 之间,且这几个程序都是在同一个处理机上运行。(concurrency)
类别前面提到的时间片分时调度,听歌和打游戏两件事在同一个时间段在同一台电脑上完成了从开始到结束的动作,那么我们就可以说听歌和打游戏是并发的。
2. 并行的概念
指多CPU核心的时候,一个cpu核心在执行一个任务的同时,其他cpu核心可以执行其它任务,多个任务之间互相不抢占cpu资源能同时进行,这种方式称之为并行(Parallel)。
PS: 决定并行的因素不是cpu的数量,而是cpu的核心数量,比如一个cpu多个核也可以并行,单核cpu不存在并行的一说。
单核多线程的cpu同一时间点还是能只能干一件事,只不过比单核单线程效率要高,所以单核多线程也不存在并行一说。
举例:两个人分别在自己的电脑上听歌、打游戏,这两个人之间就是