liunx内核内存管理简介
liunx内核的内存管理子系统如图所示
一、基本功能
内核空间基本功能是负责从进程虚拟地址空间分配虚拟页,主要涉及函数有:
1、sys_brk 用来扩大或收缩堆
2、sys_mmap 用于在内存映射区域分配虚拟页
3、sys_munmap 释放虚拟页
内核使用延时分配物理内存,在进程进行first访问虚拟页触发页错误异常时,异常处理程序从页分配器申请物理页。
内核空间提供把页划分小内存块的块分配器,接口有:kmalloc() 分配,kfree() 释放
二、内核空间其他功能:
1、内存碎片化时,申请不到连续物理页,可以生气不连续物理页,映射到连续虚拟页
2、进程与驱动程序共用空闲内存
3、内存碎片化很多时,找到不到连续的物理页,通迁移实现内存碎片整理得到连续的物理页
4、内存不足时,负责回收物理页,将数据放置交换区、存储数据到存储设备
5、页回收失败,内存耗进杀手选择kill进程。