linux内存子系统
分享linux内存子系统
badman250
专注分享IT知识技能
展开
-
linux内存初始化初期内存分配器——memblock
1.1.1 memblock系统初始化的时候buddy系统,slab分配器等并没有被初始化好,当需要执行一些内存管理、内存分配的任务,就引入了一种内存管理器bootmem分配器。当buddy系统和slab分配器初始化好后,在mem_init()中对bootmem分配器进行释放,内存管理与分配由buddy系统,slab分配器等进行接管。 而memblock是用来替代bootmem的新接口...原创 2018-04-23 13:47:39 · 814 阅读 · 0 评论 -
linux内存管理——mmap函数详解
mmap函数是unix/linux下的系统调用。当存在客户-服务程序中复制文件时候,其数据流如下,要经历四次数据复制,开销很大。 如果采用共享内存的方式,那么将大大优化IO操作,数据流变成了如下,数据只复制两次: 映射文件或设备到内存中,取消映射就是munmap函数。语法如下:void *mmap(void *addr, size_t length, int prot, int flags, ...原创 2018-04-20 15:13:10 · 10125 阅读 · 0 评论 -
Linux内存管理
内核和用户空间不同,不支持简单便捷的内存分配方式,而且处理内存分配错误也绝非易事。因此在深入之前,非常有必要理解内核是如何管理内存的。1.1.1 页面内核把物理页作为内存管理的基本单元。体系结构不同,支持的页大小也不同,大多数32位体系结构支持4KB,而64位一般会支持8KB的页。系统中每一个物理页有一个 struct page,结构体定义在文件:大多数内核(kernel)的操作只使用ZONE_N...原创 2018-04-15 22:03:10 · 482 阅读 · 0 评论