![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
内存管理
文章平均质量分 82
内存管理
zhangatong
这个作者很懒,什么都没留下…
展开
-
Linux 大页面使用与实现简介
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-hugetlb/index.html引言随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现虚拟内存管理机制,操作系统对内存实行分页管理。自内存“分页机制”提出之始,内存页面的默认大小便被设置为 4096 字节(4KB),虽然原则上内存页面大小是可配置的,但绝大多数的操作系统实现中仍然采用默认的 4KB 页面。 4KB 大小的页面在“分页机制”提出的时候是合理的,因为当时的内存大小转载 2020-06-19 13:59:24 · 1002 阅读 · 0 评论 -
ioremap和memremap
原文:https://lwn.net/Articles/653585/下面翻译自google:像用户空间一样,内核通过页表访问内存。因此,当内核代码需要访问内存映射的I / O设备时,必须首先设置适当的内核页面表映射。长期以来,用于该工作的内核工具是ioremap(),它具有许多变体。事实证明,其中一些变体并非总是适合此工作的工具,从而导致内核中存在一定数量的变通方法。但是,这种情况...转载 2020-04-27 18:02:46 · 5695 阅读 · 0 评论 -
Linux kmap和kmap_atomic解析
原文链接:https://blog.csdn.net/zhanghaiyang9999/article/details/82143032名为解析,名不符实,简单记录一下。首先得知道这个函数的主要目的是实现page 到 vaddr的转化。kmap函数将分配到的高端内存映射到永久内存映射区域(PKMap Region)。kmap函数不能用于中断处理程序, 因为它可能进入睡眠状态。...转载 2020-04-27 11:34:01 · 660 阅读 · 0 评论 -
Linux内核内存管理架构
转自:https://www.cnblogs.com/wahaha02/p/9392088.html内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求。本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理的软硬件架...转载 2020-04-27 11:19:50 · 175 阅读 · 0 评论 -
linux virtual page pfn physical的关系
phys:物理地址pfn:原创 2020-04-23 17:59:08 · 1777 阅读 · 0 评论 -
linux kernel内存映射实例分析
引子现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的内容。正文在linux内存管理中,有两个资源非常重要,一个是虚拟地址,一个是物理地址。听起来似乎是废话,实际上内存管理主要就是围绕这两...转载 2020-04-03 10:05:49 · 277 阅读 · 0 评论 -
在 spl 和 u-boot中 使用保留内存
平台:TI am5728u-boot:201801项目需要在spl中显示logo,其中就需要分配framebuffer,如果framebuffer较小,一般可以直接用芯片的OCMC_RAM做framebuffer,我的芯片上的OCMC_RAM2和OCMC_RAM3 的2M内存足够显示较小的图片。当然,2M往往是不够的用的(比如使用bmp格式的image),这时候就需要在DDR中分配fram...原创 2020-03-10 16:27:04 · 1205 阅读 · 1 评论 -
dts中memreserve和reserved-memory的区别
Devicetree 提供了两种方式预留内存: reserved-memory和memreservememreserve示例/memreserve/ 0x40000000 0x01000000reserved-memory示例 reserved-memory { #address-cells = <1>; #size-cells ...转载 2020-03-05 14:57:15 · 1930 阅读 · 0 评论 -
Linux学习--内存分配算法
一、Buddy算法DMA(Direct Memory Access,直接内存存取)、常规、高端内存这3个区域都采用buddy算法进行管理,把空闲的页以2的n次方为单位进行管理,因此Linux最底层的内存申请都是以2n 为单位的。Buddy算法最主要的的特点任何时候区域里的空闲内存都能以2的n次方进行拆分或合并。例如,假设ZONE_NORMAL有16页内存(24),此时有人申请一页内存,...转载 2019-09-12 18:02:05 · 1282 阅读 · 0 评论 -
cma: CMA area cma_default_region@ac000000 could not be activated
在给cma分配保留内存区域时报错:在cma内存区域创建好后内核会对其进行初始化,这个报错是在初始化里出现的,具体代码:static int __init cma_init_reserved_areas(void){ int i; for (i = 0; i < cma_area_count; i++) { int ret = cma_activate_area(&...原创 2019-09-11 16:51:39 · 454 阅读 · 0 评论 -
linux kernel内存初始化过程
基于linux4.14.79内核,TI AM5728平台。0.在boot中对内存块的大小设置spl/ubbot中对内存的配置board_init_f sdram_init dmm_init(DMM_BASE); emif_get_dmm_regs(&lisa_map_regs); //根据board得到内存lisa_map...原创 2019-09-12 11:46:10 · 3194 阅读 · 0 评论 -
【Linux】Linux的内核空间(低端内存、高端内存)
内核也是程序,也应该具有自己的虚存空间,但是作为一种为用户程序服务的程序,内核空间有它自己的特点。内核空间与用户空间的关系在一个32位系统中,一个程序的虚拟空间最大可以是4GB,那么最直接的做法就是,把内核也看作是一个程序,使它和其他程序一样也具有4GB空间。但是这种做法会使系统不断的切换用户程序的页表和内核页表,以致影响计算机的效率。解决这个问题的最好做法就是把4GB空间分成两个部...转载 2019-09-12 15:17:34 · 383 阅读 · 0 评论 -
CMA模块学习笔记
原文:CMA模块学习笔记前言本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文。学习的基本方法是这样的:一开始,我自己先提出了若干的问题,然后带着这些问题查看网上的资料,代码,最后整理形成这样以问题为导向的index,顺便也向笨叔叔致敬。笨叔叔写了一本书叫做《奔跑吧Linux内核》,采用了问答的方式描述了4.x Linux内核中的进程管理、内存管理,...转载 2019-09-12 15:30:30 · 998 阅读 · 0 评论