虚拟内存机制
2015-03-08 11:26
134 查看
内存页
为便于管理内存空间,操作系统将内存空间按一定大小分块,以块为单位管理,每一块称为一页。
页面文件
硬盘上的用于暂存和置换应用程序内存数据的“虚拟内存”文件
页面置换
物理内存中长期未使用的闲置页面被调度到硬盘页面文件以释放物理内存空间,提高效率。
线性地址和映射页表:
系统给程序分配一个虚拟的线性地址,线性地址并未完全映射实际对应的物理内存地址,前2G映射的是操作系统相关的,程序不可申请自用。映射原理则是由系统所维护的一个页表机制来保证的,存于线性地址前2G。系统维护一个页目录,对应线性地址的高10位,即可以通过高10位线性地址+偏移来获取页表信息。每一个页表可以映射4*1024*1024字节空间,对于在这4K的内存页上的寻址可以用线性地址高20位+偏移的方法来实现。而内存页就是实实在在的物理内存了。程序中寻址过程就是通过这一套页表映射机制来锁定具体物理内存地址的。
内存和硬盘协调:
由于内存容量是有限的,但是我们需要运行多个程序,为了能够高效地使用内存,就有了虚拟内存机制,跟按需分配有点类似。每个程序指挥分配一定大小的内存,其中存储实时需要的数据,而其他暂时不用的数据就存储在硬盘的页面文件中。当需要的数据所在的页面未在物理内存页上时,操作系统会将页面文件中的对应页置换到物理内存上,从而使得数据可用。虚拟内存通过映射等机制可为每个程序分配更大的且连续的工作空间,使得运行更多更大的应用程序成为可能,还提高了内存的使用效率。
相关文章推荐
- Redis高级实用特性(持久化机制、发布订阅消息、虚拟内存的使用)
- 从一道试题分析请求分页的虚拟内存机制、高速缓存的cache机制以及两者之间的区别联系
- 操作系统管理内存的机制——为什么要设置虚拟内存?
- 程序员详解iOS的原生和第三方虚拟内存机制
- 虚拟内存,映射和分页机制
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- 虚拟内存机制浅析
- iOS 的内存管理和虚拟内存机制具体是怎么运作的?
- 虚拟内存,映射,分页机制
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- 虚拟内存机制
- 【转】操作系统管理内存的机制——为什么要设置虚拟内存?
- 操作系统管理内存的机制——为什么要设置虚拟内存?
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- 操作系统管理内存的机制——为什么要设置虚拟内存?
- linux下的虚拟内存和分页分段机制
- Redis持久化机制和虚拟内存的使用
- Linux虚拟内存实现机制- 悟空- JavaEye技术网站