news 2026/5/4 3:38:03

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

作者头像

张小明

前端开发工程师

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/5/2 3:15:59

37、面向方面编程与图像融合技术的研究进展

面向方面编程与图像融合技术的研究进展 在软件开发和图像处理领域,新技术的不断涌现为解决复杂问题提供了新的途径。本文将探讨面向方面编程(AOP)对软件设计质量的影响,以及一种基于非下采样轮廓波变换(NSCT)域的新型图像融合方法。 面向方面编程对软件设计质量的影响 …

作者头像 李华
网站建设 2026/4/29 17:02:54

44、基于实时多元稳健回归与多项式逼近的洪水预测模型

基于实时多元稳健回归与多项式逼近的洪水预测模型 1. 引言 自然灾害如洪水、飓风等对贫困和弱势群体的生活影响巨大。为了通过早期灾害预测减少损失,人们做了很多工作。由于网络需部署在农村地区,资源严重受限。如今,基于无线传感器网络(WSN)的系统常用于预测模型。WSN …

作者头像 李华
网站建设 2026/5/3 12:30:28

2025年三亚跨境医疗康养最新推荐榜发布:聚焦三亚,国际医疗合作,亚健康调理,健康管理,康养咨询

2025年,三亚在跨境医疗与康养领域展现出巨大的潜力,吸引了众多高净值人群的目光。随着国际医疗合作的深入,三亚不仅提供领先的健康管理服务,还注重亚健康调理。本次推荐榜中列出了三家表现突出的机构,各自拥有独特的服…

作者头像 李华
网站建设 2026/5/2 22:04:48

STM32学习_GPIO简介

STM32学习_GPIO简介 一、GPIO输出部分- 实现 LED 点亮的代码: #include "stm32f10x.h" // Device headerint main(void) {// 开启 RCC 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 配置结构体,用于初始化 G…

作者头像 李华