千家信息网

Linux中的vmalloc有什么作用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"Linux中的vmalloc有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Linux中的vmalloc有什么作用"吧!走进vm
千家信息网最后更新 2026年11月03日Linux中的vmalloc有什么作用

本篇内容主要讲解"Linux中的vmalloc有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Linux中的vmalloc有什么作用"吧!

走进vmalloc

根据前面的系列文章,我们知道了buddy system是基于页框分配器,kmalloc是基于slab分配器,而且这些分配的地址都是物理内存连续的。但是随着碎片化的积累,连续物理内存的分配就会变得困难,对于那些非DMA访问,不一定非要连续物理内存的话完全可以像malloc那样,将不连续的物理内存页框映射到连续的虚拟地址空间中,这就是vmap的来源)(提供把离散的page映射到连续的虚拟地址空间),vmalloc的分配就是基于这个机制来实现的。

vmalloc最小分配一个page,并且分配到的页面不保证是连续的,因为vmalloc内部调用alloc_page多次分配单个页面。

vmalloc的区域就是在上图中VMALLOC_START - VMALLOC_END之间,可通过/proc/vmallocinfo查看。

数据结构

  • vmap_area 描述一段虚拟地址的区域,可以将struct vm_struct构成一个链表,维护多段映射。
struct vmap_area {
unsigned long va_start; //vmalloc申请虚拟地址返回的起始地址
unsigned long va_end; //vmalloc申请申请虚拟地址返回的结束地址
unsigned long flags;
//挂接到vmap_area_root红黑树
struct rb_node rb_node; /* address sorted rbtree */
//挂接到vmap_area_list链表
struct list_head list; /* address sorted list */
struct llist_node purge_list; /* "lazy purge" list */
//如果当前VA处于使用状态(即在vmap_area_root为根的红黑树中和vmap_area_list链表中),vm有效,指向用于管理虚拟地址和物理页之间的映射关系的描述符
struct vm_struct *vm;
struct rcu_head rcu_head;
};
  • vm_struct 管理虚拟地址和物理页之间的映射关系
struct vm_struct {
struct vm_struct *next; //指向下一个vm结构体
void *addr; //当前vmalloc区域的虚拟地址的起始地址
unsigned long size; //当前vmalloc区域的虚拟地址的大小
unsigned long flags;
//vamlloc分配获取的各个物理页面并是不连续的,每个物理页面用struct page描述,一个vm_struct对用到的管理所有物理页面的struct page构成一个数组,而pages就是指向这个数组的指针。
struct page **pages;
unsigned int nr_pages; //vmalloc映射的page数目
phys_addr_t phys_addr; //用来映射硬件设备的IO共享内存,其他情况下为0
const void *caller; //调用vmalloc函数的函数的地址
};

vmalloc

主要分以下三步:

  1. 从VMALLOC_START到VMALLOC_END查找空闲的虚拟地址空间(hole)
  2. 根据分配的size,调用alloc_page依次分配单个页面.
  3. 把分配的单个页面,映射到第一步中找到的连续的虚拟地址。把分配的单个页面,映射到第一步中找到的连续的虚拟地址。

到此,相信大家对"Linux中的vmalloc有什么作用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

地址 分配 物理 页面 内存 区域 单个 就是 作用 之间 指向 空间 管理 内容 函数 分配器 数组 结构 学习 起始 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 湖北九亚互联网络科技有限公司 互联网科技工作委员会副主任毛军 互联网属科技 互联网科技美容 汉立互联网科技有限公司联系电话 湖南洣水互联网科技有限公司扣款 常德市电业局互联网科技部 银川新华互联网科技学校联系电话 民营互联网公司国防科技 广州新华互联网科技学校电竞方面 互联网在线教育科技创业 恒生互联网科技业指数调整周期 互联网领先科技宣传片 西安有哪些互联网高科技企业 互联网科技企业商标注意事项 长沙渺峰互联网科技有限公司 株洲百竞科技的互联网营销顾问 武汉亿视互联网科技有限公司 小牛互联网科技有限公司地址 花魁咖啡 互联网黑科技 壹账通互联网科技 互联网金融科技平台 汉立互联网科技有限公司联系电话 乌苏新华互联网科技做什么的 上海创道互联网络科技有限公司 西安有哪些互联网高科技企业 昆明中奇联合互联网科技 科技互联网专业务虚会材料
0