一、进程的状态与转换
进程在其生命周期内会经历不同的状态,常见的有三态模型和五态模型:
三态模型: 1、运行态:进程正在占用CPU执行。 2、就绪态:进程已具备运行条件,等待系统分配CPU。 3、等待态:进程因等待某个事件(如I/O操作)而无法运行。 状态转换: 1、运行态 → 等待态:等待资源或事件。 2、等待态 → 就绪态:资源或事件满足。 3、就绪态 → 运行态:CPU空闲且调度到该进程。 4、运行态 → 就绪态:时间片用完或被更高优先级进程抢占。
五态模型:在三态模型的基础上增加了创建态和终止态。 1、创建态:进程正在被创建,尚未就绪。 2、终止态:进程已完成执行或被操作系统终止。 状态转换(增加的部分): 1、NULL(或初始状态)→ 创建态:开始创建进程。 2、创建态 → 就绪态:进程创建完成且系统允许其运行。 3、运行态 → 终止态:进程运行结束或被终止。 4、终止态 → NULL(或清理状态):操作系统清理进程资源。 此外,还有更复杂的七态模型,引入了挂起就绪态和挂起等待态,用于描述被对换出内存的进程状态。
二、线程的状态与转换
线程的状态与转换与进程类似,因为线程也经历了创建、运行、等待和终止等阶段。不过,由于线程共享进程的资源,其状态转换在某些方面可能更加频繁和快速。
线程状态:新建、就绪、运行、等待和终止。
状态转换:与进程的状态转换类似,但更侧重于线程在CPU上的调度和执行。 1、新建 → 就绪:线程创建完成且具备运行条件。 2、就绪 → 运行:CPU调度到该线程。 3、运行 → 等待:线程等待某个资源或事件。 4、等待 → 就绪:资源或事件满足,线程重新变为就绪状态。 5、运行 → 终止:线程运行结束或被终止。