北京建网站公司推荐西宁高端企业网站建设

news/2025/10/6 22:00:03/文章来源:
北京建网站公司推荐,西宁高端企业网站建设,做网站编辑有前途,中国核工业第五建设有限公司招聘find_vma函数功能描述#xff1a;find_vma( )函数根据一个属于某个进程的虚拟地址#xff0c;找到其所属的进程虚拟区间#xff0c;并返回相应的vma_area_struct结构体指针。find_vma文件包含#includefind_vma函数定义在内核源码中的位置#xff1a;linux-3.19.3/mm/mmap.c…find_vma函数功能描述find_vma( )函数根据一个属于某个进程的虚拟地址找到其所属的进程虚拟区间并返回相应的vma_area_struct结构体指针。find_vma文件包含#includefind_vma函数定义在内核源码中的位置linux-3.19.3/mm/mmap.c函数定义格式struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr)find_vma输入参数说明mm是进程整个用户空间的抽象也是总的控制结构一个进程只有一个mm_struct结构一个进程整个用户空间通常有若干离散的虚拟区间这些虚拟区间由vm_area_struct结构描述。addr是进程用户空间中一虚拟地址它属于某一虚拟区间。find_vma返回参数说明struct vm_area_struct是对进程虚拟区间抽象的数据结构find_vma( )函数返回一个该结构类型指针该指针指向描述进程中虚拟地址addr所在虚拟区间的结构体。其中struct mm_struct和struct vm_area_struct在文件linux-3.19.3/include/linux/mm_types.h中定义它们的具体结构如下这里对部分字段的含义进行了说明struct mm_struct {struct vm_area_struct * mmap; /* 指向线性区对象的链表头 */struct rb_root mm_rb;u32 vmacache_seqnum; /*每一个线程的vmacache序列号*/#if def CONFIG_MMU/* 在进程地址空间忠搜索有效线性地址区间的方法 */unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr,unsigned long len, unsigned long pgoff, unsigned long flags);#endif/* 标识第一个分配的匿名线性区或文件内存映射的线性地址 */unsigned long mmap_base;unsigned long mmap_legacy_base;unsigned long task_size;unsigned long highest_vm_end;/* 内核从这个地址开始搜索进程地址空间中线性地址的空闲区间 */pgd_t * pgd; /*指向页全局目录 */atomic_t mm_users; /* 次使用计数器 */atomic_t mm_count; /* 主使用计数器*/atomic_long_t nr_ptes; /*页表所在的页*/int map_count; /* 线性区vma的个数 */spinlock_t page_table_lock; /* 线性区的自旋锁和页表的自旋锁 */struct rw_semaphore mmap_sem; /* 线性区的读/写信号量 */struct list_head mmlist; /* 指向内存描述符链表中的相邻元素*/unsigned long hiwater_rss;unsigned long hiwater_vm;/**total_vm指进程地址空间的大小(页数), locked_vm指“锁住”而不能换出的页的个数**shared_vm指共享文件内存映射中的页数exec_vm指可执行内存映射中的页数*/unsigned long total_vm, locked_vm, pinned_vm, shared_vm, exec_vm;/*stack_vm指用户堆栈中的页数*/unsigned long stack_vm, def_flags;/*start_code指可执行的起始地址end_code指可执行代码的最后地址start_data**指已初始化数据的起始地址end_data指已初始化数据的最后地址*/unsigned long start_code, end_code, start_data, end_data;/*start_ brk指堆的起始地址brk指堆的当前最后地址start_ stack指用户态堆栈的起始地址*/unsigned long start_brk, brk, start_stack;/* arg_start指命令行参数起始地址arg_end指命令行参数的最后地址**env_start指环境变量的起始地址env_end指环境变量的最后地址*/unsigned long arg_start, arg_end, env_start, env_end;…………};struct vm_area_struct {unsigned long vm_start; /* 线性区的第一个线性地址 */unsigned long vm_end; /* 线性区之后的第一个线性地址 */struct vm_area_struct *vm_next, *vm_prev; /* 进程链表中的下一个线性区及上一个线性区*/struct rb_node vm_rb; /* 用于红黑树的数据*/unsigned long rb_subtree_gap;struct mm_struct * vm_mm; /*指向线性区所在的内存描述符 */pgprot_t vm_page_prot; /* 线性区中页框的访问许可权 */unsigned long vm_flags; /* 线性区的标志*/…………struct list_head anon_vma_node; /* 指向匿名线性区链表的指针 */struct anon_vma * anon_vma; /* 指向anon_vma数据结构的指针 */const struct vm_operations_struct * vm_ops; /* 指向线性区的方法 */unsigned long vm_pgoff; /*在映射文件中的偏移量对于匿名页它等于0或vm_start/PAGE_SIZE*/struct file * vm_file; /* 指向映射文件的文件对象 */void * vm_private_data; /* 指向内存区的私有数据 */…………};find_vma实例解析编写测试文件find_vma.c头文件及全局变量声明如下#include #include #include #include #include MODULE_LICENSE(GPL);static int __init find_vma_init(void);static void __exit find_vma_exit(void);模块初始化函数int __init find_vma_init(void){struct mm_struct *mm ;unsigned long addr ;struct vm_area_struct * vma ;mm current-mm; //mm指向当前进程addr mm-mmap-vm_next-vm_start 1;printk(addr 0x%lx\n, addr);vma find_vma(mm, addr);if(vma ! NULL ){/*输出所查找的虚拟区间的起始地址*/printk(vma-vm_start 0x%lx\n, vma-vm_start);/*输出所查找虚拟区间的结束地址*/printk(vma-vm_end 0x%lx\n, vma-vm_end);}elseprintk(UNLUCK! You have failed! \n);return 0;}模块退出函数void __exit find_vma_exit(void){printk(exit! \n);}模块初始化及退出函数调用module_init(find_vma_init);module_exit(find_vma_exit);实例运行结果及分析首先编译模块执行命令insmod find_vma.ko插入模块然后执行命令dmesg -c会出现如图所示的结果。结果分析““mm current-mm; ”获取当前进程用户空间。令“ addr mm-mmap-vm_next-vm_start 1; ”此时addr即为用户空间中的某一虚拟地址这里为当前进程第二个虚拟区间的起始地址加1由输出结果可知addr 0x7fb896ce6001。然后调用find_vma( )函数查询addr所在的虚拟区间将描述该虚拟区间的结构体指针赋值给vma最后通过输出vma的vm_start和vm_end值验证了查找成功。

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

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

相关文章

PTA-根据已有类Worker,利用LinkedList编写一个WorkerList类,完成计算所有工人总工资的功能

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

威尔逊定理的证明

威尔逊定理: 首先,对于 \(p = 2\),显然成立。 若 \(p \not= 2\),我们考虑一个 \(x\) 在模 \(p\) 意义下的逆元若是他自己,则 \(x^2\equiv 1(\text{mod}\ p)\)。 \(x\equiv 1\) 或 \(p - 1(\text{mod}\ p)\)。 而且…

网站开发好学嘛哪里有网站推广软件

来源:机器之心摘要:AI 迎来另一寒冬?这是 2018 年下半年至今我们一直能听到的一种声音。这类唱衰的文章一经发布,总是能博人眼球。这篇发表在 Medium 上的文章探讨了 AI 的历史和现在,泛谈了深度学习的局限性&#xff…

实用指南:HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋

实用指南:HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

哪个网站可以做计算机二级的题营销网络的建设有哪些

一、申办条件 符合下列条件之一的本市户籍人员(除学校学生集体户口外),可办理户口市内迁移。 1.迁入本人合法住宅房屋地址。 2.投靠直系亲属,迁入其合法住宅房屋地址,或迁入其家庭户内。 3.因离婚、房屋所有权发生转移…

大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树 - 实践

大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !im…

深入解析:rknn优化教程(一)

深入解析:rknn优化教程(一)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

谁有可以用的网站wordpress 中介网站

#!/usr/bin/python #调用pythonfrom sys import argv #导入sys是导入python解释器和他环境相关的参数from os import makedirs,unlink,sep  #os主要提供对系统路径,文件重命名和删除文件所需的函数#makedirs是创建递归文件夹的函数。#比如说我们要创建一个新的目录…

类似in a wordpress苏州网站建设网站优化

鼠标会变成以下 拉开后就 出现想要的部分

WannaCry勒索病毒数字取证与安全监控实战指南

本文详细介绍了如何构建网络安全实验环境分析WannaCry勒索病毒,涵盖Elastic SIEM配置、Sysmon监控部署、静态动态分析技术,以及使用Autopsy和Volatility进行磁盘内存取证的全流程实战操作。WannaCry勒索病毒:DFIR与…

Azure DevOps 管道部署系列之一本地服务器 - 实践

Azure DevOps 管道部署系列之一本地服务器 - 实践2025-10-06 21:39 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

我的网站域名上海电子商务网站制作

指针(1)学习流程 —————————————————————————————————————————————————————————————————————————————————————————————————————————————…

吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(二)

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

08. 自定义组件

一、在单独文件中自定义组件我们可以在终端中使用 pip 安装 PySide6 模块。默认是从国外的主站上下载,因此,我们可能会遇到网络不好的情况导致下载失败。我们可以在 pip 指令后通过 -i 指定国内镜像源下载。 pip ins…

php网站的特点网站图标素材图片

作业1:设计界面 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin…

深入解析:板凳-------Mysql cookbook学习 (九--2)

深入解析:板凳-------Mysql cookbook学习 (九--2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

20251006 模拟测 总结

\(\mathcal{Preface}\) 分数 \(90+100+100+30=320\)。 挂完了,呜。 \(\mathcal{Problem \space{} A}\) Tag:诈骗,循环。 减法可以出负数,我们希望最后的值最大,可以一开始用最小的值去减其他所有值,但是保留任意…

数据源切换之道

深入探讨SpringBoot动态数据源切换的两种核心实现:MyBatis插件与SpringAOP。从原理剖析到实战演练,从性能对比到生产避坑,为你提供全方位的数据源切换解决方案。大家好,我是 Mr.Sun,一名热爱技术和分享的程序员。…

个人网站 网站教程做网站用php吗

样例简介 智能煤气检测系统通过实时监测环境中烟雾浓度,当一氧化碳浓度超标时,及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程配置智能煤气检测系统的报警阈值,远程接收智能煤气检测系统报警信息。…