1. 知识点回顾
前面我们已经知道,存储的层次结构,以及缓存保存的是内存的数据,且缓存的三种设计结构: 直接隐射,组相连 和全相连。以及缓存的工作原理。
既然我们知道存储是层级结构,第i层的存储器缓存的是第i+1层的存储器的数据。所以就有寄存器缓存缓存器cache的内容, cache缓存内存的数据,而内存就应该缓存磁盘的数据
下面我们就来讨论内存如何缓存磁盘的数据。
2. 缓存的整体架构
继续前面的讨论思路, 我们将依次讨论以下的缓存细节,注意次序很重要,这个是缓存的设计过程。
- 缓存块的大小,也就是磁盘和内存之间数据缓存块的大小
- 组数量的选择
- 选择缓存位置
2.1 缓存块大小的选择
缓存块大小的大小应该是受到程序经常访问的内存密集度来决定的, 也就是局部性
2.2 缓存位置的选择
现在我们来考虑内存和磁盘结构中的特殊术语——虚拟存储器。
虚拟存储器被设计的原因:
1. 多个进程同时使用内存空间,存储容易发生破会
2. 每个进程使用的存储空间受限于物理的内存的大小
针对上面的原因,设计者提出了虚拟存储器的概念。 cpu通过虚拟地址而不是物理地址访问内存。
该虚拟地址可以访问的内存空间大于物理地址空间。每个进程仿佛肚子占用整个空间。
虚拟存储器
下面是虚拟存储器的特点