zoukankan      html  css  js  c++  java
  • Linux2.6内核--内存管理(2)--区

          由于硬件的限制,内核不能对所有的页一视同仁。有些页位于内存中的特定物理地址上,所以,不能将其用于一些特别的任务。(关于内存分页机制可以查看:http://blog.csdn.net/dlutbrucezhang/article/details/10181535)由于存在这种限制,所以内核会把页划分为不同的区。内核使用区对具有相似特性的页进行分组。Linux必须处理如下两种由于硬件存在缺陷而引起的内存寻址问题:

       1.一些硬件只能用某些特定的内存地址来执行 DMA

       2.一些体系结构的内存的物理寻址范围比虚拟寻址范围大得多。这样,就有一些内存不能永久的映射到内核空间中

       因为存在这些制约条件,Linux主要使用了四种区,下面,就来分析下这四种区。

     

       ZONE_DMA:这个区包含的页能用来执行 DMA 操作。

       ZONE_DMA32:和ZONE_DMA类似,该区包含的页面可用来执行DMA操作;而和ZONE_DMA不同之处在于,这些页面只能被32位设备访问。在某些体系结构中,该区会比ZONE_DMA更大。

       ZONE_NORMAL:这个区包含的都是能正常映射的页。

       ZONE_HIGHMEM:这个区包含“高端内存”,其中的页并不能永久的映射到内核地址空间。

        内核看到内存的情况就好像下面这个样子:


     

        Linux把系统的页划分为区,形成不同的内存池,这个样子就可以根据用途进行分配了。例如,ZONE_DMA 内存池让内核有能力为 DMA 分配所需的内存。如果需要这样的内存,那么,内核就可以从 ZONE_DMA 中按照请求的数目取出页。注意,区的划分没有任何的物理意义,这只不过是内核为了管理页而采取的一种逻辑上的分组。

  • 相关阅读:
    职业生涯起步不要去顶级公司
    discuz uc密码修改
    习惯决定成功与否
    世上没有理想的工作
    中山市慧海人力资源服务有限公司
    Codeforces Round #365 (Div. 2) B 前缀和
    Codeforces Round #365 (Div. 2) A 水
    tyvj 1067 dp 两次LIS(nlogn)
    Codeforces Round #303 (Div. 2) D 贪心
    Codeforces Round #303 (Div. 2) C dp 贪心
  • 原文地址:https://www.cnblogs.com/james1207/p/3275595.html
Copyright © 2011-2022 走看看