基本分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分

1. 分页思想

将内存空间分为一个个大小相等的分区(比如: 每个分区 4 KB),每个分区就是一个 “页框”,每个页框有一个编号,即 “页框号”,页框号从 0 开始。

将用户进程的地址空间也分为与页框大小相等的一个个区域,称为 “页” 或 “页面” 。每个页面也有一个编号,即“页号”,
页号也是从 0 开始。

注: 进程的最后一个页面可能没有一个页框那么大。因此,页框不能太大,否则可能产生过大的内部碎片

操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。

各个页面不必连续存放,世不必按先后顺序来,可以放到不相邻的各个页框中。

2. 地址转换

逻辑地址为80 的内存单元: 应该在1号页,该页在内存中的起始位置为 450,逻辑地址为 80 的内存单元相对于该页的起始地址而言,”偏移量” 应该是 30。实际物理地址 = 450 + 30 = 480

  1. 要算出逻辑地址对应的页号

页号=逻辑地址/页面长度

  1. 要知道该页号对应页面在内存中的起始地址

页内偏移量=逻辑地址%页面长度

  1. 要算出逻辑地址在页面内的”偏移量”

操作系统需要用特殊数据结构记录进程各个页面的起始位置。

  1. 物理地址=页面始址+页内偏移量

为了方便计算机计算页号、页内偏移量,页面大小一般要为2的整数幂,如果每个页面大小为 $2^k B$,用二进制数表示逻辑地址,则未尾 K。位即为页内偏移量,其余部分就是页号

分页存储管理的逻辑地址结构如下所示:

地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量 W。在上图所示的例子中,地址长度为32 位,其中011位 为”页内偏移量”,或称”页内地址”: 1231位为 “页号”。

3. 页表

为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表