博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux2.6内核--内存管理(2)--区
阅读量:5167 次
发布时间:2019-06-13

本文共 699 字,大约阅读时间需要 2 分钟。

      由于硬件的限制,内核不能对所有的页一视同仁。有些页位于内存中的特定物理地址上,所以,不能将其用于一些特别的任务。(关于内存分页机制可以查看:)由于存在这种限制,所以内核会把页划分为不同的区。内核使用区对具有相似特性的页进行分组。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 中按照请求的数目取出页。注意,区的划分没有任何的物理意义,这只不过是内核为了管理页而采取的一种逻辑上的分组。

 

转载于:https://www.cnblogs.com/james1207/p/3275595.html

你可能感兴趣的文章
c 字符串 函数
查看>>
Android 拖动条/滑动条控件、星级评分控件
查看>>
Linux 使用pwgen命令创建随机密码
查看>>
Vmware esxi开启snmp服务
查看>>
LogLog
查看>>
Practice: Process logs with Apache Hadoop
查看>>
实验六
查看>>
预览文章: c++ primer学习笔记,一:入门
查看>>
[连载]PHP Socket深度探索(1)
查看>>
Java8-Map
查看>>
Windows下PhpStorm结合WAMP开发Phalcon应用的配置
查看>>
921.Minimum Add to Make Parentheses Valid.
查看>>
JVM内存回收机制——哪些内存需要被回收(JVM学习系列2)
查看>>
执行SQL查询脚本
查看>>
java程序性能优化
查看>>
导航器的基本运用
查看>>
javascript中的类方法、构造方法、原型方法的对比
查看>>
HTML基础
查看>>
转:JMeter整合InfluxDB,Grafana让测试结果实时显示
查看>>
JavaScript实现生成GUID(全局统一标识符)
查看>>