虚拟内存的意义及管理

虚拟内存的意义及管理

总结—虚拟内存有以下几个作用:
1. 内存访问保护
2. 按需分页(lazy load技术)
3. 页换入换出(page swap in/out)
4. 写时复制(copy on write)

什么是虚拟内存?简单地说,是指程序员或CPU “需要”和直接“看到”的内存,这其实暗示了两点:1、虚拟内存单元不一定有实际的物理内存单元对应,即实际的物理内存单元可能不存在;2、如果虚拟内存单元对应有实际的物理内存单元,那二者的地址一般不是相等的。通过操作系统的某种内存管理和映射技术可建立虚拟内存与实际的物理内存的对应关系,使得程序员或CPU访问的虚拟内存地址会转换为另外一个物理内存地址。

那么这个“虚拟”的作用或意义在哪里体现呢?在操作系统中,虚拟内存其实包含多个虚拟层次,在不同的层次体现了不同的作用。首先,在有了分段或分页机制后,程序员或CPU直接“看到”的地址已经不是实际的物理地址了,这已经有一层虚拟化,我们可简称为内存地址虚拟化。有了内存地址虚拟化,我们就可以通过设置段界限或页表项来设定软件运行时的访问空间,确保软件运行不越界,完成内存访问保护的功能。

通过内存地址虚拟化,可以使得软件在没有访问某虚拟内存地址时不分配具体的物理内存,而只有在实际访问某虚拟内存地址时,操作系统再动态地分配物理内存,建立虚拟内存到物理内存的页映射关系,这种技术属于lazy load技术,简称按需分页(demand paging)。把不经常访问的数据所占的内存空间临时写到硬盘上,这样可以腾出更多的空闲内存空间给经常访问的数据;当CPU访问到不经常访问的数据时,再把这些数据从硬盘读入到内存中,这种技术称为页换入换出(page swap in/out)。两个虚拟页的数据内容相同时,可只分配一个物理页框,这样如果对两个虚拟页的访问方式是只读方式,这这两个虚拟页可共享页框,节省内存空间;如果CPU对其中之一的虚拟页进行写操作,则这两个虚拟页的数据内容会不同,需要分配一个新的物理页框,并将物理页框标记为可写,这样两个虚拟页面将映射到不同的物理页帧,确保整个内存空间的正确访问。这种技术称为写时复制(Copy On Write,简称COW)。这三种内存管理技术给了程序员更大的内存“空间”,我们称为内存空间虚拟化。

ucore在实现上述三种技术时,需要解决的一个关键问题是,何时进行请求调页/页换入换出/写时复制处理?其实,在程序的执行过程中由于某种原因(页框不存在/写只读页等)而使 CPU 无法最终访问到相应的物理内存单元,即无法完成从虚拟地址到物理地址映射时,CPU 会产生一次缺页异常,从而需要进行相应的缺页异常服务例程。这个缺页异常处理的时机就是求调页/页换入换出/写时复制处理的执行时机,当相关处理完成后,缺页异常服务例程会返回到产生异常的指令处重新执行,使得软件可以继续正常运行下去。

原文链接

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Primo Ramdisk 是 VSuite Ramdisk 的第二代产品。相比 VSuite Ramdisk,它实现了更多的功能,更好的性能,以及更友好的用户界面。和 VSuite Ramdisk 同样,Primo Ramdisk 提供了对传统硬盘性能瓶颈问题的有效解决方案。它采用独特的软件算法,高效率地将物理内存虚拟成物理硬盘,使得对硬盘文件的数据读写转化为对内存的数据访 问。由于物理内存的访问速度远远超过传统硬盘,因此可以极大的提高数据读写速度,从而突破硬盘瓶颈,飞速提升计算机性能。 Primo Ramdisk 具有一系列强大的功能和选项以使性能最大化,并使软件具有广泛的应用性。Primo Ramdisk 可支持创建128个虚拟硬盘,每个虚拟硬盘可被 Windows 系统识别为真实物理硬盘或逻辑硬盘。虚拟硬盘可被格式成 Windows 支持的文件系统,并允许用户根据需要对文件系统进行自定义设置。 由 于内存具有断电数据消失的特性,在某些应用环境中正好可以起到保护数据安全的作用,防止重要数据残留在物理硬盘中。Primo Ramdisk 同时提供了强大的镜像文件功能,支持关机时将虚拟硬盘的内容自动保存到镜像文件以及开机时自动从镜像文件加载内容到虚拟硬盘等功能,使内存虚拟硬盘的内容 在计算机开关机时仍可继续存在。Primo Ramisk 支持诸多高级镜像功能,如定时保存、 实时保存、快速保存以及延迟加载等,可以更好地满足用户多种需求。 此 外,Primo Ramdisk 提供了独特的内存管理特性,更有效地利用物理内存。它支持动态内存管理,可以根据需要动态地分配或释放内存,从而更合理地使用物理内存,避免长期无意义地 占用内存。Primo Ramdisk 同时实现了未识别内存管理接口 (UIMMI),可以使用未识别内存创建虚拟硬盘,从而间接地支持在32位操作系统上使用超过4GB的物理内存,避免物理内存的浪费。 除了创建内存虚拟硬盘,Primo Ramdisk 甚至可以创建混合虚拟硬盘和文件虚拟硬盘,极大地扩展了软件的功能和应用范围。 主要特性列表 硬盘特性 * 支持内存虚拟硬盘,混合虚拟硬盘,以及文件虚拟硬盘。 * 支持SCSI 硬盘,Direct-IO 硬盘。 * 支持临时虚拟硬盘。 * 支持128个虚拟硬盘。 内存特性 * 支持动态内存管理 (DMM)。 * 支持未识别内存管理接口 (UIMMI)。 * 支持超过4GB内存的访问。 文件系统特性 * 支持 FAT/FAT32/NTFS 文件系统。 * 支持自定义簇大小。 * 支持自定义卷标、卷序列号和盘符。 * 支持自定义文件夹。 * 支持自定义 NTFS 文件系统设置 (压缩、索引和用户权限)。 镜像文件特性 * 支持镜像文件格式:完全镜像/智能镜像/压缩镜像。 * 支持加载和保存功能: 仅加载,关机时保存,删除前保存,定时保存,实时保存,手动保存。 * 支持延迟加载模式。 * 支持快速保存模式。 旗舰版更新历史 v5.6.0 (2012-06-25) * 支持命令行接口(CLI)。 * 支持即时关联镜像文件,可在多个镜像文件间方便切换。 * 支持使用新设置即时重建虚拟硬盘。 * 修正 bug: 将 Direct-IO 硬盘修改为 SCSI 硬盘,并重启计算机后,盘符可能发生改动。 * 修正 bug: 如果镜像保存过程失败,则再次保存镜像时引起程序死锁。 v5.5.0 (2012-04-19) * 修正 bug: 如果 Windows XP/2003 安装在 FAT/FAT32 格式的分区,检测未识别内存失败(错误码:2)。 * 修正 bug: Windows 8 系统下内存分配速度极慢。 * 修正 bug: 无法修改自定义文件夹名称的大小写。 * 用户界面的一些小改进。 * 如果您安装了FancyCache,请务必将FancyCache同时更新到版本0.8.0或以上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值