Windows虚拟内存简介

原创 2017年09月30日 15:13:00

Windows系统中,系统内存本身的空间可能非常有限,但是通过虚拟内存(Virtual Memory),可以让程序可以拥有超过系统物理内存大小的可用内存空间。

 

顾名思义,虚拟内存是逻辑层面的划分。操作系统通过内存管理器(Memory Manager)将虚拟内存地址与物理地址进行对应。通常在系统中,虚拟内存的大小都要大于系统的实际内存大小,因此内存管理器会将一部分虚拟内存中的内容映射到磁盘中。

 

当应用访问虚拟内存地址的时候,如果内存管理器发现对应的物理地址在磁盘中时,内存管理器会将这部分信息从磁盘中加载回内存中以供应用程序访问。

 

对于32位操作系统来说,地址总线的宽度也是32位,因此内存寻址的最大寻址空间数量为232次方,即4G个地址空间,每个地址空间对应1个字节的存储单元,所以理论上32位的系统支持的虚拟内存大小最大为4GB。在这4G个虚拟内存地址中,默认情况下,Windows会将低位地址(0x00000000-0x7FFFFFFF)的这一半分配给用户进程进行使用,而将高位地址(0x80000000-0xFFFFFFFF)这一半分配给操作系统进程来使用。这个比例可以在计算机启动设置中修改,最多可以为用户进程分配3G个虚拟内存地址。

 

Windows内存分页的机制:

Windows内存地址转换主要通过一个称为页表目录的表来进行映射,在Intel x86 CPU中,页表目录的入口指针存储在寄存器CR3中,指针指向一个长度为1024×32位大小的数组(每32位对应一个虚拟地址),也就是下图中的页目录:

物 理 内 CR3 寄 存 器 指 向 页 目 录 首 地 址 磁 盘 存 储 器 页 表 页 目 录

在页目录中每个虚拟地址的组成:

22 《 21 12 《 11 《 页 目 求 萦 引 0 个 可 能 值 凵 页 表 萦 引 0 个 可 能 值 凵 页 中 的 位 置 ( “ 96 个 可 能 值 凵

其中前10位用于定义页目录的索引(210次方恰好为1024),中间10位对应这一页对应的物理内存的首地址,最后12位对应数据相对于首地址的偏移量,所以上图中一个页中可以对应4096个地址,即一个页的大小为4KB

 

对于很多内存使用量很大的应用来说,2GB的可用内存空间远远不能满足需要,因此Windows提供了地址窗口扩展(AWEAddress Windowing Extension)的接口来满足更大内存分配需求的应用程序,通过AWE,应用程序可以在自己的地址空间中保存一个视图(View)或者窗口(Window),然后将物理内存与这个视图或窗口进行映射,对2GB的用户进程可占用的内存来说,最多可以为其映射64GB的物理内存。虽然AWE为程序开发者增加了负担,同时也在映射上增加了开销,但是确实为32位系统下的很多需要大内存的应用程序提供了一个可用方案。为了提高映射的效率以及增加硬件层面的支持,AWE规定了很多限制,具体可以参考https://msdn.microsoft.com/en-us/library/windows/desktop/aa366527(v=vs.85).aspx

 

相比而言,64bit的操作系统提供了更大的寻址空间,理论上64位总线应该支持264次方个地址空间,即16EB1EB=2^60B)内存,但是由于实际物理架构的限制,当前对于IA-64 CPU来说,最多可以支持7TB的虚拟内存大小,而x64可支持8TB的虚拟内存,Windows系统当前将这个值限制为8TB

 

虚拟内存的大小可以在操作系统下面的位置进行修改:

在计算机属性中找到高级设置(Advancedsystem settings),在高级选项卡中找到性能的设置,在打开的窗口中找到高级选项卡,下边就是虚拟内存的设置了:

Control Panel All Control Panel Items System Properties Control Panel Home Computer Name H System em Protection Remote Performance Options Advanced ssor sch uling ta Execution Prevention Device Manager You must be Remote settings ormance System protection on as an Administrato make most of these changes Visual effects. processor scheduling memory usag nd virtual memory Advanced system settings Desktop settings related to your sign-in Startup and Recovery System startup system failure. and debugging information Environment Variables . See also Security and Maintenance Choose hon to ocate processor resources. Adjust for best per C) Backgr ound services Virtual memory A paging fie is an area on the hard disk that Windows uses as if it vvere RAM. Total paging file size for all drives: 8192 ME

 

点击修改,调整虚拟内存的值:

计算机生成了可选文字:Virtual Memory Automatcally manage paging file size for all drives aging e size Drive C'/olume Label) Selected drive : @Custom size. Inital size (MB): Maximum size (ME): p File Size (Ma) S stem mana ed 20480 System managed size C) No paging file Total paging file size for al drives Minimum allowed. Currently allocated: 16 ME 2901 ME 8192 ME

 

参考链接:

https://bbs.pediy.com/thread-135274.htm

http://blog.csdn.net/lanuage/article/details/52003700

http://book.51cto.com/art/200910/159944.htm

http://blog.csdn.net/tttt418/article/details/6113860

http://www.cnblogs.com/VIPler/p/4282584.html

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366527(v=vs.85).aspx

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Windows虚拟内存的使用(四)

锁定页面和解锁页面 1 通过调用VirtualLock方法,可以将页面锁定在物理内存中,从而防止虚拟内存管理机制将页面交换至页面文件,而引起不必要的硬盘和物理内存之间的低效页面交换。 2 通过调用...

windows虚拟内存整理工具

  • 2008年04月28日 10:37
  • 67KB
  • 下载

windows虚拟内存管理

内存管理是操作系统非常重要的部分,处理器每一次的升级都会给内存管理方式带来巨大的变化,向早期的8086cpu的分段式管理,到后来的80x86 系列的32位cpu推出的保护模式和段页式管理。在应用程序中...
  • lanuage
  • lanuage
  • 2016年07月21日 09:22
  • 1768

在32位Windows上扩展虚拟内存(Labview)

最近在学习Labview编程,但是遇到一些小问题,比如编好的程序运行时经常出现内存不足的情况,查阅相关资料找到了解决方案:可以修改Labview程序的虚拟内存。修改方案如下: Lab...

*《精通Windows API》 5.4.2 分配和释放可读可写的虚拟内存页面

/* ************************************ *《精通Windows API》 * 示例代码 * virtual.c * 5.4.2 分配和释放可读可写的虚拟内存...
  • SJF0115
  • SJF0115
  • 2011年12月15日 16:32
  • 1112

Windows CE虚拟内存模型

Windows CE虚拟内存模型(一) zz (2007-09-21 10:09:19) 转载▼ 标签: it/科技 分类: 工作 ...

Windows Server2012虚拟内存设置

前段时间阿里云搞活动,买了个1核1G RAM的Windows 2012,今天准备装IIS的时候出现了“无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失”,“线程未启动”等问题,网上的说法...
  • autista
  • autista
  • 2017年05月08日 21:25
  • 1453

Windows虚拟内存问题详解

手动设置虚拟内存- 一、量身定制虚似内存- 二、Windows虚拟内存加速密籍(一)- 二、Windows虚拟内存加速密籍(二)- 三、出现“虚拟内存不够”的几个可能- 页面文 件的设置-  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows虚拟内存简介
举报原因:
原因补充:

(最多只允许输入30个字)