59网站一起做网店深圳做网站联系电话

news/2025/10/7 22:39:12/文章来源:
59网站一起做网店,深圳做网站联系电话,邵阳seo快速排名,网站描文本怎么做原标题#xff1a;linux arm的存储分布那些事linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览#xff0c;我们按从低地址到高地址的顺序逐个描述#xff0c;每项的描述包括如下的内容的组和#xff1a;地址范围大小#xff0c;虚拟转物理的接口函数#xff0c…原标题linux arm的存储分布那些事linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览我们按从低地址到高地址的顺序逐个描述每项的描述包括如下的内容的组和地址范围大小虚拟转物理的接口函数各个区域对应的分配函数该区域有什么作用使用场合等等。首先开始第一个区域CPUvector page null pointer trap该区域的大小是一个page页的大小对于那些不支持中断向量重映射的cpu该区域用来存储对应的中断向量表对于那些支持中断向量重映射的cpu该区域用来扑获0地址的非法访问即null指针。针对arm体系他是支持中断向量重映射该区域一般保留不用用来扑获null指针。第二个区域应用程序地址空间地址大小范围属于[0x1000, 0xbf000000],我知道每个应用进程都有如下几个段text段即存储代码段data段即存储初始化的数据段bss段即存储未初始化的数据段堆(mallocfree)栈(往下生长)。他们的地址分布如下图1在应用程序加载到内存后会为每个段分一个vma的内核结构体并且为每个段都分配了虚拟地址(虚拟地址和大小都存储在vma结构体中)当可执行程序的各个段在加载的时候就会给其分配虚拟地址每个段对应内核的一个vma结构程序所有段对应的vma都挂在程序对应的进程的struct mm结构中但并未给他分配实际的物理地址待cpu实际去访问它时才会去实际建立物理到vma指定的虚拟地址映射并且将对应的段内容从elf文件中拷贝到相应的物理内存中。譬如当cpu要访问text段时这个时候并未建立相应的映射表所以会产生page fault异常从而在异常处理中linux的内存管理系统会为其分配物理内存 并从二进制可执行程序的elf文件读取text段到物理内存并且为该进程对应的页表建立该物理页到虚拟地址的映射这样cpu就可以访问该进程的text段并且执行对应的指令了。stack跟heap都一样在cpu有实际的访问时才会分配物理内存并建立物理到对应的虚拟地址(在程序加载时vma中就已经分配了虚拟地址)映射。这样做就可以节省程序运行时实际物理内存的使用。而不是程序一开始就建立了所有物理到虚拟的映射从而导致物理内存被大量不必要的消耗。第三个区域模块地址该区域用来为内核模块分配地址譬如在insmod一个驱动模块时会通过如下的流程sysinit_module--load_module--layout_and_allocate--move_module--module_alloc_update_bounds--module_alloc来为模块的各个段分配虚拟地址图2line42可见就指定了模块的虚拟地址范围为[MODULES_VADDRMODULES_END] [0xbf0000000xbfe00000]总计14MB。注意此时__vmalloc_node_range进行了实际的物理内存分配并且建立了物理到虚拟地址的映射。第四个区域PKMAP地址段该区域跟fixmap区域都是用来将高端物理内存页映射到内核的线性地址范围以使内核能够访问他。但为什么还要分两个区域呢他们有什么异同kmap和fixmap驱动的地址范围都是有限的所以不能长久持有最好使用完后就尽快的释放。其中kmap区域的API函数为kmap/kunmap该函数可以休眠在地址资源紧张的时候就会发生休眠。fixmap区域的api函数为kmap_atomic/__kunmap_atomic该函数为每个cpu都保留一个地址槽并且该函数是原子的不会休眠。使用kmap_atomic影射高端物理内存页处理完后(并且该处理不应该休眠同时kmap_atomic还会禁止抢占)就应该尽快调用__kunmap_atomic进行释放。所以该函数可以在中断上下文中使用kmap地址段的开始虚拟地址和大小在trunk/arch/arm/mm/mmu.c中的kmap_init函数就指定了。关于kmap的详细分析见我的另一篇blog文章。第五个区域内核地址空间的直接映射区即linux内核的低端内存区该区域也称为内核逻辑地址空间 是指从PAGE_OFFSET(3G)到high_memory之间的线性地址空间是系统物理内存映射区它映射了全部或部分(如果系统包含高端内存)物理内存。内核逻辑地址空间与系统RAM内存物理地址空间是一一对应的内核逻辑地址空间中的地址与RAM内存物理地址空间中对应的地址只差一个固定偏移量(3G)如果RAM内存物理地址空间从0x00000000地址编址那么这个偏移量就是PAGE_OFFSET(0xc0000000)。系统初始化过程中将低端内存永久映射到了内核逻辑地址空间为低端内存建立了虚拟映射页表。低端内存内物理内存的物理地址与线性地址之间的转换可以通过__pa(x)和__va(x)两个宏来进行:#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) __pa(x)将内核逻辑地址空间的地址x转换成对应的物理地址相当于__virt_to_phys((unsigned long)(x))__va(x)则相反把低端物理内存空间的地址转换成对应的内核逻辑地址相当于((void *)__phys_to_virt((unsigned long)(x)))该区域的内存分配函数kmalloc/kfree和__get_free_page都是从低端内存来分配内存第六个区域高端内存vmalloc区该区域是属于linux内核的高端内存地址该区域分配的虚拟地址是连续的但对应的物理地址则可能是不连续的。该区域的内存分配api函数为vmalloc/vfree, 该区域的api可以用来分配大片内存但对应的物理内存可能是不连续的。该函数会修改页目录映射表因为要为对应的虚拟地址和物理地址建立映射关系。另外vmalloc区域跟高端内核(high_memory)有一个8MB的保留区域。端内存的物理地址与线性地址之间的转换不能使用上面的__pa(x)和__va(x)宏关于该区域linux内核的文档arm/memmory.txt有如下的描述vmalloc() / ioremap() space.Memory returned by vmalloc/ioremap willbe dynamically placed in this region.Machine specific static mappings are alsolocated here through iotable_init().VMALLOC_START is based upon the valueof the high_memory variable, and VMALLOC_ENDis equal to 0xff000000.第七个区域DMA内存映射区该区域是为DMA分配内存的该段区域的开始地址和大小在trunk/arch/arm/mm/dma-mapping.c中已经指定了。分别由consistent_baseDEFAULT_CONSISTENT_DMA_SIZECONSISTENT_END指定该区域的开始地址大小结束地址。该区域的内存分配api函数为dma_alloc_coherent/dma_free_coherent该分配函数会建立映射表并且分配出来的物理地址是连续的。dma_alloc_coherent的核心函数为__dma_alloc。具体详细的流程请见我的另外一篇blog。在调用这个api进行dma内存分配时虚拟地址是从CONSISTENT_END高地址往consistent_base低地址方向分配的即第一次dma_alloc_coherent调用的返回值第二次dma_alloc_coherent调用的返回值。请看图3一个实际的系统dma分配的内存情况另外dma分配函数分配的物理页是属于低端内存但他会通过__dma_alloc_remap函数将该物理页重新映射到dma所属的地址范围。所以同一个物理页存在两个虚拟地址映射因为该物理页对应的低端内存地址在内核初始化的时候就已经映射建立好了。第八个区域Fixmap映射区该区域的开始地址和大小在trunk/arch/arm/include/asm/fixmap.h文件中指定了该区域的地址范围[0xfff00000,0xfffe0000],该区域是属于最顶部的pte页表中(set_top_pte)他为系统中的每个cpu都保留了16个page页的虚拟地址。该区域有两个特殊函数fix_to_virt/virt_to_fix#define __virt_to_fix(x)(((x) - FIXADDR_START) PAGE_SHIFT)表示虚拟地址相对FIXADDR_START偏移的页框数该返回值应该属于[015]之间。第九个区域CPUvector page该区域是用来映射cpu的中断向量表因为linux arm使用的高端向量即cpu中断产生时pc指针会自动跳转到0xffff00004*vector_num的地方。图4line1107分配一个低端的物理内存页框line1109 early_trap_init将中断向量表的内容拷贝到这个新分配的物理页框中。图5line1149-1153将line1107行分配的物理页映射到虚拟地址0xffff0000为cpu中断产生时做好准备(对应的地址有各自的跳转代码来处理各自的中断异常)。在这里这个物理页同样是存在两个虚拟地址的映射一个是低端虚拟地址的影射一个是高端虚拟地址的映射最后附一个我们实际使用中的contexA9双核ram为1GB大小的系统的linux内存分布情况图图6可以结合图1和图6一起分析来加深对linux的内存分布情况的理解至于图1是怎么来的就需要看上面每个段的具体分析。责任编辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LDO(一)FVF型LDO

今天记记FVF型LDO,负反馈的基础内容,LDO的经典内容。(1)是早先讨论的威尔逊电流镜,当时我们说从M4的漏到栅的一个小负反馈回路使得输出电阻被增大,于是抗输出负载阻值的影响,并且增加M3使得M1和M2的VDS可以一致…

网站开发服务器配置山东网站营销优化开发

前言先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符.例如:当然, 这个样式是可以修改的, 这就涉及到我们的PS1和PS2了, 有经验或者以前有设置过的童鞋估计…

09. 常用控件

一、Qt Quick的常用控件Control 是用户界面控件的基类型,Qt Quick 的 Controls 模块中的大部分控件都继承自 Control,而 Control 继承自 Item,一般不直接使用该类型,而是使用它的众多子控件类型。Control 从窗口系…

201007

2024 ICPC Kunming E and 2024 ICPC Nanjing ICPC Kunming E 鉴定为啥都考察一点的杂交题。 这个题目的询问就像,我问测评机若干个式子,然后测评机告诉我这些式子的解,让我去解方程。 于是就暴力枚举所有可能的式子…

苍穹外卖第一天(Maven、Git、Nginx反向代理)

1、Maven 我们需要下载依赖的时候,一定要打开私服连接,这是我们下载依赖的唯一途径。 cd E:\nexus\nexus-3.61.0-02-win64\nexus-3.61.0-02\bin ./nexus /run IDEA中 Setting/Build,Execution,Deployment/Build Too…

Python中的数据结构

一、线性表(列表list) # 基本操作 # 1. 初始化 linear_list = [1, 2, 3, 4, 5] print("原始线性表", linear_list)# 2. 销毁线性表 del linear_listlinear_list = [1, 2, 3, 4, 5] # 重新填充# 3. 清空线性…

哪里做百度网站郑州seo关键词推广

深圳市萨科微(www.slkoric.com)半导体有限公司一直研究新材料新工艺,不断推出新产品,驱动公司不断发展。最近萨科微slkor推出SL40T120FL系列IGBT单管,和CMOS运算放大器SLA333等产品,为新能源汽车、太阳能光…

用ps做网站的临摹seo品牌推广方法

问题:在使用Transporter时,会卡主,一直显示正在验证APP在这里插入图片描述解决方案一:利用V-P-N在这里插入图片描述使用安全上网(V-P-N),双击打开iTMSTransporter,等待几分钟lichuangMacBook-Pro-3 ~ % /Ap…

做网站去哪个平台凡科平台盲审

使用LlamaFactory进行模型微调 简介 论文地址:https://arxiv.org/pdf/2403.13372 仓库地址:https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

2025家纺摄影公司/南通摄影公司权威推荐榜:创意拍摄与专业服务的口碑之选

2025家纺摄影公司/南通摄影公司权威推荐榜:创意拍摄与专业服务的口碑之选行业背景在当今竞争激烈的家纺市场中,产品摄影的质量对于企业的市场推广和销售起着至关重要的作用。精美的家纺摄影作品能够直观地展示产品的…

合成数据生成技术研讨会深度解析

本文介绍了在ICLR 2021举办的合成数据生成研讨会,探讨了合成数据在解决数据稀缺和隐私保护方面的技术应用,包括生成对抗网络、差分隐私等关键技术,以及医疗、金融等领域的具体实践案例。某中心协助举办合成数据生成…

[ Qt ] | 与环境相关的执行(二):键盘、定时器、窗口移动和大小

[ Qt ] | 与环境相关的执行(二):键盘、定时器、窗口移动和大小pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

http长连接维护 【yet】

http长连接维护 【yet】。

纯 C++ 开发的 Telegram Bot 框架

时隔许久我终于又把这个小时候的账号想起来了,最近我搞了一个开源项目 基于 C++ 开发的 Telegram Bot 框架。 本项目是一个为 C++ 开发者设计的电报 (Telegram) 机器人框架,旨在解决原生 API 开发的复杂性。通过高度…

六级自测

六级考试分值分布: 听力:35% 阅读:35% 翻译:15% 作文:15% 本次考试得分: 听力:30%----206.5 阅读:27%----185.5 翻译:6%----63 作文:9%----76.5 总计:估分约531.5 由于六级实际分数与其他考生的均分有直接关…

Python 中的链式操作——重点讲解链式调用

Python 中的链式操作——重点讲解链式调用 在 Python 中,链式操作是一种优雅的代码风格,通过连续调用方法或操作来处理数据。其中,链式调用(Method Chaining)是最常用也最强大的一种,指的是对同一个对象(或方法…

电子商务网站的建设 论文谷歌浏览器搜索引擎入口

在 Spring Boot 中,可以通过自定义异常处理器来实现统一的异常处理。 创建自定义异常类 首先,创建一个自定义的异常类,继承自 RuntimeException 或其子类。这个异常类可以用来表示应用程序中的特定异常情况。 public class CustomExceptio…

网站内容管理规范旅游网站建设的论文

书单再不跑路就要被迫C位出道了花瓶女配和影帝组CP后豪门娇美人是爽文剧本1再不跑路就要被迫C位出道了作者:墨流霜文案:顾星染一觉醒来发现自己是某小说炮灰,未来会嫁给某女主爱慕者,度过悲惨的下半生。她为了逆天改命&#xff0c…

io设备概述

io设备的概念和分类 什么是io设备 IO input output io设备就是将数据输入到计算机,或者可以接受计算机输出数据的外部设备,数据计算机中的硬件部件 io设备分类-按照使用特性 人机交互类外部设备 鼠标键盘打印机 这些…

多元线性回归-梯度下降法-吴恩达机器学习

0.工具 import copy, math, sys import numpy as np1.线性回归模型 def f_wb(x,w,b):return np.dot(w,x) + b2.成本函数 def compute_cost(X, y, w, b):m,_ = X.shapeJ_wb = 0.0for i in range(m):J_wb += (f_wb(X[i],…