Linux内存管理(三十五):内存规整简介和 kcompactd详解
源码基于:Linux5.4
0. 前言
伙伴系统以页面为单位来管理内存,内存碎片也是基于页面的,即由大量离散且不连续的页面组成的。从内核角度来看,出现内存碎片不是好事情,有些情况下物理设备需要大段的连续的物理内存,如果内核无法满足,则会发生内核错误。内存规整就是为了解决内核碎片化而出现的一个功能。
内核中去碎片化的基本原理是按照页面的可移动性将页面分组。
迁移内核本身使用的物理内存的实现难度和复杂度都很大,因此目前的内存不迁移内核本身使用的物理页面。对于户进程使用的页面,实际上通过用户用页表的映射来访问,用户页表可以移动和修改映射关系,不会影响用户进程,因此内存规整是基于页面迁移实现的。
本文将着重介绍内存规整的基本原理,以及 kcompacted 触发、启动的过程。
1. 内存规整的基本原理
系统长时间运行后,页面变得越来越分散,分配一大块连续的物理内存变得越来越难,但有时系统就是需要一大块连续的物理内存,这就是内存碎片化(memory fragmentation)。
Linux内存管理(三十五):内存规整简介和 kcompactd详解相关推荐
- linux内存管理(十五)-内存池
一.内存池原理 平时我们直接所使用的 malloc,new,free,delete 等等 API 申请内存分配,这做缺点在于,由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能 ...
- Linux 驱动开发 三十五:Linux 内核时钟管理
参考: linux时间管理,时钟中断,系统节拍_u010936265的博客-CSDN博客_系统节拍时钟中断 Linux内核时钟系统和定时器实现_anonymalias的专栏-CSDN博客_linux内 ...
- Linux中free函数头文件,Linux C 堆内存管理函数malloc()、calloc()、realloc()、free()详解...
C 编程中,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的 堆区(heap):一般 ...
- STM32F429第二十五篇之MCU屏实验详解
文章目录 前言 硬件 软件 结构体 SRAM_HandleTypeDef Instance(FMC寄存器地址) Extended(拓展寄存器地址) Init(初始化变量) Lock(锁) State( ...
- ReactNative进阶(三十八):Android ndk abiFilters 详解
一.前言 二.ABI 是什么 三.为何设置 ndk 的 abiFilters 四.如何配置 gardle 五.ABI支持详解 六.支持建议 七.拓展阅读 一.前言 Android 系统本质是一个经过改 ...
- 第十五章: 菱悦 -垃圾回收GC详解
第 15章 垃圾回收GC详解 文章目录 第 15章 垃圾回收GC详解 1.System.gc() 的理解 1.1.System.gc() 方法 1.2.不可达对象回收行为 2.内存溢出与内存泄漏 2. ...
- openstack 管理三十五 - 利用 SQL 获取 tenant 当前资源情况
作用 因为 openstack 命令行下, 没有办法直接获取资源使用情况 通过 sql 语句获得 tenant(project) 当前的资源使用情况 常见资源分别有 core, memory, dis ...
- 十五、CSS 3新特性详解(三)——3D转换(位移、旋转、呈现)、透视perspective、旋转rotateX、Y、Z、呈现transform-style
HTML5 第三天 一. 认识 3D 转换 3D 的特点 近大远小 物体和面遮挡不可见 三维坐标系 x 轴:水平向右 – 注意:x 轴右边是正值,左边是负值 y 轴:垂直向下 – 注意:y 轴下面是正 ...
- python接口自动化(十五)--参数关联接口(详解)
简介 我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jen ...
最新文章
- [转]SQL Server 2005链接字符串
- mysql恢复root密码
- 利用优盘安装win2008r2系统
- python写程序求多项式的和_用正则编译和搜索在python中计算区分多项式的系数
- linux内核杂记(16)-系统调用(3)
- mybatis学习(2):基本设置和核心配置
- 继承的方式编写日向家族
- java abstractlist_Java集合类源码解析:AbstractList
- 数据中台是什么意思?如何建设数据中台?
- Hive中类SQL语言中的where 与having
- 6、tcp_wrapper
- 德标螺纹规格对照表_常用螺栓的标准和规格表
- python一键电影搜索与下载
- cv2.cvtColor() 的使用
- Python语法之文件操作思维导图
- 几款常见蓝牙芯片整理
- mysql数据库巡检方案_Mysql数据库巡检
- vue中的 vxe-table表格插件 实现树形数据表
- java gc 对象可达性_JVM垃圾回收系列---GC Roots可达性分析
- 美国地质调查局DEM,需账户密码