共计 957 个字符,预计需要花费 3 分钟才能阅读完成。
引言
本文为第十篇,存储管理之虚拟内存 ,在正式了解之前,有一个问题,一个游戏十几 G,物理内存只有 4G,那么这个游戏是怎么运行起来的呢?为了解决这个问题,就需要本篇中介绍到的 虚拟内存 的知识
虚拟内存概述
- 有些进程实际需要的内存很大,超过物理内存的容量
- 多道程序设计,使得每个进程可用物理内存更加稀缺
- 不可能无限增加物理内存,物理内存总有不够的时候
这些原因就促使 虚拟内存技术 的产生
- 虚拟内存 是操作系统内存管理的关键技术
- 使得多道程序运行和大程序运行成为现实
- 把程序使用内存划分,把部分暂时不使用的内存放置在辅存
举例:
左边为进程的 逻辑空间 ,红色部分为一个程序需要使用的内存,操作系统会将内存加载到物理内存中去,灰色的部分为暂时不需要使用的内存,这部分会先放到磁盘中,这样可以节省物理内存,把更多的物理内存让给其它进程使用,并且,在这个里边,如果说这个进程的逻辑空间很大的话, 这些很大,且暂时不需要的空间都可以放到磁盘里边暂时保管
程序的局部性原理
局部性原理指的是 CPU 访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。这个原理也是使得虚拟内存技术可以实现的一个原因
因为有局部性原理
- 所以计算机在加载程序时,无需全部逻辑空间装入内存,装载部分即可(需要使用的部分)
- 如果发现所使用的内存不在物理内存中,则发出 缺页中断,发起页面置换,把保存在辅存中的页面置换到物理内存中,这样程序又可以继续运行下去了
- 从用户层面看,程序拥有很大的空间,既是 虚拟内存
虚拟内存实际上是对物理内存的扩充,速度接近于内存,成本接近于辅存
虚拟内存的置换算法
- 先进先出算法(FIFO)
- 最不经常使用算法(LFU)
- 最近最少使用算法(LRU)
高速缓存的替换时机
在高速缓存替换的时候,主要发生在 CPU 需要获取缓存的时候,发现缓存中没有对应的数据,此时就会发生高速缓存的替换,也就是从主存中载入所需数据
主存页面的替换时机
主存缺页的时候,就会去辅存中加载相关数据,这个时候就会发生主存页面替换
对比来看:
- 替换策略发生在:高速缓存 - 主存层次、主存 - 辅存层次
- 高速缓存 - 主存层次的替换策略主要是为了解决 速度 问题
- 主存 - 辅存层次主要是为了解决 容量 的问题(这也是存储器存储分层的理由)
在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践
正文完