存储管理
基本概念
存储器的层次结构
地址
- 逻辑地址(虚拟地址、相对地址):程序员使用的地址只是用符号命名的一个地址,称为符号名地址,这个地址并不是主存中真实存在的地址
- 物理地址(绝对地址):是主存中真实存在的地址。
地址重定向
定义
- 程序未运行时,存储在外存,运行时,需要装载到内存中。
- 把程序中的指令和数据的逻辑地址转换为对应的物理地址,这个转换的过程称为地址重定位。
静态重定位:在程序装入主存时已经完成了逻辑地址到物理地址的变化,在程序的执行期间不会再发生变化。
动态重定位:在程序运行期间完成逻辑地址到物理地址的变换
分区存储管理
分区存储管理:把主存划分成若干个区域,每个区域分配给一个作业使用。这就是分区存储管理方式
- 固定分区:系统生成时已经分好区。
- 可变分区:是一种动态分区方式,存储空间的划分是在作业装入时进行的,故分区的个数是可变的,分区的大小刚好等于作业的大小。
- 可重定位分区:分配好的区域可以移动。
分页存储管理
分页原理
- 页:将进程地址空间划分为若干个大小相等的区域
- 块(页框):将主存的空间也划分成与页相同大小的若干个物理块
- 在为进程分配主存时,将进程中若干页分别装入多个不相邻接(离散)的块中。
地址结构:页号 | 页内地址
页表
系统为每个进程建立了一张页面映射表,保证在主存中找到进程要访问的页面所对应的物理块
地址变换过程
分段存储管理
分段原理
将用户程序或作业的地址空间按内容划分为段
- 比如主程序一段,子程序一段,数据专门放一段,每个段的长度是不等的,但是每个段占用一个连续的分区。
地址结构:段号 | 段内地址
段表
进程中的各个段可以离散地分配到主存的不同分区中。在系统中为每个进程建立一张段映射表,简称为“段表”。
地址变换过程
段页式存储管理
段页式原理
- 先将整个主存划分成大小相等的存储块
- 将用户程序按程序的逻辑关系先分为若干个段,然后再将段划分成页
地址:段号 | 页号 | 页内地址
段页式存储管理同时拥有段表和页表
地址变换过程
虚拟存储管理
时间局限性
程序中的某条指令一旦执行,则不久的将来很有可能再次被访问;某个存储单元如果被访问,不久的将来它很可能再次被访问。
空间局限性
一旦程序访问了某个存储单元,则不久的将来,其附近的存储单元也最有可能被访问。
如果我们运行程序的时候,允许将作业的一部分装入主存即可运行程序,而其余部分可以暂时留在磁盘上,等需要的时候再装入主存。这样一来,一个小的主存空间就可以运行比它大的一个作业。从用户角度看,系统具有的主存容量比实际的主存容量要大得多,称为虚拟存储器。
页面置换算法
- 最佳置换算法:选择那些是永不使用的,或者是在最长时间内不再被访问的页面置换出去。
- 先进先出置换算法(FIFO):优先淘汰内存中停留时间最长的页面
- 最近最少未使用算法(LRU):优先淘汰最近这段时间用得最少的页面
- 最近未用置换算法(NUR):优先淘汰最近一段时间未引用过的页面