Linux kernel内存管理的基本概念

作者:wowo 发布于:2017-11-9 22:37 分类:内存管理

内存(memory)在Linux系统中是一种牵涉面极广的资源,上至应用程序、下至kernel和driver,无不为之魂牵梦绕。加上它天然的稀缺性,导致内存管理(Memory Management,简称MM)是linux kernel中非常重要又非常复杂的一个子系统。

重要性就不多说了,Kernel自有分寸。关于复杂性(鉴于Linux kernel优秀的抽象能力),应该不会被普通人(Linux系统的使用者、应用工程师、驱动工程师、轻量级的内核工程师)感知到才对。事实确实如此,Kernel屏蔽掉了大多数的实现细节,尽量以简单、易用的方式向其它模块提供memory服务。

不过呢,这个世界上没有完美的存在,kernel的内存管理也是如此,由于两方面的原因:一、众口难调,内存管理有关的需求实在太复杂了;二、CPU、Device和Memory之间纠结的三角恋(参考下面图片),导致它也(不得不)提供了很多啰里啰唆的、不易理解的功能(困扰了很多从入门级到资深级的linux软件工程师)。

memory_topology

图片1 CPU, Device and Memory

基于上面的原因,本站内存管理子系统发布了很多分析文章,以帮助大家理解内存管理有关的概念。不过到目前为止,还缺少一篇索引类的文章,从整体出发,理解Kernel内存管理所需要面对的软硬件局面、所要解决的问题,以及各个内存管理子模块的功能和意义。这就是本文的目的。

阅读全文>>

标签: Linux Kernel 内核 内存管理 mm 概念

评论(1) 浏览(568)

内存初始化(上)

作者:linuxer 发布于:2016-10-13 12:05 分类:内存管理

一直以来,我都非常着迷于两种电影拍摄手法:一种是慢镜头,将每一个细节全方位的展现给观众。另外一种就是快镜头,多半是反应一个时代的变迁,从非常长的时间段中,截取几个典型的snapshot,合成在十几秒的镜头中,可以让观众很快的了解一个事物的发展脉络。对应到技术层面,慢镜头有点类似情景分析,把每一行代码都详细的进行解析,了解技术的细节。快镜头类似数据流分析,勾勒一个过程中,数据结构的演化。本文采用了快镜头的方法,对内存初始化部分进行描述,不纠缠于具体函数的代码实现,只是希望能给大家一个概略性的印象(有兴趣的同学可以自行研究代码)。BTW,在本文中我们都是基于ARM64来描述体系结构相关的内容。

阅读全文>>

标签: 初始化 内存管理

评论(19) 浏览(4925)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog