码迷,mamicode.com
首页 > 其他好文 > 详细

存储管理

时间:2018-07-03 22:35:28      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:位移   nod   基本框架   物理地址   inux   zone   mem   linux   info   

一、Linux 内存管理的基本框架

  线性地址的映射分为4步:

  1.线性地址最高的位段作为下标 在PGD(页面目录)中找到表项,该表项指向PMD(中间目录)。

  2.线性地址第二位段作为下标在PMD中找到表项,该表项指向页面表。

  3.线性地址第三位段作为下标在页面表中找到PTE,该表项存放指向物理页面的指针。

  4.线性地址最后位段为 物理页面 内的相对位移   该位移 跟物理页面的起始地址相加得到相应的物理地址。

  如图所示:

    技术分享图片

 

二、重要的数据结构和函数

1.内核中有个指针全局变量mem_map,指向page数据结构的数组,每个page代表一个物理页面,那么整个数组代表系统中全部物理页面,相当一个仓库。该仓库分为ZONE_DMA与ZONE_NORMAL两个管理区(可能有第三个ZONE_HIGHMEM用于物理地址超过1GB的存储空间)。

2.ZONE_DMA专给DMA用的,DMA不经过MMU提高的地址映射的。所以:1、外设要直接提供物理地址。2、DMA地址必须连续。

3.每个管理区有个 zone_struct数据结构,里面有 一组 空闲区间队列  free_area_struct ,该结构维持双向链队列的结构 list_head,page结构体里也有一个list_head,page就是通过它进入free_area_struct。

4.由于非均质存储结构(就是包含各种rom/ram等cpu访问的所需时间不一样的器件),在zone_struct page等结构体之上又 引出 代表 存储节点的pglist_data结构体,若干个节点组成单链队列 ,该结构体的 node_mem_map指向page数组,node_zones 管理区。

 

存储管理

标签:位移   nod   基本框架   物理地址   inux   zone   mem   linux   info   

原文地址:https://www.cnblogs.com/lijia-xiansheng/p/9260725.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!