cpu
计算机的核心是CPU,它承担了所有的计算任务。我们可以把它理解为是一个工厂,时刻在运行。
进程
一个工厂有好多个车间,每个车间负责不同的任务。
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。
假定工厂的电力有限(单核cpu),一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。就好比你用浏览器上网时,你听MP3的任务就会停止。背后的含义就是,单个CPU一次只能运行一个任务。
多任务执行
❔你可能会问:我用的单核cpu,为什么可以一边上网,一边听歌呢,还能一边玩个游戏呢?
答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。
真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。
线程
一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。
车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
由于每个进程至少要干一件事,所以,一个进程至少有一个线程。当然,像Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。
参考文章:进程与线程 、进程与线程的一个简单解释