当前位置: 首页 > news >正文

系统调用brk 和 mmap 有什么不同?

系统调用brk 和 mmap 有什么不同?

1. 核心功能差异

‌brk‌: 通过调整进程堆顶指针(_edata)扩展/收缩堆空间,仅适用于连续内存分配‌。
‌mmap‌:在进程虚拟地址空间中创建独立映射区域,支持文件/匿名内存映射,可分配非连续内存‌。

2. 内存管理机制

‌brk‌:分配时仅修改虚拟地址边界,物理内存按需分配(首次访问触发缺页中断)‌。释放时内存由malloc内部缓存,不立即归还操作系统‌。
‌mmap‌:分配时建立虚拟地址与文件/内存的映射关系,支持共享/私有模式‌。释放时通过munmap**立即归还虚拟地址空间和物理内存‌**。

3. 性能与适用场景

特性 brk mmap
分配大小‌ 适合小块内存(<128KB)‌ 适合大块内存(≥128KB)‌
碎片问题‌ 易产生堆碎片‌ 独立管理,无外部碎片‌
系统开销‌ 仅移动指针,开销低‌ 需系统调用,开销高‌
多线程‌ 需全局锁,性能受限‌ 支持线程独立映射,无锁竞争‌

4. 典型应用场景

‌brk‌:频繁分配/释放小内存(如字符串、结构体)‌。
‌mmap‌:大文件I/O、共享内存、进程间通信(IPC)‌。

问题思考:
1. 什么是缺页中断?
2. _edata 具体是指什么?除了_edata 区还有哪些内存区域的划分?

http://www.zskr.cn/news/11534.html

相关文章:

  • 高性能PCIe 3.0软核,x1~x16,支持EP/RC,AXI4接口,内置DMA控制器,适用ASIC和FPGA
  • 使用git clone 批量下载huggingface模型文件
  • 日记4
  • 你看到的和你想要的
  • LAMP 架构说明及部署实践 - 教程
  • 【Linux】优秀的系统部分——线程池的基本设计思路
  • 实用指南:Pycharm中切换虚拟环境
  • MyEMS 深度解析:核心功能模块、数据流转逻辑与工业能源优化落地路径
  • 如何选择合适的服务器租用商? - 实践
  • ios26版本回退到ios18 - 指南
  • 详细介绍:SMTPman,smtp服务器的使用全解析与指南!
  • WPF ListBox VirtualizingPanel.CacheLengthUnit=Item VirtualizingPanel.CacheLength=5,5
  • 深入解析:Adobe Fresco下载教程Adobe Fresco 2025保姆级安装步骤(附安装包)
  • 深入解析:贪心算法之船舶装载问题
  • 抗体药物偶联物(ADCs)生物分析:拆解 “靶向导弹” 体内轨迹的核心技术
  • 使用IOT-Tree整合复杂计算模型(含AI模型),并对接现场设备优化控制(节能提效)技能方案
  • 经典三层架构项目(3-tier architecture)中应用依赖倒置原则(DIP)的理性权衡
  • Jupyter NoteBook / Jupyter Lab的安装与使用
  • 易基因:Nat Rev Drug Discov/IF101.8:何川团队顶刊综述RNA修饰系统作为疾病治疗靶点的研究进展
  • Mini L-CTF 2025 WP
  • 【ACM出版、连续三届EI检索】第四届人工智能与智能信息处理国际学术会议(AIIIP 2025)
  • 08_多线程编程
  • 【组合数学基础9】Catalan数(卡特兰数)笔记
  • 【IEEE出版】第二届数据挖掘与智能计算国际学术会议(ICDM 2025)
  • 深入解析:贪心算法应用:顶点覆盖问题详解
  • c++编程经典资料
  • PS字体处理
  • 研发项目经理与交付经理的能力差异
  • C#中,EXCEL与表列顺序完全一致情况的导入处理(BeginBinaryImport)
  • Gitee PPM:数据驱动的DevSecOps项目管理新范式