一. 分页存储管理
1.基本思想
用户程序的逻辑地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
管理将内存空间划分成等长的若干物理块,成为物理页面也成为物理块,每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页号。
系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:页号P和页内位移量W。
2.页表
分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系。页表的作用是实现从页号到物理块号的地址映射,地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列
——内存访问
通常需要获取一个逻辑地址的值,需要访问2次内存,第一次访问页表,定位到实际物理地址,第二次,访问到该值
快表:将页表装入高速缓存中,加快实际物理地址的定位,只需要访问一次主存
- 分页方式的优点是页长固定,因而便于构造页表、易于管理,且不存在外碎片。
- 分页方式的缺点是页长与程序的逻辑大小不相关,会产生内碎片
二. 分段存储管理
1.基本思想
段是按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。 段表本身也是一个段,可以存在辅存中,但一般是驻留在主存中。
将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
2. 分段地址结构
作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例程序段、数据段等。每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间是二维的。
在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,虚拟地址到实存地址的变换通过段表来实现。每个程序设置一个段表,段表的每一个表项对应一个段,每个表项至少包括三个字段:
- 有效位:指明该段是否已经调入主存
- 段起址:该段在实存中的首地址
- 段长 :记录该段的实际长度
3. 地址转换
物理地址=根据段号找到段表中所在段的起始地址+段内偏移
段式存储优点:
(1) 段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。
(2) 段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。
(3) 方便编程,分段共享,分段保护,动态链接,动态增长
段式存储缺点:
(1) 主存空间分配比较麻烦。
(2) 容易在段间留下许多碎片,造成存储空间利用率降低。主要是外碎片
三. 段页式存储管理
1. 段页式存储管理的基本思想
段页式存储组织是分段式和分页式结合的存储组织方法,这样可充分利用分段管理和分页管理的优点。
(1) 用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。
(2) 用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。
将程序的逻辑地址划分成多个段,而每个段又由多个页面组合而成
2. 地址转换
逻辑地址由3部分组成:段号、页号、页内偏移
对于一个逻辑地址,其访问到实际物理地址的过程:
- 根据段号,定位到段表相应的段位置(借助段表基地址寄存器加速)
- 读取段表内容,定位到段对应的页表位置
- 根据页号,以及页表完成到实际物理块的映射
- 加上页内偏移,访问到绝对物理地址
3.段页式存储管理的优缺点
优点
(1) 它提供了大量的虚拟存储空间。
(2) 能有效地利用主存,为组织多道程序运行提供了方便。
缺点:
(1) 增加了硬件成本、系统的复杂性和管理上的开消。
(2) 存在着系统发生抖动的危险。
(3) 存在着内碎片(段内采用了分页)。
(4) 还有各种表格要占用一定的主存空间。