随笔分类 -  Linux内存管理

Linux内存初始化(二)identity mapping和kernel image mapping
摘要:一、前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程。想要了解一些概述性的、框架性的东西可以参考内存初始化文档。 本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARM 阅读全文

posted @ 2018-02-13 22:30 AlanTu 阅读(2638) 评论(0) 推荐(0) 编辑

Linux内存初始化(一)
摘要:一、前言 一直以来,我都非常着迷于两种电影拍摄手法:一种是慢镜头,将每一个细节全方位的展现给观众。另外一种就是快镜头,多半是反应一个时代的变迁,从非常长的时间段中,截取几个典型的snapshot,合成在十几秒的镜头中,可以让观众很快的了解一个事物的发展脉络。对应到技术层面,慢镜头有点类似情景分析,把 阅读全文

posted @ 2018-02-13 22:29 AlanTu 阅读(5081) 评论(3) 推荐(1) 编辑

Fix-Mapped Addresses
摘要:一、前言 某天,wowo同学突然来了一句:如果要在start_kernel中点LED,ioremap在什么时间点才能调用呢?我想他应该是想通过点LED灯来调试start_kernel之后的初始化的代码(例如DTB解析部分的代码)。那天,我们两个花了二十分钟的时间,讨论相关的问题,我觉得很有意思,因此 阅读全文

posted @ 2018-02-13 22:27 AlanTu 阅读(1690) 评论(0) 推荐(0) 编辑

Linux内存模型
摘要:一、前言 在linux内核中支持3中内存模型,分别是flat memory model,Discontiguous memory model和sparse memory model。所谓memory model,其实就是从cpu的角度看,其物理内存的分布情况,在linux kernel中,使用什么的 阅读全文

posted @ 2018-02-13 22:26 AlanTu 阅读(2295) 评论(0) 推荐(2) 编辑

slub分配器
摘要:Linux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的、不可预测的,所以需要一种类似用户空间堆内存的管理机制(malloc/free)。然而内核对对象的管理又有一定的特殊性,有些对象的访 阅读全文

posted @ 2018-02-13 22:13 AlanTu 阅读(659) 评论(0) 推荐(0) 编辑

linux内存回收机制
摘要:无论计算机上有多少内存都是不够的,因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式:如果一个很少使用的页的后备存储器是一个块设备(例如文件映射),则可以将内存直接同步到块设备,腾出的页面可以被重用;如果页面没有后备存储 阅读全文

posted @ 2018-02-13 22:10 AlanTu 阅读(4671) 评论(0) 推荐(0) 编辑

linux内存碎片防治技术
摘要:Linux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这里将对这些技术进行总结归纳。 1 低内存时整合碎片 从buddy申请内存页,如果找不到合适的页,则会 阅读全文

posted @ 2018-02-13 22:09 AlanTu 阅读(2214) 评论(1) 推荐(0) 编辑

Linux vm运行参数 - OOM相关的参数
摘要:一、前言 本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的。为了理解OOM参数,第二章简单的描述什么是OOM。如果这个名词对你毫无压力,你可以直接进入第三章,这一章是描述具体的参数的,除了描述具体的参数,我们引用了一些具体的内核代码,本文的代码来自4.0 阅读全文

posted @ 2018-02-13 22:07 AlanTu 阅读(728) 评论(0) 推荐(0) 编辑

Linux vm运行参数 - overcommit相关的参数
摘要:一、前言 终于可以进入Linux kernel内存管理的世界了,但是从哪里入手是一个问题,当面对一个复杂系统的时候,有时候不知道怎么开始。遵守“一切以人为本”的原则,我最终选择先从从userspace的视角来看内核的内存管理。最开始的系列文章选择了vm运行参数这个主题。执行ls /proc/sys/ 阅读全文

posted @ 2018-02-13 22:06 AlanTu 阅读(792) 评论(0) 推荐(0) 编辑

导航