![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
内存整理
文章平均质量分 90
整理记录学习工作中经历的内存相关知识点,包含并不限于内存硬件设计、Linux内存管理、dram测试工具等
And乔
每天整理一小时
展开
-
DDR基础概念理解
DDR学习第一趴本部分主要做基础概念介绍,争取达到阅读完此小节,可以对DDR的相关概念有基本认知1. 常规名词介绍流程概念理解名词说明BLBurst length,突发长度,突发是指同一行中相邻的存储单元连续进行数据传输的方式,连续传输所设计到存储单元(列)的数量就是突发长度(SDRAM),在DDR SDRAM中指连续传输的周期数BankSDRAM中的基本单元,一个bank代表一个行列组成的基本单元,一般都是8bank结构RASRow Address St原创 2022-05-11 22:33:06 · 1975 阅读 · 1 评论 -
关于Kswapd的理解(一)
关于Kswapd的理解(一)之前跟踪了MemAvailable的计算方式,其中watermark的计算花了很多精力,在学习的过程中看到一些资料中说watermark是给swapd使用的,于是乎,研究一下看看咯本部分主要记录两个方面:对于kswapd这个东西,从初学者(我)的角度出发会考虑哪些内容?跟踪kswapd 初始化结构部分;1. KSwapd机制上图是还没有跟踪kswapd code的时候,对自己提出的一些疑问和自身的理解,主要是如下内容:kswapd 机制用来做什么:内存不足时原创 2022-03-29 22:25:07 · 1783 阅读 · 2 评论 -
关于Meminfo中MemAvailable 理解
MemInfo中MemAvailable计算过程,包含watermark、totalreserve_mem等计算过程原创 2022-03-08 21:40:01 · 5586 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器(6):slub debug 实例测试
Linux 内存管理之 SLUB分配器(6):slub debug 实例测试1. Object layoutslub object layout 之前已经有专门的一小节进行介绍了,这里直接将其结果拿来:2. 配置开关默认情况下上述的layout中debug信息是没有打开的,毕竟会增加太多的内容,增加内存的压力,所以需要打开如下部分内容:Config:CONFIG_SLUB=yCONFIG_SLUB_DEBUG=yCONFIG_SLUB_DEBUG_ON=yCONFIG_SLUB_C原创 2022-01-10 21:49:05 · 1727 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器(5):slub初始化过程
Linux 内存管理之 SLUB分配器(5):slub初始化过程本小节整理记录下kmem_cache结构的初始化过程,其实呢,在前边4个小节整理完成后,本部分也就呼之欲出了本部分主要解决如下问题:在slub分配逻辑中可以看到,object的alloc实际是在kmem_cache和kmem_cache_node 结构中分配的,那么必然存在一个蛋与鸡的故事,如何处理的?在初始化的过程中,有哪些关键接口,以及其作用?首先将本部分的整体调用结构图示出来:1. 构造静态kmem_cache &am原创 2021-12-27 21:33:12 · 1088 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器 (4):slub page大小计算方法
page order的计算方法,即在申请kmem_cache的时候,每个slab申请几个page合适呢?order_objects 的计算和API说明原创 2021-12-25 19:15:08 · 984 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器(3):Object分配逻辑
SLUB Object分配逻辑整理原创 2021-12-21 23:45:42 · 903 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器(2) :kmalloc_cache 结构
1. slub2. kmalloc_caches、kmem_cache数据结构3. 分配逻辑原创 2021-12-20 22:29:29 · 1753 阅读 · 0 评论 -
Linux 内存管理之 SLUB分配器(1): Object-layout
slub分配器 object layout(debug)原创 2021-12-18 17:49:15 · 1372 阅读 · 0 评论 -
Slob分配器的数据结构和分配逻辑
slob分配器:1. 数据链表结构构造;2. 分配与释放的逻辑分析;原创 2021-12-11 13:14:53 · 733 阅读 · 0 评论 -
内存管理之DDR概念理解
内存概念整理物理内存内存概念所谓内存,是指计算机在运行时,需要使用的数据的存放介质;- 数据读写速度快;- 断电数据消失,通过一定频率的电流刷新维持内部状态,断电后状态会恢复初始,即数据消失;- 价格相对于nand、emmc等闪存比较贵;根据上述特性,在计算机系统中,该部分被用做运行内存,即上电后将数据从存储介质中拷贝到运行内存,提供给到CPU使用;最小系统:CPU、DDR、EMMC为计算机的三个核心部件,即计算机要运行起来,必须依赖上述核心部件;发展演变Random-Access Me原创 2020-07-29 21:52:34 · 9900 阅读 · 0 评论 -
Linux内存映射实现框架
内存管理之映射概览篇对于系统,后续想要管理内存,则首先需要做的是需要有入口可以访问到它,也就是我们所说的内存映射的过程:之前整理过理论部分,本节则主要介绍linux kernel是建立映射关系的过程;导读CPU访问DRAM的图示;建立完成的内存layout 图示;kernel映射过程粗略介绍;1. CPU 访问 DRAM部分目前的ARMV8体系中,CPU与DRAM的连接如上图所示,分为三个部分:CPU 通过总线访问DRAM;CPU 使用的虚拟地址经过MMU转换为物理地址;将物理原创 2020-08-11 21:06:07 · 479 阅读 · 0 评论 -
memblock初始化过程中fdt mem处理
memblock初始化过程中fdt mem处理导读本部分将memblock 初始化时FDT中reserved memory的扫描处理细化整理,调用情况如下:code目录:涉及到的目录简单描述./kernel-4.9/include/linux/of_reserved_mem.hreserved_mem 结构相关定义位置./kernel-4.9/include/linux/of.h_OF_DECLARE宏定义位置./kernel-4.9/drivers/of/fdt原创 2020-08-16 10:42:33 · 979 阅读 · 1 评论 -
内存管理之memblock探寻
内存映射过程之memblock导读本文主要整理如下问题:在mem系统还未建立起来之前,kernel如何管理使用内存?经过memblock初始化完成后,提供怎样的功能?涉及到的目录文件:目录描述./kernel-4.9/drivers/of/fdt.c关于设备树相关函数的定义实现位置./kernel-4.9/Documentation/kernel-parameters.txtkernel中的命令参数./kernel-4.9/include/linux/me原创 2020-08-18 22:03:18 · 2780 阅读 · 2 评论 -
内存映射第一步:idmap & swapper
内存管理之映射第一步:idmap & swapper导读衔接前文的概览篇,本文开始介绍完整的映射过程:lk 跳转到kernel imageidmap与swapper的映射,提供mmu enable之后kernel image空间的访问需求;本部分处理过程在汇编code中,主要介绍流程;1. lk 跳转仅关注跳转的最后一个步骤:从emmc中load boot.img中kernel到0x800080000(物理地址);定义一个指针变量theKernel,让其指向KERNEL_LO原创 2020-08-12 21:29:04 · 2111 阅读 · 0 评论 -
内存映射之fixmap(early_fixmap_init)
内存映射之fixmap基地址导读经过汇编阶段后,mmu功能已经enbale完成,也就是说对于我们当前分析的SOC,后续只能使用virt addr来访问dram;但是此时我们能够访问的地址范围有限,只有idmap和swapper部分可以找到物理地址,其他部分没有翻译文本,还是无法访问的;本部分则是在完整的paging建立起来之前,添加一种小的机制,在当前的阶段,建立所必须资源的映射;1. fixmapfixmap中fix即固定的意思,map即建立映射,然而这里的理解不是建立固定的映射,而是在一段固原创 2020-08-13 22:35:29 · 2213 阅读 · 0 评论 -
内存映射过程之paging_init
内存映射过程之paging_init导读之前已经逐步整理完成了idmap、fixup、memblock等内容,在此阶段已经可以:访问kernel image的地址空间;访问FDT地址空间,即已经获取device tree相关数据;可以通过memblock提供的接口申请内存;则接下来需要做的处理,是要把从fdt中获取的mem layout关系建立实际的映射;所谓建立映射,实质很简单,即根据页表大小和地址空间大小,填充PUD PMD PTE等数据;1. 页表转换关系这部分之前已经整理过了,原创 2020-09-09 23:31:08 · 1501 阅读 · 0 评论 -
内存管理学习之内存寻址
内存寻址本部分主要记录内存寻址这部分内容:CPU与Mem之间是如何连接的?程序使用内存(virtual mem)与物理内存之间经过怎样的转换?逻辑地址到线性地址的转换;线性地址到物理地址的转换;Cache和MMU的作用user空间和kernel空间的内存分配;文章目录内存寻址1. 框图结构2. 概念理解3. 逻辑地址-->线性地址4. 线性地址-->物理地址5. layout情况5.1 ZONE定义5.2 定义:5.3 virtual地址5.4 physical地址6.原创 2020-07-30 22:30:03 · 901 阅读 · 0 评论