进程与线程

it2024-08-09  56

什么叫“多任务”?

多任务即操作系统可以同时运行多个任务。比如,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。

由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢?

就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度太快了,让我们感觉就像所有任务都在同时执行一样。

真正的并行执行多任务只能在多核CPU上实现,但由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

对于操作系统来说,一个任务就是一个进程,比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。

有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,把进程内的“子任务”称为线程。

由于每个进程至少要干一件事,所以,一个进程至少有一个线程。当然,像Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。

执行单任务的进程,也就是只有一个线程。如果需要同时执行多个任务怎么办?

解决方案:

启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。

启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块执行多个任务。

启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,当然这种模型更复杂,实际很少采用。

即多任务的实现方式:

多进程模式;

多线程模式;

多进程+多线程模式。

同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务1必须暂停等待任务2完成后才能继续执行,有时,任务3和任务4又不能同时执行,所以,多进程和多线程的程序的复杂度要高于单进程单线程的程序。

最新回复(0)