概念
存储器管理的对象是内存(主存)。它的主要功能是分配和回收内存空间、提高内存利用率、扩充内存、对内存信息实现有效保护。
存储管理方案的主要目的是解决多个用户使用主存的问题,其存储管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理。
分区存储管理(可变分区)
按作业(程序)的大小划分分区。当要装入一个作业时,根据作业需要的主存量查看主存中是否有足够的空间,若有,则按需要量分割一个分区分配给该作业;若无,则令该作业等待主存空间。
注意:分区存储管理是将用户程序作为整体调入内存。
可变分区调度算法分为四类:首次适应算法、最佳适应算法、最坏适应算法、循环首次适应算法。
假设分配前的主存空间如下。存在交叉空闲空间的原因:原有6个作业分配到主存空间,分别占内存空间、、、、、。在部分作业(、、)运行完毕后,将主存空间释放,形成交叉空闲空间。
-
首次适应算法
- 要装入一个作业时,计算作业所需的主存量,从首地址开始查找可用的空闲空间(区域)(向着地址增长方向查找),一旦满足时,按需要量分割一个分区分配给该作业,完成分配;否则,等待其他作业释放主存空间。
- 假设作业4申请内存,从首地址开始查找空闲空间,遇到,停止寻找,将空闲空间分割一个分区分配给作业4,完毕。
-
最佳适应算法
- 要装入一个作业时,计算作业所需的主存量,将所有空闲空间按从小到大的顺序链式链接,一旦满足时,按需要量分割一个分区分配给该作业,完成分配;否则,等待其他作业释放主存空间。
- 缺点:会产生很小的内存碎片,不能被利用。
- 假设作业4申请内存,将三个空闲空间从小到大链式链接(),遇到,停止寻找,将空闲空间分割一个分区分配给作业4,完毕。
-
最差适应算法
- 要装入一个作业时,计算作业所需的主存量,将所有空闲空间按从大到小的顺序链式链接,一旦满足时,按需要量分割一个分区分配给该作业,完成分配;否则,等待其他作业释放主存空间。
- 缺点:大的作业(程序)无法装入内存。
- 假设作业4申请内存,将三个空闲空间从大到小链式链接(),遇到,停止寻找,将空闲空间分割一个分区分配给作业4,完毕。
-
循环首次适应法
- 要装入一个作业时,计算作业所需的主存量,将所有空闲空间按原有顺序循环链接,一旦满足时,按需要量分割一个分区分配给该作业,完成分配;否则,等待其他作业释放主存空间。当装入下一个作业时,以该作业的下一个空闲空间作为第一个查找空间查找首次适应的空闲空间进行分配。
- 假设作业4申请内存,将三个空闲空间按原有顺序循环链接(),第一个查找空间为,遇到,停止寻找,将空闲空间分割一个分区分配给作业4,完毕。当作业5申请内存,将三个空闲空间按原有顺序循环链接(),第一个查找空间为,遇到,停止寻找,将空闲空间分割一个分区分配给作业5,完毕。
页式存储管理
-
可变分区存储管理是将作业(程序)整体调入内存,当作业内存需要量较大,空闲空间较小,没有空闲空间能满足作业内存需要量时,作业只能等待。但为了合理利用空闲空间,提出了页式存储管理、段式存储管理、段页式存储管理。
- 例如可变分区存储管理中,内存分配如下。当作业申请内存,没有空闲空间可以满足,此时只能等待。但空闲空间总内存为13k,满足需求量,则合理利用空闲空间是可以分配给作业的。
- 页式存储逻辑地址结构:页号和页内地址。
- 页式存储将一个作业(程序)分为多个页,用页表来存储用户程序的页和内存的块对应关系。页面大小是固定的,即加入到内存中的块大小是固定的。
- 高级语言程序使用逻辑地址;运行状态,内存使用物理地址。
-
缺点
- 增加了系统开销(内存中要存储页表)。
- 可能产生抖动现象:页面置换时用于换页的时间多于执行程序的时间。
- 假设页面大小为4k,当作业最后装入的大小不足4k时,产生页内碎片。
优点:内存利用率高,碎片小,分配及管理简单。
-
例题
- 分析:页面大小为,即页内地址占12位。进程P要访问的逻辑地址为十六进制5A29,逻辑地址分为页号和页内地址,页内地址占12位,即5代表页号,A29代表页内地址。查看页表发现页号5对应块号6,页内地址A29对应块内地址A29,则物理地址应为十六进制6A29。
- 分析:淘汰页面时应淘汰在内存中但未访问过的页,观察表格可发现页号1虽在内存但未访问,则应该淘汰页号为1的页面。
段式存储管理
- 页式存储逻辑地址结构:段号和段内地址。
- 段式存储将一个作业(程序)分为多个多个段(main函数为一段,函数为一段,…,函数为一段),用段表来存储段长和基址,通过基址在内存空间中寻找段的起始地址,通过段长定位段的结束地址。段大小(函数大小)是不等的,即加入到内存空间的大小是不等的。
- 高级语言程序使用逻辑地址;运行状态,内存使用物理地址。
-
缺点
- 增加了系统开销(内存中要存储段表)。
- 内存利用率低。
- 产生外碎片。
优点:多道程序共享内存,各段程序修改互不影响。
段页式存储管理
-
缺点
- 由于管理软件的增加,复杂度和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。
-
优点
- 空间浪费小、存储共享容易、存储保护容易、能动态连接。
存储管理——快表(TLB)
块表是一块小容量的相联存储器,存储于缓冲区(cache)内,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
页表存储在内存中,称为慢表。