linux内核那些事之brk机制
内核向用户层提供申请用户虚拟空间的两种机制除了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机制相关推荐
- linux内核那些事之buddy(anti-fragment机制)(4)
程序运行过程中,有些内存是短暂的驻留 用完一段时间之后就可以将内存释放以供后面再次使用,但是有些内存一旦申请之后,会长期使用而得不到释放.长久运行有可能造成碎片.以<professional l ...
- linux内核那些事之buddy(anti-fragment机制-steal page)(5)
继<linux内核那些事之buddy(anti-fragment机制)(4)>,在同一个zone内指定的migrate type中没有足够内存,会启动fallback机制,从fallbac ...
- Linux 内核中的 Device Mapper 机制
本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...
- 【Linux 内核 内存管理】RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )
文章目录 一.RCU 机制适用场景 二.RCU 机制特点 三.使用 RCU 机制保护链表 一.RCU 机制适用场景 在上一篇博客 [Linux 内核 内存管理]RCU 机制 ① ( RCU 机制简介 ...
- 【Linux 内核 内存管理】RCU 机制 ① ( RCU 机制简介 | RCU 机制的优势与弊端 | RCU 机制的链表应用场景 )
文章目录 一.RCU 机制 二.RCU 机制的优势与弊端 三.RCU 机制的链表应用场景 一.RCU 机制 RCU , 英文全称是 " Read-Copy-Update " , 对 ...
- linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc
实用文案 标准文档 Linux内核空间与用户空间通信机制的研究 Linux kernel space and user space communication mechanism 摘 要 Linux ...
- linux内核那些事之buddy(慢速申请内存__alloc_pages_slowpath)(5)
内核提供__alloc_pages_nodemask接口申请物理内存主要分为两个部分:快速申请物理内存get_page_from_freelist(linux内核那些事之buddy(快速分配get_p ...
- linux内核那些事之mmap_region流程梳理
承接<linux内核那些事之mmap>,mmap_region()是申请一个用户进程虚拟空间 并根据匿名映射或者文件映射做出相应动作,是实现mmap关键函数,趁这几天有空闲时间 整理下mm ...
- linux内核那些事之buddy
buddy算法是内核中比较古老的一个模块,很好的解决了相邻物理内存碎片的问题即"内碎片问题",同时有兼顾内存申请和释放效率问题,内核从引入该算法之后一直都能够在各种设备上完好运行, ...
最新文章
- dns短域名会引起nslookup解析总解析到一个IP
- python中http_Python中HTTP协议
- 441. Arranging Coins
- html5 video css样式修改,htmlvideo标签用法
- FFmpeg RTMP推HEVC/H265流
- ELK+Kafka 企业日志收集平台(二)
- Java网络编程的简单应用 例程
- 动态规划——最大上升子序列(hdu1087)
- Java中静态代码块
- LeetCode-C#实现-链表(#19/21/141/206/707/876)
- velocity 变量 获取_velocity 怎么得到项目根路径
- java io学习 IO流的分类
- 遥感原理与应用_遥感原理与应用考试题库及答案
- ENVI App Store 下载与安装
- PLC数据采集解决方案,BCNet数据采集
- android测试用例编写
- Visual Studio 开发者命令行找不到 ildasm命令及无法创建 CLR 项目的解决方法
- 技术负责人如何带领好团队
- arcgis python实例_科学网—ArcGIS,Python,网络数据集中查询两点最短路径 - 余露的博文...
- can收发器 rx_USB-CAN收发器