非页面缓冲池是个很让人迷惑的问题,下面让我们来了解它。先看一下操作系统的参数对比:
结构组件:
64 位 Windows 32 位 Windows
虚拟内存 16 TB 4 GB
页面文件大小 512 TB 16 TB
超空间 8 GB 4 MB
页面缓冲池 128 GB 470 MB
非页面缓冲池 128 GB 256 MB
系统缓存 1 TB 1 GB
System PTE 128 GB 660 MB
虚拟内存
这是扩展计算机上可用物理内存的一种方法。操作系统在虚拟内存系统中创建一个页面文件或交换文件,并将内存划分为若干个称为页面的单位。最近引用的页面位于物理内存或 RAM 中。在一段时间内未被引用的内存页面则会写入页面文件。此过程称为“交换”或“调出”内存。如果稍后有程序引用这段内存,操作系统便会将内存页面从页面文件重新读回到物理内存中,此过程称为“交换”或“调入”内存。程序的可用内存总量等于计算机物理内存量加上页面文件大小。就短期看来,有一个需要注意的重要事项,那就是即便是 32 位应用程序,当它们在 Windows x64 Edition 中运行时,也会从增加的虚拟内存地址空间中受益。对于那些必须用 /LARGEADDRESSAWARE 选项编译才能利用 32 位 Windows 中 /3GB 开关的应用程序,将能够自动寻址 4 GB 的虚拟内存,而无需任何启动时开关,也无需更改到 x64 Windows。此外,操作系统当然也无需共享该 4 GB 的空间。因此不存在任何约束。
页面文件
这是计算机用于提高虚拟内存物理存储量的一个磁盘文件。
超空间
这是一个特殊区域,用于映射进程工作集列表,并为某些操作临时映射其他物理页面,这些操作的示例有:将空闲列表上的页置零(当零列表为空,且需要零分页时)、使其他页表中的页表项无效(例如当从备用列表中删除某一页面时),以及在创建进程时设置新进程的地址空间。
页面缓冲池
这是系统空间中的一个虚拟内存区域,可被调入和调出系统进程的工作集。页面缓冲池在系统初始化期间创建,内核模式组件用它来分配系统内存。单处理器系统有两个页面缓冲池,多处理器系统有四个页面缓冲池。具有多个页面缓冲池可以降低系统代码块同时调用缓冲池例程的频率。
非页面缓冲池
这是一个包含各种系统虚拟地址范围的内存池,这些地址范围可以保证始终驻留在物理内存中,因此从任何地址空间均可进行访问,而不会产生页面输入/输出 (I/O)。非页面缓冲池在系统初始化期间创建,内核模式组件用它来分配系统内存。
系统缓存
这些页面用于在系统缓存中映射打开的文件。
System PTE
系统页表项 (PTE) 池,用于映射各种系统页面,例如 I/O 空间、内核堆栈和内存描述符列表。 64 位程序使用 16 TB 调整模式(8 TB 用于用户,8 TB 用于内核)。32 位程序仍使用 4 GB 调整模式(2 GB 用于用户,2 GB 用于内核)。这意味着在 64 位 Windows 版本上运行的 32 位进程可以按 4 GB 调整模式(2 GB 用于用户,2GB 用于内核)运行。64 位 Windows 版本不支持在启动选项中使用 /3GB 开关。从理论上讲,64 位指针最多可以寻址 16 EB。64 位 Windows 版本目前已实现了高达 16 TB 的地址空间。
故障问题:win2003 32位操作系统只有256M的非页面缓冲池,当该资源耗尽的时候系统会出现各种故障——如挂载和使用仲裁盘故障,进一步引发Cluster故障,让人很是郁闷。
原文链接:http://xjsunjie.blog.51cto.com/999372/382278