分区式存储管理最大的缺点就是碎片化问题严重,内存利用率低,究其原因,主要在于内存连续分配的限制。
分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分为一个个小部分。
分页存储管理分为:实分页存储管理和虚分页存储管理。
一、实分页式存储管理
实分页式存储最大的优点是内存利用率高,与目前流行的虚分页存储管理相比,具有实现简单,程序运行快的优点。
1. 基本原理
- 将整个系统的内存空间划分为一系列大小相等的块,每一块称为一个物理块,物理页或实页,页架或页帧,可简称为块,所有的块按物理地址递增顺序连续编号为0、1、2、……。
- 每个作业的地址空间也划分成一系列与内存块一样大小的块,每一块称为一个逻辑页或虚页,也有人叫页面,可简称为页。所有的页按照逻辑地址递增顺序连续编号为0、1、2、……。
- 一个作业,只要它的总页数不大于内存中的可用块数,系统就可以对它实施分配,系统装入作业时,以页为单位分配内存,一页分配一个块,作业所有的页所占用的块可以不连续,系统同时为这个作业建立一个页号与块号的对照表,称为页表。
- 每个块的大小是固定的,一般是1/2KB~4KB之间的数值,而且必须是2的幂次。
2. 页表
系统为每一个进程建立一个页表,用于记录页与块之间的对应关系,地址空间有多少页,页表就有多少行,且按照逻辑页中的顺序排列。
页表的划分完全是一种系统硬件的行为,一个逻辑地址放到这种地址结构中,自然就分成了页号和页内地址两部分。
在分页系统中,允许将作业(进程)的任一页装入到内存中的任一可用的物理块中,但进程的地址空间本来是连续的,若把它分页后装入到不相邻的物理块中,要保证系统仍能正确运行,就要实现从进程的逻辑地址变换为内存的物理地址。
3. 地址映射
在系统中设置地址变换机构,能将用户进程地址空间中的逻辑地址变为内存空间中的物理地址。
由于页面和物理块的大小相等,页面偏移地址和块内偏移地址是相同的,无需进行从页面地址到块内地址的转移。
页表的作用就是从页号到物理块号的转移,所以地址变换的任务借助于页表来完成的。
页号 = 逻辑地址 / 页面长度
页内偏移量 = 逻辑地址 % 页面长度
4. 快表
因为页表是存放在内存中的,CPU要存取一个数据,需要访问主存两次。
- 第一次访问:访问内存中的页表,找到该页的物理块号,将此块号与页内地址拼接形成物理地址;
- 第二次访问:真正访问物理地址,存取其中的内容。
为了提高存取速度,在地址变换机构中增设一组寄存器,用来存放访问的哪些页表。
快表是一种访问和存储速度比内存快很多的高速缓冲器。
当进程访问一页时,系统将页号与快表中的所有项进行并行比较,若访问的页在快表中,即可立即进行地址转换。当被访问的页不在快表中时,去内存中查询页表,同时将页表找到的内存块号与虚页号填入快表中。
5. 两级和多级页表
页表如果占用相当大的内存空间,可采用两个方法来解决这一问题:
二、虚拟存储器
引入虚拟存储技术的好处
- 可以在较小的可用内存中执行较大的用户程序;
- 可以提供给用户可用的虚拟内存空间通常大于物理内存;
- 可在内存中容纳更多程序并发执行;
虚拟存储技术的特征
- 不连续性:物理内存分配的不连续性,虚拟地址空间使用的不连续性;
- 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的;
- 大空间:通过物理内存与快速外存相结合,提供大范围的虚拟地址空间;
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!