Three Import capability of VM ?
It works automatically, why need to understand it?
Why and what is VM?
为了更加有效的管理内存并减少出错,现代系统提供了一种对主存的抽象概念叫做虚拟内存(VM)
Three Import capability of VM ?
- 将主存作为磁盘上的地址空间的高速缓存,主存中只保存活动区域,并根据需要在磁盘和主存间来回传送数据
- 为每个进程提供了一致的地址空间,从而简化了内存管理
- 保护每个进程的地址空间不被其它进程破坏
It works automatically, why need to understand it?
- 它是核心的, 涉及计算机系统所有层面,在硬件异常、汇编器、连接器、加载器、共享对象、文件和进程设计中扮演重要角色
- 它是强大的,可以给应用程序强大能力,创建和销毁内存片,内存片映射到磁盘文件的某部分,与其它进程共享内存
- 它是危险的,引用变量、间接引用一个指针,malloc 都鞥太分配内存时,就会和VM交互,使用不当就会发生内存相关的错误,段错误或保护错误,理解VM以为malloc 之类的分配程序可以帮助避免这些错误
Perspective to study VM
- 如何工作的
- 应用程序如何使用和管理VM的: 显式的内存映射, malloc动态分配器的调用来管理虚拟内存、内存有关错误以及如何避免
1. 物理与虚拟寻址
主存组织为一个连续的字节大小的单元组成的数组,每个字节都有个唯一的物理地址PA
- 物理寻址:CPU执行加载指令,会生成一个有效物理地址,通过内存总线发给主存,主存取出内容返回给CPU。例子:数字信号处理器,嵌入式微控制自弃,Cray超级计算机系统
- 虚拟寻址:CPU生成一个虚拟地址来访问主存,先地址翻译,VM->PA ,需要操作系统和硬件的紧密合作, CPU芯片上的叫做MMU 内存管理单元的专用硬件来完成,利用存放在主存的查询表来动态翻译,该表内容有操作系统管理
2. 地址空间
- 虚拟地址空间: 连续的,线性的, 一个地址空间的大小由表示最大地址所需要的位数来描述。N = 叫做n位地址空间,现代系统对应于32位,64位
- 物理地址空间 对应于物理内存的M个字节,
- 主存的每个字节都有个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址