虚拟内存
  ajtZ4dACL54c 2023年11月02日 51 0


虚拟内存_主存

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

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

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

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

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

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

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
ajtZ4dACL54c
最新推荐 更多