面试题之-----线程和进程,线程的生命周期

一、线程和进程

1.进程是一个具有独立功能的应用程序,能够申请和分配系统资源。程序本身是没有生命的,只有处理器赋予其执行权力时,程序才能够成为一个活动的实体,我们称之为进程。一个进程可以包含多个线程,线程是进程的最小调度单位。

2.多个进程相互独立,多个线程共享进程资源。不同进程中的线程相互不可见。

3.线程依赖于进程,每个线程都有进程带来的各自独立的资源。

4.线程之间切换比进程之间切换节约系统开销。但是多线程的切换,开销仍然很大

5. 进程是资源管理的最小单位,线程是程序执行的最小单位。

6. 每个进程都有自己的数据段、代码段和堆栈段。线程是轻量级的进程,它包含独立的栈和CPU寄存器状态,线程是进程的一条执行路径,每个线程共享其所附属进程的所有资源,包括打开的文件、内存页面、信号标识以及动态分配的内存等。

7. 因为线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源。

8. 在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持多处理器,并且减少进程上下文切换的开销。

9. 线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同一进程所产生的的线程共享同一用户内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。所以,线程不能独立地执行,它必须依附在一个运行的应用程序上(即进程上),而一个进程至少需要一个线程作为它的指令执行,进程管理着资源(比如CPU、内存、文件等等)。而将线程分配到某个CPU上执行。

10. 线程和进程的区别:当操作系统分配给进程资源后,同属一个进程的多个线程之间可以相互共享进程中的内存资源,原因是线程没有自己独立的内存资源,它只有自己执行的堆栈和局部变量。而多个进程之间每个进程都拥有自己的一整套变量,即每个进程都有自己独立的内存单元。这就使得多线程之间的通信比多进程之间的通信更加的容易和高效。

二、生命周期状态转换图

原文地址:https://www.cnblogs.com/xuxinstyle/p/9369991.html