Windows中活动进程列表的用途?

时间:2011-03-22 19:44:16

标签: windows process kernel

我注意到所有_EPROCESS对象都通过ActiveProcessList链接相互链接。
这份清单的目的是什么?
操作系统使用此活动进程列表是什么?

1 个答案:

答案 0 :(得分:2)

在Windows NT中,可调度单元是线程。进程充当线程的容器,也作为抽象来定义虚拟内存映射是活动的(以及其他一些东西)。

所有操作系统都需要保留此信息。在不同的时间,操作系统的不同组件可能需要搜索与特定特征匹配的过程,或者需要评估所有活动过程。

那么,我们如何存储这些信息?为什么内存中没有巨大的阵列?嗯,这个数组有多大?我们是否可以将活动进程的数量限制为此阵列的大小?如果我们不能增长阵列会发生什么?我们是否准备好预先保留所有内存以跟踪进程?在低流程用例中,是不是浪费了很多内存?

因此我们可以将它们保存在链表中。

在NT有些情况下我们关心进程上下文但不关心线程上下文。其中之一是I / O完成。当操作系统异步处理I / O操作时,该I / O的最终完成可能位于与请求进程上下文不同的进程上下文中。因此,我们需要一些有关原始流程的记录和信息,以便我们可以“附加”到此流程。 “附加”到进程将我们转换到适当的用户模式内存可用的上下文。我们不关心线程上下文,我们关心进程上下文,所以这是有效的。