买电脑的时候,谁都想一步到位,内存直接拉到 32G。可两年后再看,照样嫌小。这不是错觉,课件里有句话说得特别直白:程序大小的增长速度,与内存容量的增长速度几乎一样快。
硬件一扩容,软件马上就吃满;用户还是抱怨内存太小、总是不够用。于是,「让内存和外存高效配合」成了操作系统的重要任务之一,这个活儿有个正式名字——存储管理。
一、先认清一条过不去的边界
存储器的分类只有一句话:分内存储器(内存)和外存储器(外存)。

图① 一条过不去的边界
处理器可以直接访问内存,但不能直接访问外存。外存里的东西要进来,必须经过输入输出设备搬运;内存里的东西要留住,必须写回外存。
这也是两者的分工:外存可以持久保存信息,而内存掉电之后就丢了。
有个新物种值得单独说:闪存。它既能被直接访问,又能在掉电后继续保存信息——两头都占。但它的写入速度与处理器不匹配,所以通常还是当外存用,比如固态硬盘。
所以判断一个器件站哪边,看的不是「能不能直访」,而是速度配不配得上处理器。
这条边界有多贵,看两个数字就够:

图② 纳秒与毫秒之间
一次访存是纳秒级,一次调页要经过输入输出,是毫秒级,差了六个数量级。后面所有页面置换算法,争的都是同一件事——别让外存动不动就上场。
二、存储管理管的四件事

图③ 分配、回收、保护、扩充
这四件事,正好对应课本第五章的八条学习目标:内存空间的概念、层次、分配与回收方法;程序装入时的地址转换过程;可变分区分配与内存紧缩;覆盖与交换;以及最后的大头——虚拟页式存储管理,连同虚拟空间、虚拟地址与页表、页表项、TLB、页面置换、缺页异常、颠簸与工作集。
八条目标其实是一条线:

图④ 从概念到虚拟
先认清内存是什么(概念与层次),再看程序怎么进来(装入与地址转换),然后看空间怎么切(可变分区与紧缩)、怎么省(覆盖与交换),最后看怎么把空间造出来(虚拟页式)。
建议学时 12 学时,是全课最厚的一章——不是内容难,是这一章的每个概念都互相咬着。
三、先把术语统一,省得被译名绕晕
同一件事在这门课里有好几个叫法,第一次见容易以为是新东西。课件专门列了一张等价表,四组:
| 地址重定位 | = 地址转换 = 地址翻译 = 地址变换 = 地址映射 |
| 物理页面 | = 页帧 = 页框 = 内存块 |
| 转换检测缓冲区 | = 快表 = 旁路寄存器(英文缩写 TLB) |
| 页内地址 | = 页内偏移 = 页内位移 |
看到不认识的译名,先回这张表对一下,往往只是换了个说法。换个名字不等于换了个概念,这是这一章最省时间的习惯。
下一篇从「内存空间的概念与层次」开始——先说清楚内存里到底长什么样,再谈怎么往里放程序。
|