第四章存储器管理 4.1 存储器的层次结构
为何配置层次存储器:
a. 设置多个存储器时使存储器两端可并行工作
b. 采用多级存储结构,特别是cache存储器,是一种减轻存储器带宽对系统性能影响的最佳结构方案
c.在微处理机设置多种存储器,减轻对存储器存取的压力。设置多个寄存器,大大缓解存储器的压力
存储介质
4.1.1多层结构的存储器系统
- 存储器的多层结构
通用计算机存储层次至少三级:(从高至低)CPU寄存器、主存、辅存;
在存储层次中,层次越高(靠近CPU),访问速度越快,价格越高,存储器容量越小; - 可执行存储器:寄存器和主存储器
可执行存储器在很短指令的时钟周期内使用指令执行存储器访问,辅存访问需要通过I/O设备实现,所耗费时间远远高于可执行存储器。
4.1.2主存储器和寄存器
- 主存储器:简称内存或主存,是计算机系统的主要部件
- 寄存器
4.1.3高速缓存和磁盘缓存
4.2程序的装入和链接
步骤:编译,链接,装入
4.2.1程序的装入
- 绝对装入方式:用户程序经编译后,产生绝对地址(物理地址)
- 可重定位装入方式:可跟据内存的具体情况将装入模块装入内存的适当位置。
- 动态运行是的装入方式:在装入模块装入内存后,并不立即把装入模块中的逻辑地址转换为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行。
4.2.2程序的链接
- 静态链接方式:将各目标模块及他们所需的库函数链接成一个完整的装配模块后不再拆开。
- 装入时动态链接
- 运行时动态链接
4.3连续分配存储管理方式
4.3.1单一连续分配
4.3.2固定分区分配
- 划分分区的方法:分区大小相等、分区大小不等。
- 内存分配:通常按其大小进行排队,并为之建立一张分区使用表。
4.3.3动态分区分配
- 动态分区分配中的数据结构:
空闲分区表、空闲分区链 - 动态分区分配
顺序式分配算法,索引式搜索算法 - 分区分配操作
(1)分配内存
(2)回收内存
4.3.4基于顺序搜索的动态分区分配算法
顺序搜索:指依次搜索空闲分区链上的空闲分区去寻找一个大小可满足要求的分区。
- 首次适应算法FF:在分配内存时,从链首开始顺序查找,直到找到一个发现能满足要求的空闲分区为止。再按照作业大小,从分区中划出一块内存空间,分配给请求者,空闲分区仍留在空闲链。
- 循环首次算法NF:从上次找到的空闲分区的下一个空闲分区开始查找直到找到一个发现能满足要求的空闲分区为止,从中划出一块与请求大小相等的内存空间分配给作业。
- 最佳适应算法BF:将能满足要求的、又是最小的空闲分区分配给作业,避免“大材小用”
- 最坏适应算法WF:总是挑选一个最大空闲区,从中分割一部分存储空间给作业使用。
4.3.5基于索引搜索的动态分区分配算法
- 快速适应算法:将空闲分区根据其容量大小进行分类,优点是查找效率高,缺点是在分区归还主存时算法复杂,系统开销大。
- 伙伴系统:已分配或空闲分区大小均为2的k次幂
- 哈希算法
4.3.6动态可重定位分区分配
- 紧凑
不能被利用的小分区被称为碎片或零头,而通过移动内存中作业的位置,把原来多个分散的小分区拼接成一个大分区的方法称为拼接或紧凑 - 动态重定位
- 动态重定位分区分配算法
4.4对换
也称交换技术,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上以便腾出足够的空间,在把已具备运行条件的进程或进程所需要的程序和数据换入内存。
4.4.1多道程序环境下的对换技术
- 对换的引入
在多道程序下,存在某些进程被阻塞但占用大量内存或者存在因为内存空间不足而无法工作的作业。 - 对换的类型
整体对换、页面(分段)对换
4.4.2对换空间的管理
4.4.3进程的换出与换入
4.5分页存储管理方式
离散分配方式分为三种:
分页存储管理方式:典型的页面大小为1KB
分段存储管理方式
段页式存储管理方式
4.5.1分页存储管理的基本方法
- 页面和物理块
(1)页面,分页存储管理将进程的逻辑地址空间分为若干个页,并且从第0页开始编号。由于进程的最后一页经常装不满从而形成了不可利用的碎片。称为“页内碎片”。
(2)地址结构:前一部分为页号,后一部分为位移量即页内地址。
P=INT[A/L],d=[A] MOD L
其中A为逻辑地址,页面大小L、页号P、页内地址d,INT是整除函数、MOD是取余函数。
(3)页表:页面映像表,作用是实现从页号到物理块号的映射。
4.5.2地址变换机构
将用户地址中的逻辑地址转换为内存空间的物理地址
- 基本的地址变换机构
- 具有快表的地址变换机构:增设一个具有查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”,或称“快表”
物理块号=页表地址+(页号*页表项长度)
4.5.3访问内存的有效时间
在基本分页存储管理方式中;
有效时间EAT=t 第一次访问内存(查找对应的页表项所消耗的时间)+t 第二次访问内存时间(页表项的物理块号与页表地址拼接成实际物理地址所耗费时间)=2t
在引入块表的分页存储管理方式中:
EAT=a×λ+(t+λ)(1-a)+t=2t+λ-t×a
λ表示查找快表所需时间,a表示命中率
4.5.4两级或多级页表
4.5.5反置页表
4.6分段存储管理方式**
提高内存利用率推进分页存储管理方式的发展,而分段式存储管理方式则是为了满足程序员在编程和使用上多方面要求。
4.6.1分段式存储管理方式的引入
- 方便编程
- 信息共享
- 信息保护
- 动态增长
- 动态链接
4.6.2分段存储管理的基本原理
- 分段:
- 段表
- 地址变换机构
- 分段和分页的主要区别:
(1)页面是信息的物理单位
(2)页的大小固定且有系统决定
(3)分页的用户程序地址空间室一维的
4.6.3信息共享
分段系统的突出优点:易于实现段的共享
4.6.4段页式存储管理方式
1.基本原理:将分段和分页原理的结合,即先将用户程序分为若干个段,再将每段分为若干页,并为每一个段赋予一个段名。