Windows 任务管理器中的几个内存概念

  • 时间:
  • 浏览:2
  • 来源:5分排列3APP下载_5分排列3APP官方

4. 虚拟内存: 也不换页文件.

或者, 亲们儿面对的 windows 正确处理不了和 Intel 架构有些设计上的契合. 比如接下来要说到的内存管理. 为简单起见, 亲们儿只讨论 x86 体系架构的内存管理. 不考虑换页文件影响.

0. 工作集, 即在物理内存中的数据的集合.

2. 将所有的 "工作集" 相加后的值会大于程序运行中内存占用的百分比, 或者百分比对共享内存进行排重了.

内存(共享工作集): 这是该程序运行和别的程序运行共享的内存量. 通常, 这是加载一个多 dll 所占用的内存. 

工作集(内存): 也能这样理解, 此值也不该程序运行所占用的总物理内存. 或者你这种 值是由两主次组成, 即 '专用工作集' + '共享工作集'.

  1) 在页目录中根据 PDE 找到页表的位置, 即通过 0x48 找到 0xa000, 0000.

  2. 工作集定义: The working set of a process is the set of pages in the virtual address space of the process that are currently resident in physical memory. 即: 实际在物理内存中的大小.

1. http://www.mouseos.com/arch/paging.html

                                                            图 3 

  1. 一个多 程序运行中的内存有某种分类, 空闲, 保留, 提交. 具体的含义也能在 图 3 中找到说明. 这某种类型的内存在某一时刻或者存在内存中, 也或者存在交换文件中.

Intel 规定, 一个多 在计算机内控 , 也能使用 "分页机制" 对硬件内存进行 "虚拟化". 其核心技术如下图:

首先, 在程序运行中的一个多 地址 0x1234, 5678 被计算机的页部件(硬件)经过 1,2,3 步, 从线性地址(程序运行中的地址) 转变为真正机器上的物理地址(即实际内存的硬件地址). 每个线性地址都被分成 "页目录索引(PDE, 10-bit)", "页表索引(PTE, 10-bit)", "页内偏移(offset, 12-bit)" 三主次.

  a) 浅绿色的是用户空间, 此空间是被用户程序运行所使用的. 比如我在代码中写 "分配 30MB 内存", 我我人太好占用的也不你这种 主次.

                  图 5

                         图 4

程序运行的内存

3. "提交大小" 和 "工作集" 是一个多 层面的概念, 大主次活跃程序运行的 "工作集" 会大于 "提交大小", 而大主次非活跃的程序运行 "工作集" 会小于 "提交大小", 或者两者这样绝对关系.

内存(专用工作集): 这对于一个多 程序运行是最重要的, 它代表了一个多 程序运行独占用了几只内存. 

亲们儿使用的大主次 PC 是基于 Intel 微正确处理器的 x86 和 x64 架构计算机. 

写在最后

  b) 红色的是内核空间, 此空间是被用作操作系统执行必要的程序运行切换以及从用户态函数进入内核态执行功能所保留的内存地址. 程序运行无法操作此区域.

结合实际系统, 以俺家 安装的 win8.1 为例, 打开程序运行, 可见如下:

提交大小: 属于 Committed 那一类. 或者不一定在物理内存中, 有些或者存在交换文件中. 或者一个多多 程序运行, 这样 占 30MB 内存, 或者绝大多数内存有的是使用, 则也能通过 `EmptyWorkingSet` 向操作系统发送请求, 将此程序运行的不常用的内容从物理内存中换出到换页文件中保存, 如下图:

系统将每个程序运行的 4GB 地址空间, 从逻辑上划分为两大主次:

 图 1 (本图摘自 ref 2)

首先澄清一个多 概念:

references:

  2) 根据页表中的 PTE 找到页地址, 即通过 0x345 找到 0x300, 0000.

             图 2 (本图修改自 ref 1)

基于 x86 的 Windows 内存管理

对于系统中的每一个多 程序运行而言, 有的是 4GB 的 "内存空间". 也也不每个程序运行都认为个人有 4GB 的内存也能使用.

 

2. Pushing the Limits of Windows: Virtual Memory

1. 工作集 = 专用 + 共享

Intel x86 体系内存管理

  3) 根据偏移, 在页中找到亲们儿要的具体地址, 即已知页存在 0x300, 0000, 亲们儿需要存取其 0x678 偏移处的数据, 则亲们儿所需要操作的果然物理地址也不 0x300, 0678.