windows - 什么是 Windows 进程模型(状态进程模型)?
问题描述
我一直在尝试查找 Windows 用于其进程的状态模型,但在互联网上找不到任何东西。我尝试了研究论文和普通图像,但它们都没有任何具体的东西。
他们中的一些人试图通过解释 5-states 或 7-states 过程模型图来举例,并说 windows 使用这样的状态,但他们从不告诉 windows 实际使用的模型是什么。其中一个甚至谈到了混合动力车,但没有明确的解释。
我能够找到Unix,但没有找到Windows。所以谁能告诉我是哪一个?
解决方案
Windows 上的进程基本上只是其线程的容器,进程本身从不执行代码。一个进程从一个线程开始它的生命,这个线程可能会立即运行或者可以被请求开始挂起。只要进程中有适用的线程,它就会运行。当没有更多线程要运行(ExitProcess
/TerminateProcess
调用等)时,进程对象会发出信号。其他进程中的线程可以等待这个信号(WaitForSingleObject
等)。
当进程收到信号并且进程对象的所有句柄都已关闭时,内核会释放与进程相关的所有内存和资源并删除进程对象。
线程的状态更复杂。在基本术语中,状态是
- 暂停。
- 准备运行。
- 阻塞/等待(等待内核对象或 I/O)。
- 跑步。
- 已结束(已发出信号,将永远不会再次执行代码)。
我推荐Windows Internals 书籍,以全面深入地了解 Windows 内核。
推荐阅读
- c# - 如果 Quartz 有一个参数化的构造函数,它会失败
- mongodb - MongoDB:如何在 mongo 中查找最大排序文档
- python-3.x - 如何找出 aerospike 的版本?
- vue.js - Vuetify DataTable Text 和 PlaceHolders 相互重叠
- c - 在 C 中建立 OOP 设计风格的名称
- javascript - 无法使用nestjs更新猫鼬对象中的属性
- python - Python:如何从文件中删除特定字符串?
- ruby-on-rails - 我如何编写一种可以动态生成范围的方法,该方法可用于 ruby on rails 中的多个模型
- python - 像 BeautifulSoup 一样使用 Selenium 获取一些 HTML 代码
- ios - 从 ios 发送图像到网络服务器有时是空白的