OK6410A 开发板 (八) 48 linux-5.11 OK6410A linux内存管理总览

发布者:MysticalSoul最新更新时间:2022-09-06 来源: csdn关键字:OK6410A  11  linux  内存管理 手机看文章 扫描二维码
随时随地手机看文章

linux内存管理 总览

进程 与 内存管理

linux 内存 从 内存类型角度分为

A. 虚拟内存

B. 物理内存


linux 内存 从 管理角度分为

A. 用户内存

B. 内核内存


从而 正交 形成了 4种


1. 内核物理内存

由 struct page 管理, 不同的 内存模型 有不同的管理方式 // CONFIG_FLATMEM CONFIG_DISCONTIGMEM CONFIG_SPARSEMEM_VMEMMAP CONFIG_SPARSEMEM

2. 内核虚拟内存

由 四种方式() 管理 // 直接(线性)映射 vmalloc动态映射  持久映射kmap  固定映射fixmap之kmap_atomic(临时映射)

3. 用户物理内存

由 struct page 管理, 不同的 内存模型 有不同的管理方式 // CONFIG_FLATMEM CONFIG_DISCONTIGMEM CONFIG_SPARSEMEM_VMEMMAP CONFIG_SPARSEMEM

4. 用户虚拟内存

由 task_struct 中的 mm_struct 中的 vmap_area(VMA) 管理


---------------------------------------------------------------------------------------------------总结上面的 , 即以下


内核物理内存管理方式 有4种 : 根据配置选一种

CONFIG_FLATMEM CONFIG_DISCONTIGMEM CONFIG_SPARSEMEM_VMEMMAP CONFIG_SPARSEMEM

内核虚拟内存管理方式 有5种  : 4种用于异常/内核线程/用户进程内核态,1种用于进程用户态内存

直接(线性)映射 vmalloc动态映射  持久映射kmap  固定映射fixmap之kmap_atomic(临时映射) VMA

// VMA管理的地址范围在 0x00000000 - 0xbfffffff

// 其他四种管理方式瓜分了 0xc00000000 - 0xffffffff


// buddy 和 slab 申请的虚拟地址空间都是 在直接映射区,申请的物理地址都是连续的


异常 与 内存管理

异常 用的 物理虚拟内存 是怎么管理的 ???

.code .rodata .data .bss .stack .heap

.code .rodata .data .bss 都是 内核的,与内核线程共享

.stack 有可能是 内核栈(中断栈与内核栈共用,叫做共享中断栈,每个进程一个),有可能是独立的中断栈

.heap

还是封装的  1 2

但是注意,不能做 中断中不能做的动作(睡眠)

中断 的栈 如果采用 内核栈(sp对齐8KB,获得的是同一个值) , 应该是可以睡眠的, 因为可以用 current(就是根据sp对齐8KB获得的 ) 获取到 当前的 stack_struct , 所以就可以调用schedule


linux 内存管理 api


用户空间的内存 是 内核 管理的

glibc提供了malloc 和 mmap 函数,封装了 brk mmap 系统调用

应用程序的加载和运行 都是用的 brk mmap 系统调用 , 封装了 上面说的 3 4 // 其实 3 是在 缺页异常 中处理的



内核常用的 内存申请api 是

alloc_pages函数(buddy) vmalloc函数() , 都是封装的  1 2

kmalloc函数(slab) 是  基于 1 之上,又实现了一套 物理内存的管理,虚拟内存的管理还是封装了 2


内存管理存在的问题及解决方案

内核物理内存管理方式 有4种

根据配置选一种

内核虚拟内存管理方式 有5种

4种用于异常/内核线程/用户进程内核态,1种用于进程用户态内存


以上的管理方式,不是完美的,会造成很多问题:


问题 : 内存碎片/内存不足/无法申请到连续的物理页

方案 : 内存规整/内存释放/CMA

关键字:OK6410A  11  linux  内存管理 引用地址:OK6410A 开发板 (八) 48 linux-5.11 OK6410A linux内存管理总览

上一篇:OK6410A 开发板 (八) 49 linux-5.11 OK6410A linux用户空间虚拟内存的管理 VMA
下一篇:OK6410A 开发板 (八) 47 linux-5.11 OK6410A 物理虚拟内存的管理

推荐阅读最新更新时间:2024-11-13 06:34

linux – 如何在buildroot中重建rootfs
The make command build all targets 您不希望这样做(直到配置Buildroot). 首先需要通过指定目标板来配置Buildroot. 根据manual,您可以从头开始,或者为您的AT91SAM9X25板创建一个Buildroot配置文件,该板来自类似的板,例如configs/at91sam9g20dfc_defconfig 除了Buildroot配置文件,您还需要一个Linux内核配置文件(除非您想尝试从头开始配置内核). 带有AT91SAM9x5的Atmel评估板的内核配置文件是at91sam9x5ek_defconfig 您还应阅读第3.4.2节.创建自己的板支持 So the first m
[单片机]
Linux下s3c6410的GPIO操作(5)
1、我们曾经在前面看到这个函数,源码如下: __init void s3c_gpiolib_add(struct s3c_gpio_chip *chip) { struct gpio_chip *gc = &chip- chip; int ret; BUG_ON(!chip- base); BUG_ON(!gc- label); BUG_ON(!gc- ngpio); if (!gc- direction_input) gc- direction_input = s3c_gpiolib_input; if (!gc- direction_output) gc- direction_output = s3c_gpio
[单片机]
赛普拉斯发布2017年第二季度财报 营收增长11%
赛普拉斯半导体公司(纳斯达克代码:CY)宣布其2017年第二季度财报。 财务重点如下: 2017年第二季度总营收为5.938亿美元,环比上升11.6%,高于指导值 GAAP(美国通用会计准则)和非GAAP下的利润率分别为39.8%和40.9% GAAP和非GAAP稀释每股收益分别环比增长50%和62% 汽车、物联网无线连接和USB-C解决方案营收创新高 赛普拉斯总裁兼首席执行官Hassana El-khoury表示:“赛普拉斯在第二季度的营收再创新高,主要得益于汽车、物联网无线连接和USB-C这三个关键增长领域的创纪录营收。我们仍高度专注于投资高成长终端市场以带动收益和利润的增长,提高毛利率并扩大我们的客户群。” El-Khou
[半导体设计/制造]
MediaTek推出7nm制程112G远程SerDes IP,提升计算速度
MediaTek宣布,其ASIC服务将扩展至112G远程(LR)SerDes IP芯片。MediaTek的112G 远程 SerDes采用经过硅验证的7nm FinFET制程工艺,使数据中心能够快速有效地处理大量特定类型的数据,从而提升计算速度。 借助该芯片,企业网络和超大规模数据中心能够有效创建下一代连接应用,以满足其特定需求。MediaTek此次推出了全面的SerDes产品组合,扩展了ASIC服务并巩固了在SerDes产品方面的行业领先地位。 MediaTek的112G 远程SerDes是基于高性能DSP的解决方案,具有PAM4和NRZ信令,适用于恶劣环境与嘈杂的应用场景。该芯片适用于LR、MR和VSR应用,并针对每个
[半导体设计/制造]
STM32系列第11篇--定时器
STM32共有8个定时器: 定时器种类 位数 模式 特殊应用场景 高级定时器TIME1、TIME8 16位 向上、向下、向上/下 PWM点击控制 通用定时器TIME2~TIME5 16位 向上、向下、向上/下 定时计数,PWM输出,输入捕获,输出比较 基本定时器TIME6、TIME7 16位 向上、向下、向上/下 驱动DAC 通用定时器功能: 位于低速的APB1总线上(APB1) 16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟分频。 4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
[单片机]
STM32系列第<font color='red'>11</font>篇--定时器
iPhone 12 mini、iPhone 12 Pro Max在11月13日交付日前发货
一些预订了iPhone 12 mini和iPhone 12 Pro Max的 苹果 客户发现,他们的订单已经更新了发货信息,官网告知他们的iPhone已经在路上了,但对于大多数人而言,不太可能在11月13日之前真正完成交付。   上周五,苹果通过在线Apple Store开放了iPhone 12 mini和iPhone 12 Pro Max的预订,这是目前iPhone一代最后两款即将发布的机型。第一批下单的客户可以期待更快的交付,最早可能在11月13日,也就是苹果公布的这两款机型的上市日期。   并非所有客户都能在该日收到订单,因为这两款机型在可购买后不久,预计的交付时间就开始推迟。   与第一波iPhone 12和iPhon
[手机便携]
iPhone 12 mini、iPhone 12 Pro Max在<font color='red'>11</font>月13日交付日前发货
疑OPPO R11现身跑分网站 首发骁龙660?
近日一款型号为OPPO R6051的新机现身跑分网站GFXBench的数据库中。信息显示,该机采用5.5英寸1080p屏幕,前置2000万+后置1600万像素摄像头,运行最新的Android 7.1.1系统。   同时,该机还搭载主频为2.2GHz高通八核处理器,辅以Adreno 510 GPU,估计其为传闻已久的骁龙660处理器,而这款新机也因此推测为即将登场的OPPO新旗舰R11。 疑OPPO R11现身GFXBench   目前,OPPO R11已获得无线电发射型号核准,并具备全网通功能。此前传闻OPPO R11会有5.5英寸和6英寸两种不同尺寸,其他主要配置则会保持相同,前后均为双摄设计。然而,由于目前骁龙660处理器还
[手机便携]
linux驱动学习(2)-beep驱动
// 0设置down_counter中的数值(鸣叫频率) //------------------------------------------------------------- static int xiaoyang_beep_ioctl(struct inode *inode, struct file *file, unsigned int cmd,unsigned long arg) { unsigned long temp; if(cmd = 0) { //set as gpb0,output temp = __raw_readl(S3C2410_GPBCON); //GPBCON IO C
[单片机]
<font color='red'>linux</font>驱动学习(2)-beep驱动
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved