首页 > 技术文章 > linux 内存管理 malloc原理 伙伴算法 slab分配算法

chenwenjun 2020-10-15 11:33 原文

 
伙伴算法 和 slab是linux用来管理物理内存的算法,伙伴减少外部碎片 slab减少内部碎片,物理内存是页框,虚拟内存是分页
malloc是linux库函数,主要是通过brk和mmap系统调用实现,brk分配128k以下的内存,分配的都是虚拟内存,实际访问时才会进行物理内存和虚拟内存的映射
virtual memory 和 physical memory的映射依赖mmu,虚存页面到物理页框的映射叫做页面的加载,首先会先到ram的页表中查询映射关系,查询不到发生缺页中断,判断有无空闲物理页框,有的话建立物理页框和虚拟内存映射并写入页表,再次执行指令,没有的话,需要触发页面置换算法,一般是lru算法,将最不常用的页面置换到磁盘空间,腾出空间继续操作
页表是内存转换的基础,为了增加页表的访问速度,cpu增加TLB寄存器支持页表快速访问,由于程序运行过程中页表也需要装载到内存中,页表过大无法装载,又引入了多级页表的概念

推荐阅读