『面试问答』:进程和线程有哪些状态?
面试官: 请说一下,进程和线程有哪些状态?
进程在并发执行时共享系统资源,导致它们在运行过程中呈现间断性的运行规律,在执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,所以进程在其生命周期内可能存在多种状态。
为了方便对各个进程的管理,操作系统一般将进程划分为运行状态、就绪状态、阻塞状态、创建状态和结束状态五种状态。
其中运行状态、就绪状态和阻塞状态这三种是进程的基本状态,需要我们重点关注。运行状态表示进程占有着CPU并正在运行。就绪状态表示进程已分配到所需资源,已经具备运行条件,但是由于此时没有空闲的CPU而暂时不能运行,阻塞状态表示进程正在等待某一事件(比如IO请求)的发生而暂时停止运行,处于阻塞状态时,进程本身不具备运行条件,即使给它分配CPU资源也无法运行。
进程的另外两种状态,创建态表示进程正在被创建,尚未转到就绪态。结束状态表示进程正从系统中消失,可能是进程正常结束或其他原因退出运行。
当进程的运行环境在满足一定条件后,就会从一种状态变化为另外一种状态。进程间的状态变化总共有以下六种情况:
当进程被创建完成并初始化后,一切就绪准备运行时,此时进程就从创建状态变为就绪状态。
处于就绪状态的进程被操作系统的进程调度器选中后,就分配给 CPU 正式运行该进程,此时进程就从就绪状态变为运行状态。
当进程已经运行完成或出错时,会被操作系统作结束状态处理,此时进程就从运行状态变为结束状态。
处于运行状态的进程在运行过程中,由于分配给它的运行时间片用完,操作系统会把该进程变为就绪态,接着从就绪态选中另外一个进程运行,此时进程就从运行态变为就绪态。
处于运行状态的进程请求某个事件,例如请求 I/O 事件,必须等待时,此时就从就从运行状态变为阻塞状态。
当进程等待的事件完成时,此时进程就从阻塞状态变为就绪状态。
进程状态变化需要注意两点:
1、进程只能从运行状态变为阻塞状态,无法从就绪状态变为阻塞状态,因为进程变为阻塞状态是进程去请求某种资源导致的,是进程自发的行为,必然是发生在进程正在运行处于运行状态的时候。
2、进程无法直接从阻塞状态变为运行状态,因为一个进程被分配CPU资源进行运行,是由操作系统进行调度的,进程请求到资源后,只能先变为就绪状态,然后等待操作系统的调度,等被分配到CPU资源后,才会变为运行状态。
#24届软开秋招面试经验大赏##我发现了面试通关密码##牛客在线求职答疑中心#分享软件开发岗位面试题及答案