什么是工作集?它有何用途?

什么是工作集?它有何用途?

在 Windows 7 的任务管理器中,我可以选择显示不同的列。有很多与内存和内存使用情况相关的列,但我不确定它们都是什么意思。

我安装了荷兰语的 Windows,所以我将尝试翻译它们;因为我不确定英文名称。

记忆列

为了:

  • 工作集
  • 峰值工作集
  • 私有工作集
  • 承担责任
  • 分页池
  • 非分页池

答案1

什么是工作集?它有何用途?

工作集是虚拟页面驻留在物理内存中。

Windows 中有多种工作集:

  • 进程工作集包含单个进程内的线程引用的页面。

  • 系统工作集包含可分页系统代码的常驻子集(主要包括内核和加载的驱动程序)、分页池和系统缓存。

  • 会议包含驻留子集的工作集内核模式Windows 子系统、会话分页池、会话映射视图和其他会话驱动程序分配的会话特定数据。

本质上,工作集用于决定可以使用多少物理内存来避免大量分页。当页面错误发生时,将检查工作集的限制和系统上的可用内存量。如有必要,内存管理器允许进程增长到其工作集的最大值。如果内存紧张,Windows 将在发生页面错误时替换工作集中的页面。

Windows 将尝试通过将修改后的页面写入磁盘来保持内存可用。如果内存不足,工作集管理器将尝试修剪大多数工作集以增加系统可用的物理 RAM 内存量。页面数量越多的进程越容易受到关注。

一个进程的默认工作集至少包含 50 页,最多包含 345 页。限制可以改变但在大多数情况下,默认值就足够了,还必须注意,最大工作集大小不能超过启动时计算的系统范围最大值。

Windows 报告总量、峰值和私有物理 RAM 数量由进程的虚拟工作集页面使用。私有表示未在进程之间共享的内存。

什么是承诺费?它有何用途?

进程虚拟地址空间中的页面是空闲的、保留的或已提交的。应用程序可以保留地址空间然后提交;保留本身并不占用内存或页面文件空间,它主要通过推迟页面承诺来减少内存。

已提交页面是指在访问时最终转换为物理内存中的有效页面的页面;它们要么是私有的,要么是可共享的,要么映射到某个部分的视图。部分可以是共享内存,也可以是映射文件;因此,如果已提交的页面被映射到映射文件的一部分,则在访问时可能需要从磁盘中引入它们。

最常见的映射文件是页面文件。它存储已修改的页面,这些页面仍由某些进程使用,但必须写入磁盘。通过更积极地执行此操作,可以更轻松地清空内存,而无需在此之前进行 I/O 写入。

内存管理器会全局跟踪私有提交费用,并根据每个进程跟踪页面文件配额。然后使用这些值来确定写入页面文件的频率。请注意,释放内存是由工作集机制完成的...

当某些内容不再存在于内存中时,它将从页面文件中加载。

Windows 报告称,总费用进程使用的内存量没有后备存储;它本质上是将页面文件中仍然缺少的物理 RAM 量相加,并从中减去其他映射文件。

备用存储器是具有数据备份的存储;例如,如果将图像映射到内存中,则该图像将同时存在于内存和磁盘中;因此,将该图像计算为内存使用量是没有意义的,因为在高内存条件下您总是可以在必要时从磁盘访问它。

内存堆是什么以及它们有什么用途?

称为分页池和非分页池...

内核的系统线程没有像进程那样的地址空间;因此,它们必须在内存堆中分配任何动态存储操作系统中,这主要由分页池或非分页池形成。

分页池由可分页进出系统的虚拟内存组成。不需要同时访问内存的设备驱动程序调度水平低(优先级较高)可以自由使用分页池。

非分页池由保证驻留在物理内存中的虚拟内存组成始终处于非分页状态,因此可以随时访问而不会引发页面错误。必须在较低调度级别访问内存的设备驱动程序必须使用非分页池来确保可以访问数据,因为此时 I/O 调用不可用,无论如何,此级别主要有关键代码...

这些池具有最小和最大大小,它们被确定为可用 RAM 的一小部分。虽然它们可以增长,但请注意它们不会超过可用 RAM 的一定百分比。非分页池非常稳定,因为它只用于更关键的内存,而分页池将扩展到页面文件中。

这是人们禁用页面文件时最容易被忽视的问题之一。其中包括稳定表现问题,如果您禁用了页面文件,那么这些问题肯定值得检查。

来源: 摘录自Windows 内部原理将书重写成易于理解的文本。

答案2

英文翻译为工作集、峰值工作集、工作集增量、私有工作集、提交大小、分页池和非分页池。它们的意思大致如下:

工作集:此进程(可能还有其他进程)驻留并映射了多少物理 RAM。

峰值工作集:此进程曾经占用的最多物理 RAM。

工作集增量:自上次更新以来工作集的变化

私有工作集:为此进程专门映射了多少物理 RAM。

承担责任:此进程正在使用多少虚拟内存,这些内存可能需要由页面文件支持。这很难理解,但基本上就是如果进程访问或修改其映射的每个内存字节,则需要多少额外的 RAM 或页面文件。

分页池:该进程负责使用系统正常内存池(如果需要可以分页出去)的多少。

非分页池:此进程已锁定的无法分页的物理内存量。通常,此内存量用于异步 I/O 等系统对象。(此内存量计入系统的非分页池。)

相关内容