面试的时候经常被问到的一个问题就是“进程与线程的区别有哪些?”这属于操作系统的基础知识。我整理了一些出来,和大家分享。
- 进程(作业)顾名思义就是进行中的程序,它除了程序代码段以外,还包含堆栈段(包括临时数据,如函数参数、返回地址、局部变量)和数据段(全局变量)。进程还可能包括堆,是在进程运行期动态分配的内存。
- 线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器组合和栈组成。它与属于同一进程的其它线程共享代码段、数据段和其它操作系统资源,如打开文件和信号。多线程编程的4个优点①响应度高:部分阻塞,该程序仍能执行。②资源共享:线程默认共享它们所属进程的内存和资源。③经济:进程创建的资源消耗量更大。④多处理器体系结构的利用:每个线程并行运行在不同处理器上,增强并发功能。
- 线程是进程的一部分。
- 进程是资源分配的基本单位,拥有一个完整的虚拟空间地址。
- 系统在运行时为每个进程分配不同的内存区域,但是不会为线程分配内存。线程则共享其所属的进程的资源。
- 与进程控制表PCB相似,线程也有自己的控制表TCB,但是TCB保存的线程状态比PCB表中少多了。