Paging in Operating System
Paging in Operating Syste - GeeksforGeeks
4.3 页表(Page Table)
读以上,有如下困惑,
我想知道关于计算机Logical Address Space,是每个程序单独拥有自己的logical address space吧,但是所有的程序共享内存中的Physical Address Space。
那么在每个程序自己的logical address space中,可以定义自己的page 大小。
所以不同的程序所在的自己的logical address space中的page大小不一样。
但是logical address space中的Pages 和 内存中的frames 的大小是一致的。
这就导致,内存中有不同的大小的frame. 是这样吗?
以下是deep seek回复:
在计算机内存管理中,逻辑地址空间(Logical Address Space)和物理地址空间(Physical Address Space)的关系如下:
一、逻辑地址空间的特性
- 每个进程独立定义页大小
每个进程在自身的逻辑地址空间内可定义页(Page)的大小,例如:- 进程A可能采用 4KB 标准页,以实现细粒度内存分配79。
- 进程B可能使用 2MB 大页(Huge Page),以减少页表项数量并提升性能7。
操作系统通过内存映射接口(如
mmap
)支持进程定制页大小。
二、物理地址空间的约束
- 物理帧(Frame)大小必须统一
物理内存被划分为固定大小的帧(Frame),所有进程共享同一物理帧大小配置:-
帧大小由硬件架构和操作系统共同决定(例如x86系统默认 4KB)78。
-
若进程使用大页(如2MB),操作系统需预分配连续的大帧区块,而非动态调整帧大小710。
物理帧大小的一致性由内存控制器硬件和操作系统(如Linux伙伴系统)保证10。
-
三、页与帧的映射机制
场景 | 逻辑页大小 | 物理帧大小 | 关键实现机制 |
---|---|---|---|
标准页分配 | 4KB(进程A) | 4KB | 直接一对一映射至物理帧78 |
大页分配 | 2MB(进程B) | 4KB | 操作系统将 512个连续4KB帧 组合为2MB大页帧,建立复合映射79 |
混合页大小支持 | 多样 | 固定 | 硬件MMU通过多级页表处理不同页大小的地址转换67 |
四、核心结论
- 物理帧大小统一不变
内存中的帧大小由系统全局设定(如4KB),不会因进程的页大小不同而改变78。 - 大页的实质是帧聚合
进程使用大于物理帧的页时,操作系统通过绑定连续物理帧模拟大页,而非创建可变帧79。 - 硬件与操作系统的协作
- MMU负责将不同大小的逻辑页映射到固定大小的物理帧67。
- 操作系统通过伙伴系统管理物理帧连续性,确保大页需求可被满足710。
✅ 简言之:进程可定制逻辑页大小,但物理帧大小全局固定。大页的实现依赖于操作系统的帧聚合技术,而非物理帧尺寸的动态变化