- 第4章 存储器管理
- 4.1 存储器的层次结构
- 4.2 程序的装入和链接
- 4.2.1 程序的装入
- 4.3 连续分配存储器管理方式(重点 2大题)
- 4.3.1 单一连续分配
- 4.3.2 固定分区分配
- 4.3.3 动态分区分配
- 第一种 动态分区分配算法(基于顺序搜索的4种分配算法)
- 1.首次适应算法(first fit,FF) 首-->尾
- 2.循环首次适应算法(next fit,NF)
- 3.最佳适应算法(best fit,BF) 小-->大
- 4.最坏适应算法(worst fit,BF) 大-->小
- 算法示例
- 作业
- 4.3.5 第二种 动态分区分配算法(基于索引搜索的分配算法)
- 1.伙伴系统
- 作业
- 4.3.6 动态可重定位分区分配
- 4.4 对换(不讲 课后阅读)
- 4.5 分页存储管理方式(大题)
- 离散分配的存储管理方式
- 4.5.1 分页存储管理的基本方法
- 4.5.2 地址变换机构 (必考)
- 1.基本地址变换
- 2.快表
- 4.5.3 访问内存的有效时间(课后阅读)
- 4.5.4 两级和多级页表
- 4.5.5 反置页表(课后阅读)
- 4.6 分段存储管理方式
4.2 程序的装入和链接 4.2.1 程序的装入
静态重定位
动态重定位
4.3 连续分配存储器管理方式(重点 2大题) 4.3.1 单一连续分配
- 原理:内存分为两个区域:系统区,用户区。用户区作为一个连续的分区分配给一个作业使用。
- 优点:方法简单,易于实现
- 缺点:单道、浪费内存
- 原理:把内存分为一些大小相等或不等的分区,每个应用
程序占用一个或几个分区。操作系统占用其中一个分区。 - 优点:易于实现,开销小。
- 缺点:分区总数固定,限制了并发执行的程序数目;内碎片造成浪费;作业大小受分区大小的限制。(内碎片,又称内零头,是指占用分区之内未被利用的空间)
- 动态创建分区,内存预先不分区,在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。
- 优点:没有内碎片。
- 缺点:有外碎片。(外碎片,外零头,是指占用分区之间难以利用的空闲分区(通常是小空闲分区))
1、内存分配
2、内存回收
示例:
- 加入一个结点
- 修改结点大小
- 修改结点首地址和结点大小
- 修改结点首地址和结点大小
第一种 动态分区分配算法(基于顺序搜索的4种分配算法) 1.首次适应算法(first fit,FF) 首–>尾
查找未分配区表或链表,直至找到第一个能满足长度要求的空闲区为止,分割此区,一部分分配给作业,另一部分仍为空闲区(若有)。
2.循环首次适应算法(next fit,NF)
总是从未分配区的上次扫描结束处顺序查找未分配区表或链表,直至找到第一个能满足长度要求的空闲区为止,分割此区,一部分分配给作业,另一部分仍为空闲区(若有)。
优缺点:
- 是首次适应算法的变种。
- 缩短平均查找时间,且存储空间利用率更加均衡。
- 缺乏大的空闲区。
3.最佳适应算法(best fit,BF) 小–>大
扫描整个未分配区表或链表,从空闲区中挑选一个能满足用户进程要求的最小分区进行分配。
优缺点:
- 空闲区按长度递增顺序排列。(时间开销大)
- 存储器留下许多难以利用的碎片。
4.最坏适应算法(worst fit,BF) 大–>小
扫描整个未分配区表或链表,总是挑选一个最大的空闲区
分割给作业使用。
优缺点:
- 空闲区按长度递减顺序排列。
- 剩下的空闲区不至于过小,对中小型作业有利。
算法示例
作业
4.3.5 第二种 动态分区分配算法(基于索引搜索的分配算法) 1.伙伴系统课内作业:
- 某系统采用动态分区分配方式管理内存,内存空间为700K,低端100水用来存放操作系统。在内存分配时,系统优先使用空闲区低端的空间。对下列请求序列:
作业1申请130K
作业2申请60K
作业3申请100K
作业2释放60K
作业4申请200K
作业3释放100K
作业1释放130K
作业5申请140K
作业6申请60K
作业7申请50K
作业6释放60K
问: 请分别画图表示出首次适应算法、最佳适应算法和最坏适应算法进行内存分配和回收后,内存的实际使用情况。
答:
作业
- 无论已分配分区或空闲分区,其大小均为2的K次幂(K为整数,1
- 当需要为进程分配一个长度为的存储空间时,首先计算一
个 i 值,使 2 i − 1 < n < = 2 i 2^{i-1}- 时间性能优于顺序搜索算法,空间性能比顺序搜索法略差。
- 并行系统中广泛使用。
课内作业:
某系统驻留空间为1024KB,采用伙伴系统分配其内存,对于下列的请求序列:
作业A请求240KB
作业B请求120KB
作业C请求60KB
作业B释放
作业D请求130KB
作业C释放
请画出进行上述分配和回收后,内存实际使用的情况。
4.3.6 动态可重定位分区分配
4.4 对换(不讲 课后阅读)
4.5 分页存储管理方式(大题) 离散分配的存储管理方式
分页存储管理方式 (计算机)
将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。
分段存储管理方式 (人)
将用户程序的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息。称为“段”。
4.5.1 分页存储管理的基本方法段页式存储管理方式
1、页面和物理块
页面:将进程的逻辑地址空间分成若干个页,并为各页加以编号。
页面大小:页面大小适中,且页面大小应该是2的幂。页面大小
pcb:在内存中存储页表地址
页表:在内存中存储页号和块号
2、地址结构(必考)
4.5.2 地址变换机构 (必考) 1.基本地址变换
- 示例:
页面大小: 2 10 = 1024 2^{10}=1024 210=1024
逻辑地址5000可转换为: 4 ∗ 1024 + 904 4*1024+904 4∗1024+904
- 页表放在哪里?内存
- 如何访问?
- 是否还存在碎片?可能存在
- 页面大小如何确定
-
通过pcb访问数据:访问内存3次
访 问 p c b ( 内 存 中 ) → 访 问 页 表 ( 内 存 中 ) → 访 问 数 据 ( 内 存 中 ) 访问pcb(内存中)to 访问页表(内存中)to 访问数据(内存中) 访问pcb(内存中)→访问页表(内存中)→访问数据(内存中) -
通过寄存器访问数据:访问内存2次
页 表 寄 存 器 → 页 表 ( 内 存 中 ) → 数 据 地 址 ( 内 存 中 ) 页表寄存器to 页表(内存中)to 数据地址(内存中) 页表寄存器→页表(内存中)→数据地址(内存中)
示例:
逻辑地址为2500,内存地址为
答:
逻辑地址转为页面地址: 2500 / 1024 = [ 2 , 452 ] 2500/1024=[2,452] 2500/1024=[2,452]
页面地址转为物理块地址: [ 2 , 452 ] → [ 6 , 452 ] [2,452]to[6,452] [2,452]→[6,452]
物理块地址转为内存地址: [ 6 , 452 ] → 6596 [6,452]to6596 [6,452]→6596
2.快表
快表:增设一个具有并行查寻能力的特殊高速缓冲寄存器。
- 通过快表访问数据:访问内存1次
快 表 → 数 据 地 址 ( 内 存 中 ) 快表to 数据地址(内存中) 快表→数据地址(内存中)
4.5.4 两级和多级页表
4.5.5 反置页表(课后阅读) 4.6 分段存储管理方式



