虚拟内存

这里写图片描述

在 主存(内存)- 辅存(硬盘等)这一层次的不断发展中,逐渐形成了虚拟存储系统。在这个系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应。例如,机器指令地址码为24位,则虚拟存储器的存储单元个数可达16M(2的24次方是16M。为啥地址码是多少位,存储单元个数就是2的多少次方?)。而这个数字比真实内存的存储单元个数要大得多。这类指令地址码称为虚地址(虚存地址、虚拟地址)或逻辑地址,而把真实内存的地址称为实地址或物理地址。

物理地址是程序在执行过程中能够真正访问的地址,也是实实在在的主存地址。对具有虚拟存储器的计算机系统而言,程序员编程时,可用的地址空间远远大于主存空间(靠,我编程从来不关心内存地址;内存地址只是一个个符号化了的东西:变量、指针什么的。也从来不关心它够不够,好像没遇到不够的?),使得程序员(其实改为进程更合适)以为自己占有一个容量极大的主存。但其实这个大主存并不存在,这也是被称为虚拟存储器的原因。

对虚拟存储器而言,其逻辑地址变换为物理地址的工作由操作系统和硬件自动完成,这一切对程序员是透明的。当虚地址的内容在主存时,机器可立即使用;若不在主存,则必须先调入主存才能为机器所用。

“操作系统的各种内存管理策略都出于同一个目的:同时将多个进程存放在内存中,以便允许多道程序设计。不过,这些策略都需要在进程执行之前将整个进程放在内存中。动态载入虽然能减轻这个限制,但需要程序员小心应用,并且花费额外的工作。
而虚拟内存则允许执行进程部分在内存中,一个显著的优点是程序可以比物理内存大。而且虚拟内存将内存抽象成一个巨大的数组,将用户视界的逻辑内存与物理内存分离,使得程序员不受内存存储的限制。简而言之,虚拟内存展现在程序员面前的是一个比物理内存要大得多的、地址连续的内存空间,而事实上是映射到支离破碎的物理内存,乃至磁盘上”
相关文章可见拙作 操作系统学习笔记:虚拟内存

windows的虚拟内存
以上所述,感觉虚拟内存就是个逻辑概念,没有实物相对应。但是,windows中,明明是占用了一部分硬盘空间,称为“虚拟内存”的。这是为什么捏?

确实,Windows的虚拟内存实现技术(虚拟内存是个接口,然后操作系统各自实现?),是匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。物理内存不足,则用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中(操作系统有所谓进程调度,线程调度,对内存的使用有分页、分段等使用方式)。将数据移入分页文件可释放RAM,以便完成工作。

硬盘上被划作虚拟内存部分,其实就是一个硕大无朋的文件:PageFile.sys,通常状态下是看不到的。必须关闭资源管理器对系统文件的保护功能才能看到这个文件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值