页表与倒排页表之间的区别

2024 年 8 月 28 日 | 3 分钟阅读

DBMS 中的分页

操作系统利用分页的思想来管理存储,从存储设备中检索进程,并将它们作为页面存储在主内存中。将每个进程分解为不同的页面是分页的基本思想。主内存也将被划分为帧。

进程的每个页面都保存在内存帧中。我们可以将页面保存在 RAM 中的多个位置,但连续的帧始终是我们的首选。进程页面的帧号保存在页表中。页面的表项包含各种与页面相关的数据。

使用特定的寄存器,页表可以在硬件上实现。但对于页表,只有很小的页表才能有效地与寄存器一起使用。快速硬件缓存 TLB(转换查找缓冲器)。

DBMS 分页概念中使用的术语

  • 页号 (p)

页号或逻辑地址空间中表示页面所需的位数。

  • 页偏移量 (d)

表示页面上特定字所需的总位数,逻辑地址空间的页面大小,页面中的字的位置,或页偏移量。

  • 帧号 (f)

表示物理地址帧所需的位数,称为帧号。

  • 帧偏移量 (d)

表示帧中一个字的位数,也称为物理地址空间大小,称为帧偏移量。

DBMS 中的页表

操作系统负责为每个进程维护一个页表。我们在页表中不需要记录任何进程标识符,因为每个进程都有自己的页表。页表将指定的虚拟或逻辑页号转换为实际的物理帧或页面地址。

虚拟地址与物理地址之间的关联存储在页表中,页表是虚拟内存系统的关键组成部分。虚拟地址转换页表是获取系统内存中数据所必需的关键组件。

DBMS 中的倒置页表

在倒置页表中,物理内存中的每个帧都有一个对应的虚拟页。与普通页表一样,实际地址转换从虚拟页开始,以物理内存帧结束,但这个页表是反向的,因为在映射情况下,我们是从物理内存查看虚拟内存。

所有进程都使用操作系统相同的单一页表,称为倒置页表。倒置页表的条目数与主内存中的帧数相等。为了规避页表的缺点,可以使用倒置页表。

无论页面是否在主内存中,总会为页面预留空间。但是,如果页面不存在,这仅仅是计算机内存的浪费。

页表与倒置页表区别

以下是页表和倒置页表之间的主要区别:

页表反向页表
逻辑地址和物理地址的映射存储在页表中,页表是虚拟内存系统的关键组成部分。对于物理内存中每个被占用的帧,倒置页表中都有一个虚拟页。它可用于规避页表的限制。
内存引用的逻辑地址格式为:
逻辑地址为:<虚拟页号 (p), 偏移量 (d)>
内存引用的逻辑地址如下:
逻辑地址为:<进程 ID (id), 虚拟页号 (p)> = page-table[f]
如果页面不存在,页表中就会出现内存浪费。通过简单地反转页表,我们可以减少内存浪费。
操作系统为每个进程维护一个页表。操作系统为每个进程维护一个倒置页表。
虚拟内存系统使用各种数据结构,包括页表。可以使用哈希表数据结构来构建倒置页表,以便更快地查找。