fbpx
维基百科

虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上物理内存通常被分隔成多个内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。此外,虚拟内存技术可以使多个进程共享同一个运行库,并通过分割不同进程的内存空间来提高系统的安全性。

要注意的是,虚拟内存不只是「用磁盘空间来扩展物理内存」的意思——这只是扩充内存级别以使其包含硬盘驱动器而已。把内存扩展到磁盘只是使用虚拟内存技术的一个结果,它的作用也可以通过覆盖或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现。对虚拟内存的定义是基于对地址空间的重定义的,即把地址空间定义为「连续的虚拟内存地址」,以借此「欺骗」程序,使它们以为自己正在使用一大块的「连续」地址。

那些需要快速存取或者响应时间非常稳定的嵌入式系统,以及其他的具有特殊应用的计算机系统,可能会为了避免让运算结果的可预测性降低,而选择不使用虚拟内存。

用途与实现 编辑

虚拟内存技术是现代计算机系统结构中不可分割的一部分。现代所有用于一般应用的操作系统都对普通的应用程序使用虚拟内存技术,例如文字处理软件,电子制表软件,多媒体播放器等等。大部分架构通过CPU中独立的硬件内存管理单元来辅助实现这一功能。部分仿真器虚拟机也能够通过宿主系统中的硬件来提高性能。[1]老一些的操作系统,如DOS和1980年代的Windows[2],或者那些1960年代的大型机,一般都没有虚拟内存的功能——但是Atlas英语Atlas_(computer)B5000英语Burroughs_large_systems#B5000苹果公司Lisa都是很值得注意的例外。

Intel 80286开始,X86指令集通过保护模式引入了虚拟内存技术,但是由于其使用的存储器分段技术对大内存段的支持不佳,后续的80386在分段技术框架下支持了内存分页技术。

Windows操作系统的虚拟内存 编辑

对于32位进程,其逻辑内存空间为4G。Windows API提供了一套函数操纵进程的虚拟内存:

  • VirtualAlloc(PVOID开始地址,SIZE_T大小,DWORD内存类型,DWORD保护属性)。 内存类型有MEM_RESERVE(保留)、MEM_RELEASE(释放)和MEM_COMMIT(提交)。保留是指占用一块逻辑地址空间,但未实际分配物理内存;提交是实际分配物理内存。MEM_RESET用于把内存清零。 保护属性为: PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE。
  • VirtualProtect(PVOID基地址,SIZE_T大小,DWORD新保护属性,DWORD旧保护属性)。更改保护属性。
  • VirtualFree(PVOID基地址,SIZE_T大小,DWORD内存类型)。页面释放。内存类型是MEM_DECOMMIT或者MEM_RELEASE
  • VirtualLock
  • VirtualUnlock
  • VirtualQuery

参见 编辑

参考资料 编辑

  1. ^ (PDF). AMD. [28 April 2015]. (原始内容 (PDF)存档于2022-03-21). 
  2. ^ Windows Version History. Microsoft. 2005-07-19 [2008-12-03]. (原始内容于2015-02-26). 

虚拟内存, 此條目可参照英語維基百科相應條目来扩充, 2020年7月28日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 是计算机系统内存管理的一种技术, 它使得应用程序认为它拥有连续可用. 此條目可参照英語維基百科相應條目来扩充 2020年7月28日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 虚拟内存是计算机系统内存管理的一种技术 它使得应用程序认为它拥有连续可用的内存 一个连续完整的地址空间 而实际上物理内存通常被分隔成多个内存碎片 还有部分暂时存储在外部磁盘存储器上 在需要时进行数据交换 与没有使用虚拟内存技术的系统相比 使用这种技术使得大型程序的编写变得更容易 对真正的物理内存 例如RAM 的使用也更有效率 此外 虚拟内存技术可以使多个进程共享同一个运行库 并通过分割不同进程的内存空间来提高系统的安全性 要注意的是 虚拟内存不只是 用磁盘空间来扩展物理内存 的意思 这只是扩充内存级别以使其包含硬盘驱动器而已 把内存扩展到磁盘只是使用虚拟内存技术的一个结果 它的作用也可以通过覆盖或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现 对虚拟内存的定义是基于对地址空间的重定义的 即把地址空间定义为 连续的虚拟内存地址 以借此 欺骗 程序 使它们以为自己正在使用一大块的 连续 地址 那些需要快速存取或者响应时间非常稳定的嵌入式系统 以及其他的具有特殊应用的计算机系统 可能会为了避免让运算结果的可预测性降低 而选择不使用虚拟内存 目录 1 用途与实现 2 Windows操作系统的虚拟内存 3 参见 4 参考资料用途与实现 编辑虚拟内存技术是现代计算机系统结构中不可分割的一部分 现代所有用于一般应用的操作系统都对普通的应用程序使用虚拟内存技术 例如文字处理软件 电子制表软件 多媒体播放器等等 大部分架构通过CPU中独立的硬件内存管理单元来辅助实现这一功能 部分仿真器和虚拟机也能够通过宿主系统中的硬件来提高性能 1 老一些的操作系统 如DOS和1980年代的Windows 2 或者那些1960年代的大型机 一般都没有虚拟内存的功能 但是Atlas 英语 Atlas computer B5000 英语 Burroughs large systems B5000 和苹果公司的Lisa都是很值得注意的例外 从Intel 80286开始 X86指令集通过保护模式引入了虚拟内存技术 但是由于其使用的存储器分段技术对大内存段的支持不佳 后续的80386在分段技术框架下支持了内存分页技术 Windows操作系统的虚拟内存 编辑对于32位进程 其逻辑内存空间为4G Windows API提供了一套函数操纵进程的虚拟内存 VirtualAlloc PVOID开始地址 SIZE T大小 DWORD内存类型 DWORD保护属性 内存类型有MEM RESERVE 保留 MEM RELEASE 释放 和MEM COMMIT 提交 保留是指占用一块逻辑地址空间 但未实际分配物理内存 提交是实际分配物理内存 MEM RESET用于把内存清零 保护属性为 PAGE NOACCESS PAGE READONLY PAGE READWRITE PAGE EXECUTE PAGE EXECUTE READ PAGE EXECUTE READWRITE VirtualProtect PVOID基地址 SIZE T大小 DWORD新保护属性 DWORD旧保护属性 更改保护属性 VirtualFree PVOID基地址 SIZE T大小 DWORD内存类型 页面释放 内存类型是MEM DECOMMIT或者MEM RELEASE VirtualLock VirtualUnlock VirtualQuery参见 编辑高速緩存文件置換機制 分頁 使用者空間参考资料 编辑 AMD V Nested Paging PDF AMD 28 April 2015 原始内容 PDF 存档于2022 03 21 Windows Version History Microsoft 2005 07 19 2008 12 03 原始内容存档于2015 02 26 Windows XP的虚拟内存与性能 页面存档备份 存于互联网档案馆 微软官方内存管理白皮书 页面存档备份 存于互联网档案馆 Linux下内存管理 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 虚拟内存 amp oldid 77069534, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。