博客专栏  >  架构   >  Linux内存管理

Linux内存管理

Linux底层内存管理、分配器、内存回收、用户态内存分配等内容的学习笔记。

关注
2 已关注
10篇博文
  • Linux内核中的page migration和compaction机制简介

    我们知道buddy容易产生内存碎片,内核中可以通过给页面设置迁移类型以及compaction机制来预防和处理内存碎片。 内存页主要有下面三种类型: 1.可移动的(movable)。用户态申请。 ...

    2018-04-06 18:31
    124
  • Linux内存管理(1) - bootmem分配器

    内核中分配内存基本都基于伙伴系统,但是在内核启动之初,伙伴系统尚未建立,这时需要一个临时的内存分配器负责提供内核早期的内存需求,例如存放内核的代码段和数据段,以及将内存进行简单的管理供后续伙伴系统使用...

    2015-03-01 23:20
    968
  • Linux内存管理(2) - buddy系统

    本文目的在于分析Linux内存管理机制中的伙伴系统。内核版本为2.6.31。1. 伙伴系统的概念在系统运行过程中,经常需要分配一组连续的页,而频繁的申请和释放内存页会导致内存中散布着许多不连续的页,这...

    2015-03-02 20:54
    2441
  • Linux内存管理(3) - slab分配器和kmalloc

    本文目的在于分析Linux内存管理机制的slab分配器。内核版本为2.6.31。 1.    SLAB分配器 内核需要经常分配内存,我们在内核中最常用的分配内存的方式就是kmalloc了。前面讲过的伙...

    2015-03-02 21:04
    2252
  • Linux内存管理(4) - 不连续页的分配vmalloc

    本文目的在于分析Linux内核中的vmalloc函数。内核版本为2.6.31。 我们知道物理上连续的映射对内核是最好的,但不是总能成功。在分配一大块内存时,可能无法找到连续的内存块。在用户空间这不是问...

    2015-03-02 21:22
    1126
  • Linux内存管理 —— 为buddy做准备:MMU, TLB, ZONE

    本文都是假设系统是32位,页大小为4KB,基于ARM架构(不过和体系结构相关的内容不多)。 1. 了解MMU 在启用MMU的Linux内核中,CPU是通过虚拟地址来访问物理内存的。MMU(Me...

    2018-03-06 17:12
    173
  • Linux内存管理 —— 内核态和用户态的内存分配方式

    1. 使用buddy系统管理ZONE 我的这两篇文章buddy系统和slab分配器已经分析过buddy和slab的原理和源码,因此一些细节不再赘述。 所有zone都是通过buddy系统管理的,bu...

    2018-03-06 17:36
    293
  • Linux内存管理 —— 进程的虚拟地址空间和VSS

    1. 进程虚拟地址空间 进程的虚拟地址空间记录在其task_struct结构的指针成员mm中(struct mm_struct),这是用户态进程才有的,里面包含pgd、代码段、堆、栈地址等信息。(k...

    2018-03-06 17:47
    157
  • Linux内存管理 —— 文件系统缓存和匿名页的交换

    1. swap的含义 在Linux里swap有两个意思: 1. 动词:交换。内存和磁盘的颠簸行为。 2. 名词:硬盘的swap分区。 没有文件背景的页面,即匿名页(anonymous page...

    2018-03-06 18:27
    431
  • Linux内存管理 —— DMA和一致性缓存

    1. 出现内存不一致的原因 CPU写内存的时候有两种方式: 1. write through: CPU直接写内存,不经过cache。 2. write back: CPU只写到cache中。ca...

    2018-03-06 18:34
    414
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部