OK6410A 开发板 (八) 49 linux-5.11 OK6410A linux用户空间虚拟内存的管理 VMA

发布者:JoyfulSunflower最新更新时间:2022-09-06 来源: csdn关键字:OK6410A  开发板  11  用户空间  虚拟内存  VMA 手机看文章 扫描二维码
随时随地手机看文章

之前介绍过了 linux 虚拟内存管理方式 有5种,其中一种(名为VMA)用于 用户空间虚拟内存的管理,本篇就介绍 VMA


VMA 是什么

task_struct 中的 mm_struct 中的 mmap(VMA) // mmap 的结构体类型 为 vm_area_struct

可以看出来 , VMA是一种数据结构,结构体类型为vm_area_struct,那么对应的就有算法

VMA 相关的数据结构 与 算法的集合  就是我们这篇要讨论的内容


用户空间 可访问的区域 是 0G-3G

当然不是 0-3G内的所有地址都可访问 , 可访问的地址空间 被称为 进程地址空间

只有做了内存申请的区域才可以被访问


做一次内存申请 , 就等价于 将 创建一个 vm_area_struct 结构体 // 一个 VMA 就是 一个 vm_area_struct 结构体

...

做N次内存申请 , 就等价于 将 创建N个 vm_area_struct 结构体


进程地址空间 就是  N 个 vm_area_struct 结构体的集合


这个 N 个 vm_area_struct  结构体 会被 放到 红黑树 和 链表中,进行管理


1个 vmap_area  结构体 可以描述什么

代码段

数据段

用户进程的栈

mmap区域

堆映射区域


VMA 相关数据结构

mm_struct

mm_struct 

mmap : VMA链表 // 结构体类型为 vm_area_struct

mm_rb : VMA 红黑树

get_unmapped_data : 用来返回一段没有映射过的空间(在0-3G之间)的起始地址 , 架构相关

mmap_base : mmap 区域的 起始地址 , arm32 中 值 为 0x40000000

pgd : 进程页表的PGD目录,用于写入 cp15 页表基址寄存器(c2)

mm_users : 记录正在使用该进程地址空间的进程数目 // 场景是  多线程

mmlist : mm_struct 在的链表 // 链表头是 init进程的mm_struct中的mmlist:init_mm

start_code,end_code : 代码段 // 虽然代码段是一个VMA(VMA放到链表和红黑树就行了),但是这个VMA特殊,就拎出来了

start_data,end_data : 数据段

start_brk : 栈段

brk : 堆段

total_vm : 已经使用的进程地址空间总和 (小于3G)


vm_area_struct 即VMA

vm_area_struct  

vm_start,vm_end : 内存区域 的 起始地址和结束地址

vm_next,vm_prev : 链表 // 挂载到 mm_struct  的 mmap 成员

vm_rb : 红黑树 // 挂载到 mm_struct  的 mm_rb 成员

vm_mm : 该VMA所属的 mm_struct

vm_page_port : VMA的访问权限 // 用于设置pte

vm_flags : 标志位,不知道干啥的

anon_vma_chain,anon_vma : remap 反向映射相关


// 文件相关, 为什么 VMA 中有这些成员???

vm_ops : 用于文件映射的函数集合

vm_pgoff : 文件映射的偏移量(单位,页面)

vm_file : 指向一个 被映射的文件


VMA 相关算法

红黑树与链表 : 增删改查

VMA很多时,在链表中查找指定的vma很慢,通过红黑树来加快查找速度


一般我们将 链表 视为 一个算法 , 将 红黑树视为一个算法


而 VMA算法 其实是 封装了 链表和红黑树 的 一种算法


insert_vm_struct


合并

vma_merge


插入时,会尝试与合适的 VMA 进行合并


find_vma

find_vma_prev

...


关键字:OK6410A  开发板  11  用户空间  虚拟内存  VMA 引用地址:OK6410A 开发板 (八) 49 linux-5.11 OK6410A linux用户空间虚拟内存的管理 VMA

上一篇:OK6410A 开发板 (八) 50 linux-5.11 OK6410A 基于VMA的sys_mmap与sys_brk
下一篇:OK6410A 开发板 (八) 48 linux-5.11 OK6410A linux内存管理总览

推荐阅读最新更新时间:2024-11-19 19:52

玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】
今天晚上研究了一下如何通过super-vivi来使用nfs网络文件系统来启动mini2440开发板,一开始一直无法成功,折腾了半天总算搞定了,总结一下: 1、首先,介绍一下我的开发环境。 物理机:win10; 虚拟机:ubuntu 12.04; 模拟器:virtualbox 5.20; 我的步骤是,按照用户手册的说明,先用super-vivi引导系统,输入q进入命令行模式,然后输入nfs启动命令(如下),最后输入boot启动系统。 param set linux_cmd_line console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM
[单片机]
玩转mini2440<font color='red'>开发板</font>之【使用nfs无法启动的问题(Virtualbox桥接网络)】
诺基亚国行5G新机可望于双11前发布
HMD 诺基亚手机中国区市场产品经理张宇程在微博与网友互动时透露诺基亚国行 5G 新机或将于今年 11 月 11 日前发布,这意味着我们届时有望看到全新的诺基亚国行旗舰手机。   按照目前诺基亚手机的布局来看,诺基亚国内的 5G 手机并不多,例如首款 5G 手机 Nokia 8.3 5G 直到现在还没有在国内上市。   虽然诺基亚方面一直没有消息,但从去年这时就不断有消息称诺基亚正在研发最新的旗舰手机,例如多次跳票的诺基亚 9.3 PureView,虽然该机搭载的骁龙 865 放到现在可能也已经算不上顶级配置,但对于诺基亚来说已足够。   IT之家了解到,诺基亚今年将其命名方式进行了一定更改,预计之后推出的手机也不会再延续 9
[手机便携]
诺基亚国行5G新机可望于双<font color='red'>11</font>前发布
分析师:苹果iPhone 11/AirPods供应改善或是中国产能恢复的
据外媒报道,报告称,在苹果关键产品的供应提高之后,这说明,中国的供应商在2020年初因新冠肺炎关闭运营后,现已基本恢复正常生产。 根据Loup Ventures的吉恩·蒙斯特(Gene Munster)的报告,过去两周,在13个国家/地区进行跟踪的四个关键苹果产品(64GB iPhone 11、64GB iPhone 11 Pro,AirPods Pro和第二代AirPods)的交货时间已显著改善。据他称,自2月中旬以来,该公司一直在跟踪这些产品的供应情况。 报告详细指出,iPhone的平均发货时间现在为两天,低于3月4日记录的6.7天的峰值。同样的,AirPods的出货时间也从3月4日的10.6天下降到平均7.4天。 尽管蒙
[手机便携]
LED驱动芯片PT4115的性能特点及应用
一、 PT4115 应用特点   1. 电感越大、工作频率越低,恒流效果越好。   2. 输出电流越大,需要电感值越小, 电感选择比较方便。   3. 输出电压越高,效率越高,5颗1W串联比1颗5w效率要高。   4. 通常电感越大,功率开关的开关损耗越小,但是DCR会变大,对应电感损耗变大。   5. 反馈电压1 00mY,尼 损耗业界最小,功率开关导通电阻尼。   6. 为0.6Q,也比较小, 效率比一般产品高。   7. 内部含有过温保护功能,外部可以设计过温保护,对LED有双重保护。   8. 采用SOT89 -5封装,热阻仅为45 ℃/w,散热特性很好。    二、PT4115应用电路   图1   PT4
[电源管理]
LED驱动芯片PT4<font color='red'>11</font>5的性能特点及应用
使用自适应跳频提高蓝牙与802.11的共存性
摘要:蓝牙是一种低费用、低功率的无线连接技术,运行在2.4GHz非授权的共享ISM频段。蓝牙技术现在所面临的最大挑战是,解决它与其它运行在该共享频段内设备的共存问题。这些设备包括无绳电话、微记和无线局域网,如802.11b。本文描述解决该问题的一种非协作性共存技术和自适应跳频技术(AFH)。 关键词:蓝牙 自适应跳频 共存性 蓝牙是运行在2.4GHz非授权ISM频段上的短距离无线技术,可用作线缆替代技术或一种先进的个人局域网技术。由于对ISM频段的接入没有限制,蓝牙设备将受到很重要的干扰。干扰源可能是微波炉、无绳电话等,也可能来自无线局域网,如802.11b。在蓝牙规范1.1版本中,采用79跳的伪随机跳频邻 列来克服衰落和其
[网络通信]
STM32F429 自制开发板
上次讲到自制了F407开发板,用下来都不错,但是有个遗憾就是407没有LTDC,最近一直在研究液晶屏,着了迷一样,研究了一圈,觉得F429是最好的选择,网上的开发板价格都较贵,关键是好多都没有引出LTDC接口,决定自制一块开发板自带LTDC+SDRAM。 原理图 F429的原理图不像407,网上的资源不多,基本上和F407的相类似,LTDC和SDRAM的引脚就要当心了,一定要按照CUBEMAX分配的引脚来对应,Cubemax的分配引脚有时候会变动,要格外注意!SDRAM 选的是W9825G6KH, 256Mbit, 32MByte PCB 布线 这个对于双面板来说确实有点难,死了不少脑细胞。原则是SDRAM和f429之间的
[单片机]
STM32F429 自制<font color='red'>开发板</font>
基于LPC11C14单片机、可读取RFID标签的服装生产工位机设计
服装制造业是典型的劳动密集型产业,信息化的生产管理通常是欠缺的,特别是车间的管理。现代企业期望使用高新技术来增强产品的竞争力并降低成本,通过有效利用和控制物流信息,实现产能的最大化。国际上,伴随着生产物流信息化管理中的信息爆炸,RFID技术被引入来减轻人工输入和处理大批数据的负担,为生产流程的精细化管理提供依据。如今,国内的服装生产企业热衷于服装生产的信息化,亟需研发廉价的智能服装生产工位机。文中使用NXP公司的32位内置CAN控制器的ARM单片机,加上RFID读卡模块及CAN收发器,省去了CAN控制器芯片。CAN通讯采用单片机内部CAN控制器,通讯协议由单片机软件实现,从而简化了应用电路,提高了电路的实用性。 1 恩智浦
[单片机]
基于LPC<font color='red'>11</font>C14单片机、可读取RFID标签的服装生产工位机设计
新一代晶闸管触发模块KTM2011A的原理及应用
    摘要: KTM2011A是青岛珠峰科技有限公司推出的新一代晶闸管触发模块,具有体积小、重量轻、触发动率大及波形对称性对等优点。文中详细介绍了KTM2011A的内部结构、工作原理、设计特点及具体的应用电路。     关键词: 触发电路  隔离  脉冲  KTM2011A 1 概述     KTM2011A是青岛珠峰科技有限公司经过优化设计和精心研制的新一代晶闸管触发模块,具有体积小、重量轻、触发功率大及波形对称性好等优点。其输出可触发单相电路中两个相位互差180°的晶闸管,可广泛用于单相交流调压、单相桥式半控整流电路中作为晶闸管的触发电路,由于模块内部集成有隔离单元,故使用中不需要外接脉冲变压器。KT
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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