首页
社区
课程
招聘
[分享]进程、线程、PCB和三态模型举例
发表于: 1小时前 44

[分享]进程、线程、PCB和三态模型举例

1小时前
44

AI模型:Deepseek


仅供参考,如有错误,欢迎批评指正!


Let's Go!


=======================我是分割线=================================


进程、线程和PCB:


以 Windows 记事本为例:


打开记事本,在任务管理器“详细信息”中看到 notepad.exe 这一行,它有:

PID:进程唯一标识。(对应 PCB / EPROCESS 中的 UniqueProcessId)

内存 - 工作集 / 提交大小:占用的物理内存和虚拟内存。(对应 PCB / EPROCESS 中的内存管理字段)

句柄:对象或实例的标识。(对应 PCB / EPROCESS 中的 ObjectTable 句柄表)

用户名:运行账户,对应安全令牌。(对应 PCB / EPROCESS 中的 Token 安全令牌)

线程:内部线程数量。(对应 PCB 中 KPROCESS 的线程列表 / 活动线程数)


这些字段其实都来自内核中的 PCB(进程控制块)。Windows 的 PCB 核心是 EPROCESS 结构,它包含 KPROCESS(调度信息)和执行信息(资源管理)。任务管理器只是把 PCB 中的关键字段提取出来展示。


这些资源都归进程所有,所以进程是资源分配和管理的基本单位。结束进程时,这些资源被整体回收。


而记事本内部有多个线程,它们共享进程的内存和句柄,但 CPU 时间片是分给线程的。你打字时,是主 UI 线程被调度到 CPU 上运行;其他线程在等待。调度器不会直接调度“记事本进程”,而是调度它里面的线程。


所以:进程是资源分配和管理的最小单位,线程是处理器分配资源的最小单位。


=======================我是分割线=================================


三态模型:


以 Windows 下的记事本为例:


运行态:你敲键盘输入文字,记事本的线程正在 CPU 上执行,把字显示到窗口里。


回到就绪态:时间片用完或被抢占,它就下 CPU,回就绪队列排队。


阻塞态:你停止输入,记事本线程在等待下一条消息,不占用 CPU。


就绪态:你又敲了一个键,系统把消息发给它,线程被唤醒,排到调度队列里等 CPU。


再次运行态:CPU 调度到它,它取出消息,把新字显示出来。


简单说就是:打字时运行 → 时间片用完或被抢占回到就绪态 → 再次被调度后运行→不打字时阻塞 → 你一按键就变就绪 → 被调度后又运行。



冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 1小时前 被babyfox编辑 ,原因:
收藏
点赞 ・0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回