Windows采用的进程模型(进程状态模型)具体是什么?
Windows 进程状态模型说明
Windows 采用的是线程调度优先的混合进程状态模型,内核本身的调度单元为线程而非进程,进程状态由其内部所有线程的状态集合聚合呈现,和传统的纯5态/7态进程模型存在本质差异。
内核原生定义的6种线程核心状态(进程状态对应映射自该套定义)
- 就绪:线程已获取除处理器外的所有必要资源,等待调度器分配CPU时间片,调度器会优先从该状态队列中选取优先级最高的线程执行
- 备用:已被选定为对应处理器下一个执行的线程,只要目标处理器空闲就会立即进入运行态,单颗处理器同一时间最多存在1个备用状态线程
- 运行:线程正占用处理器执行代码,直到时间片耗尽、被更高优先级线程抢占、主动让出CPU或进入等待状态才会退出该状态
- 等待:线程为等待特定事件(如IO完成、同步对象触发、资源分配)主动放弃处理器,等待事件触发后会根据优先级转入就绪或备用状态
- 过渡:线程已完成等待逻辑,但所需内核资源暂不可用(如被换出的内存页尚未调回),资源就绪后直接转入就绪状态
- 终止:线程执行完成或被强制终止,在关联资源全部回收前保持该状态,资源释放完成后线程对象会被销毁
常见“混合模型”说法的来源
公开资料中提到的“类5态/7态模型”“混合模型”均来自对该套机制的简化适配:
- 科普类内容通常会省略线程调度细节,直接把线程状态映射到所属进程,对外呈现出和传统5态进程模型高度相似的表现
- Windows 同时支持进程级的挂起/恢复操作,当进程所有线程都被挂起时,进程会呈现额外的挂起状态,该逻辑和7态模型的挂起设计对应,因此被归类为混合模型
如果需要验证该定义,可以通过WinDbg调试Windows内核,查看_KTHREAD结构体的State枚举字段,取值直接对应上述6种状态。
内容的提问来源于stack exchange,提问作者Freed
相关产品推荐
相关产品推荐

