进程和线程
基本概念:
- 进程是对运行时程序的封装,操作系统进行资源调度和分配的基本单位。
- 线程是进程的子任务,是CPU调度和分配的基本单位。同⼀个进程内多个线程之间可以并发运行,同时多个进程之间共享代码段、数据段、打开的文件等资源,但每个线程各⾃都有⼀套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。
区别:
- 进程是资源分配的最小单位,线程是CPU调度的最小单位;
- 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段+程序计数器+寄存器,其中栈段用来存放所有局部变量和临时变量。
- 进程间不会相互影响 ;一个线程只能属于一个进程,而一个进程可以有多个线程,一个线程崩溃将导致整个进程崩溃。
- 线程比进程的开销小,线程的创建和终止比进程块,进程需要管理和释放的资源较多,开销较大;线程共享进程的内存,线程之间数据传输更快,进程切换开销更小。