欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    进程虚拟地址空间03G-1.ppt

    • 资源ID:3174709       资源大小:959.03KB        全文页数:10页
    • 资源格式: PPT        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    进程虚拟地址空间03G-1.ppt

    进程虚拟地址空间 (03G-1),进程地址空间,struct mm_struct struct vm_area_struct * mmap; /* 指向虚拟区域(VMA)链表 */ rb_root_t mm_rb; *指向red_black树*/ struct vm_area_struct * mmap_cache; /* 指向最近找到的虚拟区间*/ pgd_t * pgd; *指向进程的页目录*/ atomic_t mm_users; /* 用户空间中的有多少用户*/ atomic_t mm_count; /* 对“struct mm_struct“有多少引用*/ int map_count; /* 虚拟区间的个数*/ struct list_head mmlist; /*所有活动(active)mm的链表 */ unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; ;,内核使用mm_struct来描述一个进程的虚拟地址空间,struct vm_area_struct: 用来描述一个虚拟内存区域(VMA)。 内核将每个内存区域作为一个单独的内存对象管理,每个内存区域都有一致的属性,比如权限等。 所以我们程序的代码段、数据段和bss段在内核里都分别有一个struct vm_area_struct 结构体来描述,struct vm_area_struct struct mm_struct * vm_mm; /* 虚拟内存区域所在的地址空间*/ unsigned long vm_start; /* 在虚拟内存中的起始地址*/ unsigned long vm_end; /* 在虚拟内存中的结束地址 */ struct vm_area_struct *vm_next; pgprot_t vm_page_prot; /* 对这个虚拟内存区域的存取权限 */ unsigned long vm_flags; /* 虚拟内存区域的标志. */ rb_node_t vm_rb; /*对这个虚拟内存区域进行操作的函数 */ struct vm_operations_struct * vm_ops; struct file * vm_file; /* File we map to (can be NULL). */ ;,vm_flags的取值: VM_READ: 此虚拟内存区域可读 VM_WRITE: 此虚拟内存区域可写 VM_EXEC: 此虚拟内存区域可执行 VM_SHARED: 此虚拟内存区域可共享 VM_IO: 此虚拟内存区域映射设备I/O空间,用户空间的mmap,测试: 把一个文件用mmap()映射到进程地址空间里后,直接访问文件内容,有了write/read,为什么还需要mmap?,用户空间的mmap()会通过系统调用调用到内核的do_mmap()函数。 do_mmap()函数会: 1.首先创建一个新的VMA并初始化,然后加入进程的虚拟地址空间里。 2.然后调用驱动的mmap函数建立上述用户空间的VMA和驱动空间的内存地址之间的联系(建立页表),用户空间mmap的内核实现,建立vma和物理地址的映射的工作由remap_pfn_range来完成,原型如下: int remap_pfn_range(struct vm_area_struct *vma, unsigned long virt_addr, unsigned long pfn, unsigned long size, pgprot_t prot); vma 需要建立映射的VMA virt_addr 需要建立映射的VMA的起始地址 pfn 页帧号, 对应虚拟地址应当被映射的物理地址. 这个页帧号简单地是物理地 址右移 PAGE_SHIFT 位 size 需要建立映射的VMA的大小, 以字节. prot 使用在 vma-vm_page_prot 中找到的值.,驱动的mmap建立虚拟地址和 物理地址的映射,

    注意事项

    本文(进程虚拟地址空间03G-1.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开