Virtual memory 虚拟内存
虚拟内存的作用
- 将主存看成存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,高效实用主存
- 为每个进程提供一致的地址空间,简化内存管理
- 保护每个进程的地址空间不被其他进程破坏
- 保护:一组确保共享处理器、主存、I/O设备的多个进程之间没有故意地,无意地读写其他进程的数据机制
物理地址和虚拟地址 Physical Address & Virtual Address
物理地址: 主存储器的地址
物理寻址: CPU执行指令后直接生成一个物理地址,通过内存总线传递给主存。主存取出物理地址处的字节并返回给CPU
虚拟地址: 虚拟空间的地址,当需要访问主存时需要通过地址映射转换为物理地址
虚拟寻址: CPU执行指令后先生成一个虚拟地址,虚拟地址在被送到内存之前先转换成对应的物理地址(地址翻译 address translation)
虚拟存储器和cache的工作原理是一样的,在虚拟存储器中,块被称为页(page),访问缺失称为缺页(page fault) 即访问的页不在主存中,需要到磁盘中去寻找。
Page fault的代价是很高的,一次缺页处理将花费数百万个时钟周期,因为主存大概比磁盘快100000倍。
在设计虚拟存储系统时应考虑一些关键性因素:
- 页应该足够大(目前典型4-16KB)
- 使用能降低缺页率的组织结构(页以全相联(fully associated)的方式放置
- 缺页用软件处理,使用算法来选择替换页
- 由于写时间