设为首页 收藏本站
查看: 512|回复: 0

[经验分享] linux内存管理总结之概述

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-3-27 09:52:07 | 显示全部楼层 |阅读模式
一、概述
1.节点(node)
    一些多处理器系统硬件支持NUMA(非一致内存访问),这种体系会使用多条系统总线,每条总线为一个(组)处理器服务。每个(组)处理器都有自己的本地内存,处理器之间通过总线连接起来以支持对其他(组)处理器本地内存的访问。这样物理内存就被划分为了不同的节点(node),每个(组)处理器访问本地内存比访问与其他节点关联的内存快,因此具有非一致性。
    本地内存是指与当前正在运行线程的处理器位于同一节点上的内存。任何不属于当前正在运行的线程所在的节点的内存均为外部内存。访问外部内存的耗时与访问本地内存的耗时之比称为 NUMA 比率。如果 NUMA 比率为 1,则它是对称多处理 (SMP),这样的体系属于UMA 。
    UMA(一致性内存访问)体系的物理内存空间虽然可能会有空洞,但系统的每个处理器对内存的访问具有相同的时间,因此具有一致性,这种情况物理内存关联一个单独的节点。

2.物理页(page)
    物理页是内存管理的基本单位,内存管理单元(MMU)以页为单位处理虚拟地址到物理地址的转换。

3.内存区域(zone)
     每个节点的物理内存又被划分为几个区(zone),区的划分与体系结构大有关联,一些体系结构的ZONE_DMA 或者 ZONE_HIGHMEM为空。
    内核对任何内存的访问都需要使用自己的虚拟地址,然而一些体系如32 位x86在当RAM 大于896M 的情况下并没有将物理内存全部映射到内核虚拟地址,因此内核若是访问大于896M的物理内存必须建立适当的虚拟映射,使该页可以在内核地址空间访问。这种情况在64位体系中不存在,因为这种体系内核虚拟地址可以映射全部物理内存。
    32位x86体系内存区域的划分为:低于16M的ZONE_DMA ,高于16M且低于896M的ZONE_NORMAL,896M 以上的ZONE_HIGHMEM。

4.内核空间的地址划分
    32位x86系统有4GB 地址空间,一般 将最后一个GB 划分为内核地址空间。有些非x86的32位系统并不使用这种划分,可以拥有4GB的内核地址空间。
    逻辑地址:内核逻辑地址一对一、线性地映射到物理内存,大多数体系中,逻辑地址与相关的物理地址的差别仅是之间存在一个固定的偏移而已,无需建立页表。
    虚拟地址:它的存在是为了映射高端内存,或者动态映射内存,因此与物理地址不一定是线性和一对一(对某页高端内存可多次映射到内核空间),需要建立页表。
28748002_13948870686Z53.jpg
    上图为32位x86系统的内核空间划分:
    直接映射区:在__PAGE_OFFSET到high_memory为逻辑地址。
    动态内存映射区:在VMALLOC_START到VMALLOC_END为VMALLOC区,可用来分配虚拟地址连续的物理页,物理页尽量从高端内存分配
    永久映射区:该区允许内存建立高端内存物理页到内核虚拟地址的长期映射,内核由此获得了访问高端内存页的能力。
    固定映射区:在该区内虚拟地址与物理地址间的映射可以在系统启动时任意建立,但定义后不能改变,也因而总可以从TLB 高速缓存来获取关联的物理地址。类比数组名和指针变量之间的区别,指针多了一步获取其指向地址的步骤,在该区内内核使用了固定映射的线性地址代替了指针变量,因此效率变高了。其他一些体系如AMD64也使用这个区。
    这几个区之间会用一些空白,空白并不映射物理内存。这样做是为了捕获越界访问。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-16305-1-1.html 上篇帖子: ubuntu的基本命令 下篇帖子: linux 添加磁盘+lvm扩容 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表