虚拟内存
1概念介绍
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换
2物理寻址
物理内存:计算机实际的内存空间,物理内存也叫主内存,RAM。CPU只能和RAM进行数据交互,每个执行的程序,必须将数据从磁盘中拷贝到物理内存中才能运行。
程序加载到物理内存中才能运行,有时我们需要加载整个程序,但有时我们只需要加载程序被调用的一部分,这个过程叫做动态加载。
CPU 对内存的寻址最简单的方式就是直接使用物理内存地址,这种方式一般叫做物理寻址。早期的 PC 使用物理寻址。
物理寻址的好处是简单,坏处是不安全,操作系统的地址直接暴露给用户程序,用户程序可以破坏操作系统。
这种解决方案是采用特殊的硬件保护;还有同时运行多个程序比较困难:多个用户程序如果都直接引用物理地址,很容易互相干扰。
3虚拟内存基本思想
虚拟内存的基本思想是,每个程序都有自己的地址空间,这个地址空间被划分为多个称为页面(page) 的块。每一页都是连续的地址范围。这些页通过内存管理单元(MMU)被映射到物理内存。
当程序引用到一部分在物理内存中的地址空间时,硬件会立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。
引入虚拟内存可在较小的可用内存中执行较大的用户程序;提供给用户可用的虚拟内存空间通常大于物理内存,可在内存中容纳更多程序并发执行。
4 虚拟内存解决的问题
内存虚拟化是为了解决两个突出问题:
多个进程装入内存内存不够用。
内存之间程序互相打扰访问。不小心访问写数据到别人的内存空间造成错误。
5 虚拟内存的实现
分页式
进程页表:完成虚拟地址到物理地址的映射。每个进程有一个页表,描述该进程占用的物理页面及逻辑排列顺序。页表存储在内存里,内存管理单元 (MMU)将虚拟内存地址转换成物理地址的工作。
请求分段存储管理。
请求段页式存储管理。