分页式、分段式、段页式和请求式分页

面试官:
请你谈谈分页式、分段式、段页式和请求式分页内存管理的特点,以及它们和虚拟内存的关系。

应聘者回答参考:

1. 分区式内存管理(对比背景)

  • 方式:将整个程序一次性加载到内存的一个连续区域中。
  • 缺点:会产生 外部碎片,导致内存利用率低。

2. 分页式内存管理(Paging)

  • 原理
    • 将内存划分为固定大小的页框(Page Frame,通常 4KB)。
    • 程序被切分成同样大小的页(Page),逻辑上连续,物理上可以离散。
  • 优点
    • 提高内存利用率,不产生外部碎片。
    • 只会产生少量 内部碎片(最后一页用不完的部分)。
  • 缺点
    • 不方便按照逻辑模块(如代码段、数据段)进行共享与保护。

3. 分段式内存管理(Segmentation)

  • 原理
    • 根据逻辑模块(如代码段、数据段、堆、栈等)划分为多个段,每个段连续分配物理内存。
  • 优点
    • 更符合程序的逻辑结构。
    • 方便实现信息共享与保护(不同段可设置不同权限)。
  • 缺点
    • 段长不固定,容易产生 外部碎片
    • 为大段分配连续空间较困难。

4. 段页式内存管理(Segmented Paging)

  • 原理
    • 先按照逻辑模块划分为段,再对每个段进行分页。
    • 逻辑地址 = 段号 + 页号 + 页内偏移量
  • 优点
    • 结合了分页与分段的优点:既支持逻辑模块化,也避免外部碎片。
  • 缺点
    • 地址转换过程更复杂(段表 + 页表)。

5. 请求式分页(Demand Paging)与虚拟内存(Virtual Memory)

  • 分页/分段/段页式的前提:进程必须全部加载到内存中。
  • 请求式分页
    • 程序并不一次性加载,而是 按需加载页面
    • 依赖 局部性原理(程序运行时只会频繁访问少量数据)。
    • 若访问的页面不在内存,会触发 缺页中断,操作系统从磁盘调入相应页面。
  • 虚拟内存
    • 基于请求式分页实现。
    • 使得程序的逻辑地址空间 大于实际物理内存,让应用感觉有“很大的内存”。

6. 对比总结

管理方式特点碎片情况优缺点
分区式整个程序一次性装入内存外部碎片严重简单,但浪费空间
分页式固定大小页,物理地址离散少量内部碎片内存利用率高,不利共享
分段式按逻辑模块划分外部碎片方便共享与保护,难以分配大段
段页式分段后再分页减少外部碎片结合两者优点,开销较大
请求分页按需调入页面几乎无碎片支持虚拟内存,提高利用率

总结

  • 分页式:解决外部碎片,提升内存利用率。
  • 分段式:方便逻辑管理和权限控制。
  • 段页式:两者结合,取长补短。
  • 请求式分页 & 虚拟内存:支持大程序在有限内存上运行,提升系统性能。

😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈子青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值