教你快速理解进程与线程

254 阅读3分钟

进程

进程说简单一点就是一个程序在执行的全过程所产生的一个集合,程序的执行过程需要程序源码,程序资源,以及创建一个程序运行的运行态的信息;它就相当于一个“大对象”,放在内存中,为什么没放在硬盘中呢,因为程序的执行是一个过程,如果你关掉计算机,那么过程就断了,计算机也就会清除这个过程的所有。

多进程

多进程,就是会重新创建这个程序的执行过程,那么就会重新由操作系统去创建另一个“大对象”,它所占用的程序资源和进程信息与之前是独立的,相同的是程序执行的源码。

子进程

子进程,子进程则是去复制一个之前的“大对象”的程序资源,并创建自己的运行态信息;也有一种与父进程共享程序资源,这样子进程会去修改父进程的资源。

线程

线程位于进程的逻辑之内,线程没有像进程那么复杂的“大对象”,每个线程只有自己的一组CPU指令、寄存器和堆栈 ,只有为完成cpu计算需要的所有东西,计算完就丢弃,不保存计算的过程。 在多线程系统中,一个进程的地址空间中同时运行多个控制线程。不同的进程之间有独立的地址空间,而在一个进程里的线程之间有完全一样的地址空间,这意味着它们共享同样的全局变量。

进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位。

线程是CPU调度和分配的基本单位

线程是cpu的调度计算单元,进程是操作系统的资源分配

进程调度与线程调度

单核cpu,在一个时段区域,只运行一个程序,之所以能够运行多程序,是因为并发运行,所谓的并发运行,就是给每个程序都分配一点计算时间,由于cpu计算速度非常快,看起来就像是所以程序都在运行,而如何安排各个程序的计算先后和时间大小,这就涉及到调度算法。通过进程调度算法,我们能确认最优的多进程的执行顺序,而多进程里面的多线程,也需要进行线程调度算法,去确认最优的多线程执行顺序,然后cpu再按照多线程的执行顺序去并发执行每个线程。

并行和并发

上面说了并发运行,是因为在单核cpu上解决多程序的执行办法,调度器切换CPU给不同进程使用由于切换速度非常快,于是在使用者看来程序是在同时运行,这就是并发,而实际上CPU在同一时刻只在运行一个进程。

现在计算机,已经发展成为了多核计算机,意思就是有多个cpu,那么我们可以将多个程序放到多个cpu去执行,这样就是并行运算

在单核计算机上是并发运行多线程和多进程,而多核计算机则可以实现并行运行,同时也可以运行并发运行,还可以将多进程进行并行运行,多线程在单核上并发运行。