读深入理解Linux内核 (第8章 内存管理, 第一部分 --- 页的管理)
2016-10-14 21:21
453 查看
页的管理
每个内存页面对应一个页描述符,所有的页描述符存放在一个连续的内存区域。所以,通过页面的地址可以很方便得到描述符的地址,比如virt_to_page(addr),通过页地址得到页描述符地址。页描述符携带了该页的使用情况。1. 内存访问的不一致性
我们通常以为内存里的单元是没差别的,事实上,不同的内存位置(结点)CPU访问时间可能不同。同一结点,不同的地址范围用途不同,比如有的是高端内存。因此同一内存结点下又分为不同的内存区域(Zone)。页面的申请需要声明从那个Zone里面申请。2. 页的申请和释放
操作系统通过内存区域分配器(ZoneAllocator)管理着内存区域(Zone),比如alloc_pages(gfp_mask,order),gfp_mask指明了内存区域的类别等,而order是指,分配2的order次方个页面,这些页面是连续的。3. Buddy(伙伴)系统
具体内存区域(Zone)里面的页面由Buddy系统管理。区域里的页面一开始被分配到11个组里面,1个page,2个page,4个,8个...直到1024个。分配时,找最小的满足需求的连续页面,剩余的页面放到其它组里面。所以,随着系统的运行,连续页面越来越少,如果驱动需要用到连续的物理页面,就应该在初始化时申请好。相关文章推荐
- 读深入理解Linux内核 (第8章 内存管理, 第二部分 --- 任意长度内存分配)
- 读深入理解Linux内核 (第8章 内存管理, 第三部分 --- 虚拟内存分配)
- 深入理解Linux内核个人小结8---内存区管理
- 深入理解linux内核架构(内存管理)
- 深入理解Linux内核——内存管理
- 深入理解Linux内核-内存管理
- 读深入理解Linux内核 (第6章 时间管理)
- 读深入理解Linux内核 (第9章 进程地址空间, 第一部分 ---- 概念)
- 深入理解Linux内核之内存管理
- 深入理解l内核v4l2框架之video for linux 2(二)
- 深入理解LINUX 内核 之 进程学习
- 深入理解linux内核list_head的实现
- 深入理解Linux内核--信号
- 深入理解SELinux SEAndroid(第一部分)
- 深入理解Linux内存管理机制(一)
- 深入理解linux内核——内核同步
- 深入理解Linux内存管理-之-目录导航
- 深入理解SELinux/SEAndroid(第一部分)
- 《深入理解LINUX内存管理》学习笔记
- 深入理解LINUX内核--学习笔记