存储管理——虚拟内存

什么是虚拟内存

为什么需要虚拟内存?
1.进程需要的实际内存很大,超过物理内存容量
2.操作系统的多道程序设计,多个进程同时在内存里面,使得每个进程可用物理内存更加稀缺
3.不可能无限增加计算机的物理内存

虚拟内存是操作系统内存管理的关键技术,它使多道程序的运行和大程序运行成为现实。

虚拟内存是如何工作的?
把进程所使用的内存进行划分,把部分暂时不需要使用的内存放到辅助里,也就是使用辅存暂时的保存程序可能会使用的内存。

程序的局部性原理

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中

由于局部性原理,计算机在加载程序的时候,不需要把所有的逻辑空间都装入内存里面,而是装载部分就可以了。如果访问页不再内存里面,就会发出缺页中断,发起页面置换,把从保存在辅存里面的页面置换到物理内存里。从用户的角度来看,就像程序拥有无限大的内存空间。

虚拟内存实际上是对物理内存的扩充,速度接近于内存,成本接近于辅存。

虚拟内存的置换算法

1.先进先出算法(FIFO)
2.最不经常使用算法(LFU)
3.最近最少使用算法(LRU)

前面的一篇学习笔记较为详细的实现了这些算法:实现双向链表的基础上实现内存置换算法

CPU<——>高速缓存(缓存没有数据)<—需要从主存载入数据—>主存(主存缺页)<—从辅存加载页面数据—>辅存

高速缓存的替换时机
高速缓存替换主要是发生在CPU需要获取缓存时,发现缓存里面没有对应数据的时候,这时就需要从主存里面载入相关的数据。

主存页面的替换时机
类似的主存页面的替换时机,发生在主存缺页的时候,就会从辅存里面去加载相关的页面数据。

对比Cache与主存的替换时机:

  1. 替换策略发生在Cache——主存层次和主存——辅存层次,替换策略相关的算法都是一样的。
  2. Cache——主存层次的替换策略主要是为了解决CPU的速度问题
  3. 主存——辅存层次主要是为了解决容量问题

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/108369573