qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
阅读:1498回复:11

科普第18篇——虚拟内存

楼主#
更多 发布于:2011-07-22 21:35
虚拟内存,大家或多或少都听说过这个名词了,但很多同学以为虚拟内存就是把硬盘上的一部分空间拿来扩展内存用,这就不对了,或者说这只是其中的一方面。

我们之前介绍过了,内存的每一个字节都有一个地址,而寻址和CPU的地址寄存器有关。(详见科普第9篇)

程序运行时都要加载到内存,包括指令和数据。而这些代码加载到内存的地址都是在程序代码里写好的(当然我指的是机器语言,高级语言不会在程序中写这些东西,相关工作都是由编译器完成的)。
早期的计算机还没有问题,因为计算机里只会运行一个程序。

但是后来,计算机里可以运行多个程序了,问题就来了——因为要使用的内存很可能已经被别的程序用了,如果强行使用的话就可能会意外改写别的程序在内存中的数据或代码,造成程序出错。
所以,现代操作系统引入了“虚拟内存管理”(Virtual Memory Management),这需要CPU里的内存管理单元MMU(Memory Management Unit)支持。

虚拟内存使用虚拟地址(Virtual Address,VA)来访问,而实际的内存使用物理地址(Physical Address,PA)来访问。
MMU会把VA映射到PA,这个映射的基本单位是页(Page),32位处理器的一页是4KB大小。对应的物理内存的页称为页帧(Page Frame)。页面的映射记录在页表(Page Table)里。

程序运行时,操作系统会初始化页面映射,并把映射内容记录到页表里。程序访问内存时,MMU会根据页表把VA翻译成PA,然后再访问物理内存。所以即使两个程序里的内存地址是一样的,经过VA到PA的转换之后也代表着不同的物理内存,这样程序就不用担心会修改到别的程序在内存里的内容了。

而且虚拟内存还能提高安全性,防止程序访问和修改不必要的内存(特别是操作系统内核的部分)。

还有一个好处就是最开始提到的,操作系统可以把暂时不用的页保存到磁盘上,需要的时候再载入到物理内存中。

此外,也是在科普第9篇里提到过的,通过PAE(物理地址扩展),32位CPU的内存地址,可以通过虚拟内存映射到大于4GB的内存上,从而突破内存大小的限制。实际上Intel从Pentium Pro开始就支持PAE了,微软的消费级操作系统不支持完全是出于市场的考虑(服务器操作系统是支持的)。

即使你把操作系统里的虚拟内存设置得再大,也解决不了内存不足的问题。因为硬盘上只是储存暂时不用的页面,要用的时候还是得载入到内存的。加内存才是真正的解决之道!
因为“虚拟内存”是一种内存管理机制,而不是“把硬盘虚拟为内存使用”,所以Windows XP里,这个设置已经改叫做“页面文件”了。

==========之前的文章==========
科普第1篇——计算机色彩
科普第1篇补遗——CSS颜色
科普第2篇——光盘
科普第3篇——2、8、10、16
科普第4篇——电池
科普第5篇——浏览器
科普第6篇——字符编码
科普第7篇——加密解密
科普第8篇——移动通信技术
科普第9篇——为什么32位CPU不能支持大于4GB内存?
科普第10篇——智能手机简介
科普第11篇——14.52-14.49=0.0299999?
科普第12篇——为什么HTTPS会更安全?
科普第13篇——计算机语言
科普第14篇——字体(上)
科普第15篇——字体(中)
科普第16篇——字体(下)
科普第17篇——域名解析
科普第17篇补遗——域名

科普番外篇1——虽然没用但了解一下也很有趣的知识
喜欢0 评分0
qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
沙发#
发布于:2011-07-22 21:58
回 1楼(非Θ好人) 的帖子
不建议自己设置页面文件大小,一旦不够用就可能报警“虚拟内存过小”,还是使用系统自己管理的比较好。

Linux的是专门的一个分区“交换空间”(swap),就无法调整大小了。
回复(0) 喜欢(0)     评分
qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
2楼#
发布于:2011-07-22 22:32
回 3楼(ct一剑) 的帖子
因为“虚拟内存”实际上是一种内存管理机制,而不是“把硬盘虚拟成内存”,所以Windows XP里这个已经改叫“页面文件”了,这样更准确。
回复(0) 喜欢(0)     评分
游客

返回顶部