内核向用户层提供申请用户虚拟空间的两种机制除了mmap之外,另外一个就是brk机制,mmap主要控制虚拟空间mmap区域管理,而brk机制主要管理的是一个进行的堆空间。

brk/sbrk

brk 和sbrk是内核向用户提供的两个用于申请堆空间的系统调用,一般应用程序并不直接使用brk系统调用,而是通过glibc封装好的malloc接口间接调用brk系统调用。

#include <unistd.h>int brk(void *addr);void *sbrk(intptr_t increment)

linux 一个整个虚拟空间分布如下所示:

其中堆空间始于进程的数据段结束地址即start_brk,随着内存的分配和释放而增加和减少,堆空间其实就是一段连续的虚拟内存空间,而通常将堆的当前内存边界称为”Program brak"简称为brk,brk用于记录的是当前堆已经分配使用的结束地址(即未使用分配的起始地址)。

内核就是通过系统调用brk,由上层应用程序不断调用堆空间的使用位置。堆空间不像

linux内核那些事之brk机制相关推荐

  1. linux内核那些事之buddy(anti-fragment机制)(4)

    程序运行过程中,有些内存是短暂的驻留 用完一段时间之后就可以将内存释放以供后面再次使用,但是有些内存一旦申请之后,会长期使用而得不到释放.长久运行有可能造成碎片.以<professional l ...

  2. linux内核那些事之buddy(anti-fragment机制-steal page)(5)

    继<linux内核那些事之buddy(anti-fragment机制)(4)>,在同一个zone内指定的migrate type中没有足够内存,会启动fallback机制,从fallbac ...

  3. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  4. 【Linux 内核 内存管理】RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )

    文章目录 一.RCU 机制适用场景 二.RCU 机制特点 三.使用 RCU 机制保护链表 一.RCU 机制适用场景 在上一篇博客 [Linux 内核 内存管理]RCU 机制 ① ( RCU 机制简介 ...

  5. 【Linux 内核 内存管理】RCU 机制 ① ( RCU 机制简介 | RCU 机制的优势与弊端 | RCU 机制的链表应用场景 )

    文章目录 一.RCU 机制 二.RCU 机制的优势与弊端 三.RCU 机制的链表应用场景 一.RCU 机制 RCU , 英文全称是 " Read-Copy-Update " , 对 ...

  6. linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc

    实用文案 标准文档 Linux内核空间与用户空间通信机制的研究 Linux kernel space and user space communication mechanism 摘 要 Linux ...

  7. linux内核那些事之buddy(慢速申请内存__alloc_pages_slowpath)(5)

    内核提供__alloc_pages_nodemask接口申请物理内存主要分为两个部分:快速申请物理内存get_page_from_freelist(linux内核那些事之buddy(快速分配get_p ...

  8. linux内核那些事之mmap_region流程梳理

    承接<linux内核那些事之mmap>,mmap_region()是申请一个用户进程虚拟空间 并根据匿名映射或者文件映射做出相应动作,是实现mmap关键函数,趁这几天有空闲时间 整理下mm ...

  9. linux内核那些事之buddy

    buddy算法是内核中比较古老的一个模块,很好的解决了相邻物理内存碎片的问题即"内碎片问题",同时有兼顾内存申请和释放效率问题,内核从引入该算法之后一直都能够在各种设备上完好运行, ...

最新文章

  1. dns短域名会引起nslookup解析总解析到一个IP
  2. python中http_Python中HTTP协议
  3. 441. Arranging Coins
  4. html5 video css样式修改,htmlvideo标签用法
  5. FFmpeg RTMP推HEVC/H265流
  6. ELK+Kafka 企业日志收集平台(二)
  7. Java网络编程的简单应用 例程
  8. 动态规划——最大上升子序列(hdu1087)
  9. Java中静态代码块
  10. LeetCode-C#实现-链表(#19/21/141/206/707/876)
  11. velocity 变量 获取_velocity 怎么得到项目根路径
  12. java io学习 IO流的分类
  13. 遥感原理与应用_遥感原理与应用考试题库及答案
  14. ENVI App Store 下载与安装
  15. PLC数据采集解决方案,BCNet数据采集
  16. android测试用例编写
  17. Visual Studio 开发者命令行找不到 ildasm命令及无法创建 CLR 项目的解决方法
  18. 技术负责人如何带领好团队
  19. arcgis python实例_科学网—ArcGIS,Python,网络数据集中查询两点最短路径 - 余露的博文...
  20. can收发器 rx_USB-CAN收发器

热门文章

  1. 企业园区办公室无线覆盖部署案例
  2. GD32E230C-EVAL开发板使用
  3. XGBoost核心算法原理详解
  4. 浅谈图像生成模型 Diffusion Model 原理
  5. Deepin15.11稳定源可以支持小米笔记本Pro-GTX版的指纹设备
  6. 中海达ihand30手簿使用说明_中海达iHand20手簿使用简易说明书.doc
  7. 计算机专业数学知识点,计算机专业数学教学过程中学习兴趣和能力的培养
  8. python如何查错_python实现查询纠错
  9. linux删除的相关命令
  10. 求整形矩阵的最大子矩阵