news 2026/6/10 12:16:53

存储管理技术主要分为页式、段式和段页式三种,它们在内存空间的划分方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
存储管理技术主要分为页式、段式和段页式三种,它们在内存空间的划分方式

存储管理技术主要分为页式、段式和段页式三种,它们在内存空间的划分方式、地址结构及映射机制上各有特点:

1. 页式存储管理

  • 核心思想:将程序的逻辑地址空间和物理内存划分为大小相等的“页”(Page)和“页框”(Frame),以页为单位进行内存分配。
  • 地址结构:虚地址由“页号 + 位移量(页内偏移)”组成。
  • 映射机制:系统为每个进程建立一张“页表”,记录逻辑页号到物理页框号的映射关系。
  • 优点:实现简单,内存利用率较高(仅存在内部碎片)。
  • 缺点:不支持分段保护与共享,缺乏对程序逻辑结构的支持。
// 示例:页表项结构structPageTableEntry{intvalid;// 是否在内存中intframe_num;// 对应的物理页框号intdirty;// 是否被修改过};

2. 段式存储管理

  • 核心思想:按程序的逻辑模块(如主函数、堆栈、数据段等)划分成若干个大小不一的“段”(Segment)。
  • 地址结构:虚地址由“段号 + 段内位移”构成。
  • 映射机制:系统为每个进程建立“段表”,每项包含段基址、段长、访问权限等信息。
  • 安全控制:通过存储保护键或访问权限位防止越界访问。
  • 优点:支持模块化编程、便于共享与保护、符合用户视角。
  • 缺点:产生外部碎片,内存分配与回收较复杂。

3. 段页式存储管理

  • 核心思想:先按逻辑意义分段,再在段内部分页,结合两者优势。
  • 地址结构:虚地址 = “段号 + 页号 + 位移量”。
  • 映射机制:每个进程有“段表”,段表项指向该段对应的“页表”;页表再完成页到页框的映射。
  • 优点:既支持逻辑分段管理,又提高内存利用率(减少外部碎片)。
  • 缺点:地址转换需两次查表(段表+页表),增加硬件开销,适用于大型操作系统。

页面调度算法(页面置换算法)

当发生缺页中断且内存已满时,需选择一个页面换出。目标是尽量减少缺页率。

算法原理特点
最优算法(OPT)淘汰将来最长时间不会被使用的页面理论最优,无法实现,用于性能评估基准
随机算法(RAND)随机选择一个页面淘汰实现简单,但命中率低,性能不稳定
先进先出(FIFO)淘汰最早进入内存的页面实现容易,但可能出现Belady现象(内存越多缺页越多)
最近最久未使用(LRU)淘汰最长时间未被访问的页面接近OPT效果,但实现成本高(需维护访问历史)
时钟算法(Clock / NRU)使用访问位模拟LRU,像钟面指针扫描淘汰候选页折中方案,广泛应用于实际系统

⚠️抖动(Thrashing)问题:当系统频繁进行页面换入换出时,CPU利用率急剧下降。原因通常是并发进程过多或工作集管理不当。解决方法包括:局部置换策略、工作集模型控制调入调出。


页式存储中的“内部碎片”是由于内存按固定大小的页面进行分配,而进程最后一页的数据可能不满一个完整的页面,导致该页中未被使用的部分形成浪费,这种浪费称为内部碎片

一、内部碎片的产生原因:

  • 页面大小通常是2的幂(如4KB、8KB),系统以整页为单位分配内存。
  • 进程逻辑空间的最后一个页可能只使用了部分空间,剩余空间无法分配给其他进程。
  • 例如:进程总大小为10KB,页面大小为4KB,则需分配3个页(共12KB),浪费2KB → 内部碎片 = 2KB。

📌关键点:内部碎片存在于已分配但未充分利用的页内空间,属于单个进程自身的空间浪费。


二、如何减小内部碎片的影响?

  1. 选择合适的页面大小

    • 小页面 → 减少每页浪费,降低内部碎片。
    • 但页面太小会导致页表项增多,增加内存开销和地址转换时间。
    • 需权衡:现代系统常用4KB~64KB作为折中。
  2. 采用多尺寸页支持(Large Page / Huge Page)

    • 操作系统提供多种页面尺寸(如4KB小页 + 2MB/1GB大页)。
    • 对大内存应用(如数据库)使用大页,减少页表项数量,同时相对降低碎片比例。
    • Linux 中通过hugetlbfs支持大页。
  3. 使用可变分区或混合管理机制

    • 在某些特殊场景下结合段式管理,避免强制等分。
    • 或在用户级内存池中实现细粒度分配(如malloc使用sbrk/mmap后自行分块)。
  4. 优化程序内存布局

    • 编译器或链接器对齐控制,尽量让数据紧凑排列,减少尾部空隙。
    • 使用内存对齐指令时注意不要过度填充。
  5. 引入伙伴系统 + Slab分配器(内核层面)

    • 虽不直接用于页式虚存,但在物理内存管理中配合使用,提升整体利用率。
    • 如Linux内核用Slab分配器管理小于一页的对象,避免频繁申请整页造成浪费。

总结对比表

方法减少碎片效果开销/复杂度适用场景
减小页面大小明显减少增加页表项、TLB压力通用系统设计
多页面尺寸有效平衡实现复杂大型服务器、高性能计算
用户态内存池规避问题编程复杂度高应用层优化
内核分配器(Slab)提升物理内存利用率系统级实现操作系统内部

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 14:17:13

17、Debian系统管理基础与实用工具介绍

Debian系统管理基础与实用工具介绍 在Linux世界中,Debian系统以其稳定性和丰富的软件包管理系统而闻名。除了软件安装管理外,Debian还拥有许多专门为其设计的系统管理工具。这些工具遵循DFSG(Debian自由软件指南),为系统管理员提供了强大的功能。下面将详细介绍Debian系统…

作者头像 李华
网站建设 2026/6/10 12:52:52

探索四种商品售货机:MCGS 7.7 与三菱 PLC 联机之旅

4四种商品售货机mcgs7.7和三菱plc联机程序5,带运行效果视频5,带cad的plc接线图在自动化控制领域,实现设备之间的高效联机通信是打造智能系统的关键。今天就来聊聊四种商品售货机中 MCGS 7.7 和三菱 PLC 的联机程序,并且还有运行效…

作者头像 李华
网站建设 2026/6/10 1:29:09

毕设 基于单片机的太阳追光系统(源码+硬件+论文)

文章目录 0 前言1 课题介绍光线追踪的原理系统架构 2 硬件设计3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断…

作者头像 李华
网站建设 2026/6/10 11:19:20

26、Linux 文本格式化与打印全解析

Linux 文本格式化与打印全解析 1. printf 的格式化应用 在脚本编写中, printf 是一个强大的工具,常用于格式化表格数据,而非直接在命令行中使用。下面我们来看看它是如何解决各种格式化问题的。 首先,输出由制表符分隔的字段: [me@linuxbox ~]$ printf "%s\t%…

作者头像 李华
网站建设 2026/6/10 12:53:21

无网络也能用!Flutter+开源鸿蒙构建轻量级应急通信系统

###欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。 无网络也能用!Flutter开源鸿蒙构建轻量级应急通信系统 应急场景下的离线通信系统设计与实现 在自然灾害(如地震、洪水)、野外探险或军事行动等应急场景下…

作者头像 李华