-
存储管理的管理目标:
- 内存的合理分配使用
- 提高内存利用率
- 程序、数据在内存中顺利读写
- 小内存运行大程序
-
内存管理主要功能:
- 内存的分配和回收
- 地址重定位
- 地址共享和保护
- 地址扩充
-
存储器的层次结构
-
通用:(高->低)CPU寄存器 主存 辅存
-
细分:寄存器 高速缓存器 主存储器 磁盘缓存 固定磁盘 可移动存储介质
-
可执行存储器 = 寄存器 和 主存储器
- 主存储器:内存or主存
- 寄存器:与处理机相同的速度,所以对寄存器的访问速度最快 价格贵 容量不大
-
高速缓存
介于寄存器和存储器之间的存储器 用于备份主存中较常用的数据 容量远大于寄存器 访问速度快于主存储器
-
磁盘缓存
暂时存放频繁使用的一部分磁盘数据和信息
-
-
程序的装入和链接
-
用户程序要在系统中运行,必须先装进内存,然后转变为可执行程序,步骤:
- 编译 2. 链接 3. 装入
-
装入
-
绝对装入方式
-
可重定位装入方式(静态重定位)
地址重定位(地址转换):将逻辑地址转换成物理地址
- 物理地址:存储单元的实际物理单元地址
- 逻辑地址:用户空间中使用的一种地址
-
动态运行时的装入方式(动态重定位)
在系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址。
程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的
-
-
链接
- 静态链接方式
- 装入时动态链接
- 运行时动态链接
-
-
连续分区存储管理
-
特点:一个进程装入连续的一块内存空间
-
单分区方式:内存用户区的全部空间只存放一个进程
-
多分区方式:
- 固定多分区
- 动态多分区
-
单一连续分配:整个内存的用户空间由该程序独占
把内存的用户区视为一个独立的连续存储区,任何时刻只将它分配给一个作业使用
适用于单用户单任务系统(MS-DOS操作系统)
-
固定分区分配:
将内存用户区划分成多个大小相等或不等的固定分区,每一个分区可以装入一个进程。这样,内存中可同时容纳若干个进程。
- 划分分区方法:
- 分区大小相等 2. 分区大小不等
- 特点:
- 分区大小可以相等,也可以不等
- 每个分区的起始地址和长度是固定的
- 问题:分区大小在系统生成阶段事先设置
- 大的进程无法装入
- 小的进程装入大分区出现内部碎片
- 数据结构:储存分配表MAT
- 划分分区方法:
-
动态分区分配
- 数据结构:空闲分区表 空闲分区链
- 动态分区分配算法:
- 首次适应算法 First_Fit:从链首到链尾找一遍
- 循环首次适应算法 Circle_First_fit:从上次找到的空闲分区的下一个空闲分区开始查找,到链尾仍然没有合适的,转到头部继续
- 最佳适应算法 Best_Fit:空闲分区从小到大排序
- 最坏适应算法 Worst_Fit:空闲分区从大到小排序
- 基于索引搜索的动态分区分配算法:
- 快速适应算法 quick fit:根据空闲块容量大小分类,每一类相同容量单独设立一个空闲分区链表
- 伙伴系统 buddy system:无论已分配分区或空闲分区,其大小均为2的k次幂
- 哈希算法:能任意长度的二进制值映射为较短的固定长度的二进制值
- 动态分区储存管理:主要操作是内存的分配和回收
- 回收内存 四种情况
- 上不空 下不空
- 上空 下不空
- 上不空 下空
- 上空 下空
- 回收内存 四种情况
-
注意!!!!剩余部分在4 存储器管理(下)