您现在的位置: IT专家网 > WinSystem子站 > 技巧
AIX 分页替换技术入门
AIX虚拟内存管理器 (AIX VMM) 是一种基于分页的虚拟内存管理器。一个分页就是一个固定大小的数据块。分页既可以位于内存中(也就是说,映射到物理内存中的某个位置)、也可以位于磁盘中……
AIX® 虚拟内存管理器 (AIX VMM) 是一种基于分页的虚拟内存管理器。一个分页就是一个固定大小的数据块。分页既可以位于内存中(也就是说,映射到物理内存中的某个位置)、也可以位于磁盘中(也就是说,从物理内存中替换到分页空间或者文件系统)。
AIX VMM 有一个非常独特的方面,即缓存的文件数据的管理。AIX VMM 将缓存的文件数据与对其它类型虚拟内存(例如,进程数据、进程堆栈等等)的管理集成到了一起。它将文件数据缓存为分页,就如同进程的虚拟内存一样。
AIX 根据需要将分页映射到实际内存。如果应用程序引用了某个分页,而该分页并没有映射到实际内存中,那么系统将产生一个缺页。为了解决缺页,AIX 内核会将所引用的分页加载到实际内存中的某个位置。如果所引用的分页是一个新的分页(也就是说,位于先前从未引用过的进程数据堆中的分页),那么“加载”所引用的分页只需要用零来填充一个实际内存位置(也就是说,提供一个填满零的分页)。如果所引用的分页是一个预先存在的分页(也就是说,文件中的某个分页、或者先前换出的某个分页),那么加载所引用的分页需要从磁盘(分页空间或者磁盘文件系统)中将该分页读入到实际内存中的某个位置。
在将分页加载到实际内存中之后,它将被标记为未经修改的。如果某个进程或者内核修改了该分页,那么该分页的状态将更改为已修改的。这允许 AIX 跟踪在将某个分页加载到内存之后是否对其进行过修改。
随着系统将更多的分页添加到实际内存中,实际内存中空闲位置(可以包含分页)的数目将会减少。也可以将空闲位置的数目称为空闲分页框架的数目。当空闲分页框架的数目达到某个较低的值时,AIX 内核就必须清空实际内存中的某些位置,以便重用新的分页。这个过程也称为分页替换。
AIX VMM 提供了一些后台守护进程,专门负责进行分页替换。其中一个分页替换守护进程称为 lrud(显示为 ps -k 的输出中的 lrud)。lrud 守护进程负责在内存分页中进行扫描,并回收某些分页以便为实际内存腾出空间。当分页替换守护进程确定它希望回收某个特定的分页时,这个分页替换守护进程将执行下面两项操作中的一项:
如果该分页经过了修改,那么分页替换守护进程将该分页写入到辅助存储位置(例如,分页空间或者文件系统磁盘)。将包含该分页的物理内存块标记为空闲,并为其它的分页做好重用的准备。
如果该分页没有经过修改,那么分页替换守护进程可以简单地将物理内存块标记为空闲,这样一来,就可以将该物理内存块重用于另一个分页。在这种情况下,分页替换守护进程不需要将该分页写入到磁盘,因为该分页在内存中的版本并没有经过修改,因此与位于磁盘中(在分页空间中、或者在磁盘文件系统中)的分页副本完全相同。
分页替换守护进程可以根据系统内存的使用情况和可调参数,选择不同类型的分页进行回收。本文剩下的部分将详细地介绍分页替换守护进程如何选择要进行回收的分页。
分页类型
从本质上看,AIX 中一共有两种分页类型:
工作存储分页(Working storage pages)
永久存储分页(Permanent storage pages)
工作存储
工作存储分页是一些包含易变 数据(换句话说,即重新启动后将不复存在的数据)的分页。在其他的平台中,工作存储内存有时也称为匿名 内存。下面提供了一些由工作存储分页组成的虚拟内存区域的示例:
进程数据
堆栈
共享内存
内核数据
当需要将经过修改的工作存储分页替换出(从内存移动到磁盘)时,它们将被写入到分页空间。不会将工作存储分页写入到文件系统。
当进程退出时,系统将释放其所有的私有工作存储分页。因此,当进程退出时,系统将释放进程数据和堆栈的工作存储分页。对于共享内存区域,直到删除共享内存区域之后,才会释放其工作存储分页。

