1、字节,页 (page 32位4KB 64位 8KB),区(ZONE) 为单位进行管理
*内存由页结构(page)来进行管理
*区 (一些硬件只能用某些特定的内存地址来执行DMA,所以对内存进行一些区的划分)
ZONE_DMA DMA 使用的页 <16MB
ZONE_NORMAL 正常可寻址的页 16M~896M
ZONE_HIGHMEM 动态映射的页 >896M
2、内存非配方式
页获取方式: alloc_pages() free_pages()
kmalloc(size,GFP_KERNEL) 可以睡眠 对应 kfree() 对应虚拟地址连续,物理地址连续
kmalloc(size,GFP_KERNEL) 不睡眠 对应 kfree() 对应虚拟地址连续,物理地址连续
vmalloc(size) 可以睡眠 对应虚拟地址连续,物理地址不连续
3、slab内存分配(空闲链表)
当遇到频繁的数据分配和释放,应当缓存,频繁的内存分配和回收必然会导致内存碎片。
kmem_cache_create
kmem_cache_alloc
kmem_cache_free
4、栈上静态内存分配
内核中每个栈的大小是很小且是固定的,32位4KB,64位8KB
5、单cpu内存分配
SMP全称是"对称多处理"(Symmetrical Multi-Processing)技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。
单个cpu上分配内存的好处在于减少数据锁定,
网友评论