当前位置: 首页 > news >正文

04_22 vma(进程下的每个虚拟内存区域查看)对象实战

前言

vma不太懂的可以往前翻
03_008内存映射原理_虚拟内存区域vm_area_struct详解,和mmap系统钓调用及物理内存结构体完全分析
vam 虚拟内存区域 每个进程下有多个vma 这次是查看每个vma的起始地址 结束地址和大小使用
1.进程在用户空间调用mmap也就是上面那个函数。
2.在当前进程的地址空间当中寻找一段连续的空虚的虚拟地址
3.给这块虚拟地址分配一个vm_area_struct的结构并对其各个区域进行初始化
4.将新键的虚拟结构插入到虚拟地址空间(mm_struc)的链表或者红黑树当中

结构体扫盲

task_stuct 进程描述符
mm_struct 用户虚拟进程地址空间描述符
vm_area_struct 虚拟区域描述符

代码

#include <linux/version.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/slab.h>static int pid;
module_param(pid,int,S_IRUGO);//传递模块参数 这个参数最后表示能被所有人读或者取static void printFunc(struct task_struct *task)
{struct mm_struct *mm;struct vm_area_struct *vma;int i =0;unsigned long start,end,length;mm = task->mm;pr_info("mm=%p\n",mm);vma = mm->mmap;down_read(&mm->mmap_sem); //读的时候要进行保护pr_info("vmas:vma start end\n");while(vma){i++;start = vma->vm_start;end = vma->vm_end;length=end-start;pr_info("地址开始结束 长度....\n");vma = vma->vm_next;} up_read(&mm->mmap_sem);
}static int __init myvma_init(void)
{struct task_struct *task;//根据进程号拿到进程描述符if(pid==0){task=current;}else{task =pid_task(find_vpid(pid),PIDTYPE_PID);}}

在这里插入图片描述

http://www.lryc.cn/news/152059.html

相关文章:

  • QWidget的ui界面绘制成图片
  • 【ICer的脚本练习】脚本使用的思维培养 —— 用例回归
  • 【axios网络请求库】认识Axios库;axios发送请求、创建实例、创建拦截器、封装请求
  • Android——基本控件(下)(二十一)
  • websocket基础
  • 游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)
  • 【数据蒸馏】静态数据蒸馏方法汇总
  • Cortex-A7 架构
  • 2023年“羊城杯”网络安全大赛 Web方向题解wp 全
  • Matlab——二维绘图(最为详细,附上相关实例)
  • JVM学习(四)--内存问题分析思路
  • 【MySQL】七种SQL优化方式 你知道几条
  • MySQL8.xx 解决1251 client does not support ..解决方案
  • SpringBoot常用的简化开发注解
  • python相关
  • C语言的类型转换
  • 从零构建深度学习推理框架-11 Resnet
  • 多线程练习-顺序打印
  • 一文读懂MQTT各参数定义(非ChatGPT生成版)
  • redis-lua脚本-无参-比较2个数值
  • Lesson5-1:OpenCV视频操作---视频读写
  • Lesson5-2:OpenCV视频操作---视频追踪
  • 1778_树莓派系统安装
  • 关闭jenkins插件提醒信息
  • JixiPix Artista Impresso Pro for mac(油画滤镜效果软件)
  • 机器学习之 Jupyter Notebook 使用
  • Unity引擎修改模型顶点色的工具
  • linux安装minio以及springboot整合使用
  • javaee 事务 事务的特性 事务的并发问题 事务的隔离级别
  • Matlab怎么引入外部的latex包?Matlab怎么使用特殊字符?