当前位置:  技术问答>linux和unix

我是初学者哦~简单的模块编程的问题啦

    来源: 互联网  发布时间:2016-10-25

    本文导语:  本帖最后由 xinanlxh 于 2010-12-03 21:29:41 编辑 1.我要写一个函数:查找出虚拟地址addr所在的vma,并通过printk打印该段的起始地址、终止地址和段标志等信息。 我在模块里是写了一个函数,内容如下: struct vm_area_struct ...

本帖最后由 xinanlxh 于 2010-12-03 21:29:41 编辑
1.我要写一个函数:查找出虚拟地址addr所在的vma,并通过printk打印该段的起始地址、终止地址和段标志等信息。

我在模块里是写了一个函数,内容如下:

struct vm_area_struct *my_vma;
       struct mm_struct *my_mm;
       
       printk("this is the findvma function...n");
       
       printk("the addr need to be found is : 0x%lxn",addr);
       
       down_read(¤t->mm->mmap_sem);
       my_mm=current->mm;
       my_vma=find_vma(my_mm,addr);
      if(!my_vma)
               {
            printk("virt_addr 0x%lx not available.n",addr);
               return -1;
               }

       printk("the vma information is n");
       printk("the start addr is: 0x%lx .n",my_vma->vm_start);
       printk("the end addr is: 0x%lx .n",my_vma->vm_end);
       printk("the flags is: 0x%lx .n",my_vma->vm_flags);
       up_read(¤t->mm->mmap_sem);
       
       printk("leave the findvma function...n");
结果当然是实现了上述的那个功能,但是我有问题,

首先,就是我们输入的addr和它所在的vm_area_struct是什么关系,还有这个vm_area_struct的起始地址和结束地址和我们输入的addr是什么关系?这个start_addr和end_addr也是指虚址吧?

然后,如果我们输入的addr是内核空间的地址怎么办?

再然后,如果我们输入的addr所对应的vm_area_struct是用户的空间的,那这样的话我们根据它输出的start_addr来找它的物理地址是不是有可能没有呢?

就是这个虚址实址我很不明白,google一下,是有蛮多的,但是越看越乱……请哪位大虾出来指教哦!

起始上面问那么多问题,主要是要把这个搞点明白~也是因为还要做一个作业,就是:
找到虚拟地址addr对应的物理地址并打印~~

在线等指教哦!!!谢谢哈~~O(∩_∩)O哈哈~

|
简单的说虚拟地址空间也是不连续的,vm_area_struct就代表一段,你通过find_vma就可以找到addr属于哪一段

你上面操作的所有东西都是虚拟地址(线性地址)

用户空间的虚拟地址也可以找到物理地址,只不过要求这个虚拟地址已经映射到了某个物理地址


|
支持2楼的。
这个程序只是判断addr这个虚拟地址是否在程序分配的虚拟地址空间中。
vm_area_struct在分配时,如果发现与已分配空间连续且一些属性相同,如都是只读的...具体可以参考ulk,那么就会合并成一个。
而找物理地址,这个应该就是要找到对应的page吧。然后加上偏移。 是否如此还是建议参考ulk


|
可以参考一下ULK的虚拟地址空间那章

|
这块我也不懂呢,但是我觉得 他们之间都用一定的关系,比如函数表达式,通过某种计算出来的吧

    
 
 

您可能感兴趣的文章:

  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • sqlserver iis7站长之家
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学者的问题??在线等待。
  • linux初学者应该看什么书
  • 初学者的疑问
  • Free Java的初始设置问题----初学者求教.
  • 各位大虾,一个初学者该怎样开始学习java?
  • 熟悉weblogic&ejb2.0的请进(初学者就不用看了)
  • 怎样学习Java,我是个初学者。
  • 我是一个java初学者
  • 初学者的问题!
  • 小弟是初学者,请推荐几本不错的unix书籍。
  • 请指点:初学者应怎样学习?
  • 初学者关于模块编程由虚址找物理地址问题~~急~在线等help~
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 给初学者!
  • 我是java的初学者,谁能告诉我什么书最好,谢谢
  • 请问有哪些书适合我们初学者?
  • JAVA初学者的困惑
  • 请教学习java的经验(对于初学者)?
  • 初学者:怎样在linux下用C编程啊?
  • 小弟是初学者,请推荐几本不错的java书籍。
  • 求适合初学者读的书
  • linux初学者的贴
  • 请问对于初学者应该使用哪种版本的linux比较好?
  • linux初学者的一些问题
  • shell初学者
  • 我想用Linux学程序,不知道哪个发行版比较适合初学者?
  • 请问什么是“设计模式”,有这方面的教材吗?望各位大侠指点指点初学者。谢谢!
  • zt:向KDE/QT编程初学者推荐一个网站 from : 中国Linux公社 by :liskman
  • Qt初学者请教大家几个问题!
  • 关于REDHAT 9.0的问题.初学者,请大家不要见笑.
  • 编译参数问题,初学者的问题,请多帮忙
  • JBuilder初学者,帮我推荐几本比较好的书,好吗?(最好能具体点儿,谢谢 ~~~)
  • Linux初学者,Linux安装的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3