第5章 内存管理
寄存器:是存储容量有限的高速存储部件。
? 特点
? 位于CPU内。
? 寄存器以名字标识, 没有地址编号。
? 作用
? 可用来暂存指令、数据和地址
? 分类
? 通用寄存器 ? 指令指针寄存器 ? 标志寄存器 ? 段寄存器
? 虚拟存储技术
使用户程序的大小和结构不受主存容量和结构的限制,即使在用户程序比实际主存容量还要大的情况下,程序也能正确运行。 5.2.1分区管理基本原理 固定分区管理
? 固定分区是指系统在初始化时,将内存空间划分为若干个固定大小的区域 1. 分区原则
(1)分区大小划分
? 分区大小相等:适合于多个相同程序的并发执行;
? 分区大小不等:多个小分区、适量的中等分区、少量的大分区。根
据程序的大小,分配当前空闲的、适当大小的分区。
(2)分区个数不变,大小不变 2、固定分区管理
? 使用的数据结构:分区状态表
? 用于分配时查找未分配空间
动态分区管理 1. 分区原则
? 根据用户进程对内存的需求而划分:
? (1)根据作业的大小动态地划分分区; ? (2)各分区的大小是不定的;
? (3)内存中分区的数目也是不定的。
? 问题:各作业释放后的空间不连续,导致总的空闲空间很大却不能分配的情况发生。
易产生碎片(越分越小,直到成为小空闲区不能分配)。 ? 固定分区的分配与回收
? 分配
? 多作业队列:将大小相近的作业放在同一个等待队列中。
?
? 单作业队列:所有作业放在一个等待队列中。
常见空闲区查找算法
? 空闲区表的组织
? 按空闲区大小的升序(或降序)组织; ? 按空闲区首址升序(或降序)组织。
? 查找算法:以空闲区表组织的方法为基础,采用不同的方式选择空闲区。
? 最佳匹配(最佳适应算法) ? 首次匹配(首次适应算法) ? 下次匹配(*) ? 最坏匹配
? 快速匹配(*)
1、最佳适应算法
? 思想:尽可能分配大小与请求相匹配的空闲区。 ? 组织方式:空闲区表按空闲区大小从小到大组织。 ? 分配
? 按申请的大小逐个与空闲区大小进行比较,找到与申请最接近的空闲区分
配。
? 缺点:分割后的空闲区很小,直至无法使用,而造成浪费。
2、首次适应算法
? 思想:尽可能在低地址实施分配
? 保留高地址部分的大空闲区。
? 组织方式:按空闲区首址从小到大组织
空闲区
分区管理的优缺点
? 主要优点
? 实现了多道程序共享内存;
? 实现分区管理的系统设计相对简单,不需要更多的系统软硬件开销; ? 实现存储保护的手段也比较简单。
? 主要缺点
? 内存利用不够充分。系统中总有一部分内存空间得不到利用,存在碎片。
? 内碎片:指分配给作业的存储空间中未被利用的部分。固定分区分
配中存在。
? 外碎片:系统中无法利用的小存储块。动态分区分配中存在。
? 无法实现内存的扩充。 当进程的地址空间大于内存空间时,进程无法运行。
也即进程的地址空间受实际内存空间的限制。(*)
? 必须连续存放。进程在内存中总是分配一块连续的存储空间,无法很好地利
用碎片,虽然可以通过移动技术来整理内存空间,但代价较高。(*) ? 必须一次性将作业全部调入内存,若内存没有足够的空间,则等待。(*)
? 5.4 页式管理
5.4.1 页式管理的基本原理
页式管理的引入
? 分区存储管理的主要问题是碎片问题。
? 问题描述
在采用分区存储管理的系统中,会形成一些非常小的分区,最终这些非常小的分区不能被系统中的任何用户程序利用而浪费。
? 问题产生原因
? 作业要求分配的空间连续,主存有足够的空间但因不连续而不能分配
? 解决问题的思路
? 程序适应主存。将程序分开存放—分页存储管理技术。
? 分页的思想
? 页(虚拟页):程序地址空间分成大小相等的页面
? 块(内存块、页块、页祯、内存页面):把内存分成与页面大小相等的块。 ? 思想:当一个用户程序装入内存时,针对每一页分配一个内存块。一个作业的若干连续的页,可以分配到内存中若干不连续的块中。
1. 内存页面分配与回收 ? 页式存储管理的数据结构
?
(1)页表:页表包括用户程序空间的页面与内存块的对应关系。页表每个进程至少一张。
?
(2)请求表:表明各进程与其分页的页面之间的关联。请求表整个系统一张。
?
(3)存储页面表:表示内存的分配情况。存储页面表一个系统一张,可用位示图表示。
? 图 5.17位示图 ? 5.4.2静态页面管理 ? 2.分配算法
? 利用页表、请求表、位示图进行分配。
3.页式地址变换
(1)虚地址(线性地址、逻辑地址) (2)分页地址映射机制
? 虚地址切分:页号与页内位移
? 划分页号和页内地址的依椐:页的大小。
? 2X =页大小,X即为页号的最低位