- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程虚拟地址空间(0~3G-1) 进程地址空间 vm_flags的取值: VM_READ: 此虚拟内存区域可读 VM_WRITE: 此虚拟内存区域可写 VM_EXEC: 此虚拟内存区域可执行 VM_SHARED: 此虚拟内存区域可共享 VM_IO: 此虚拟内存区域映射设备I/O空间 建立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 中找到的值. 1.每个进程只有一个mm_struct结构,在每个进程的task_struct结构中,有一个指向该进程的结构。可以说,mm_struct结构是对整个用户空间的描述 2.一个进程的虚拟空间中可能有多个虚拟区间(参见下面对vm_area_struct描述),对这些虚拟区间的组织方式有两种,当虚拟区较少时采用单链表,由mmap指针指向这个链表,当虚拟区间多时采用“红黑树(red_black tree)”结构,由mm_rb指向这颗树 3.因为程序中用到的地址常常具有局部性,因此,最近一次用到的虚拟区间很可能下一次还要用到,因此,把最近用到的虚拟区间结构应当放入高速缓存,这个虚拟区间就由mmap_cache指向。 4.指针pgt指向该进程的页目录(每个进程都有自己的页目录,注意同内核页目录的区别),当调度程序调度一个程序运行时,就将这个地址转成物理地址,并写入控制寄存器(CR3)。 5.虽然每个进程只有一个虚拟地址空间,但这个地址空间可以被别的进程来共享,如,子进程共享父进程的地址空间(也即共享mm_struct结构)。所以,用mm_user和mm_count进行计数。类型atomic_t实际上就是整数,但对这种整数的操作必须是“原子”的。 6.系统中所有的mm_struct结构体都通过自身的mmlist域连接在一个双向链表中,该链表的首元素是init_mm内存描述符,它代表init进程的地址空间 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: 用来描述一个虚拟内存区域
您可能关注的文档
- 东钱湖角洞岙绿化养护服务项目及相关概要.doc
- 关于通钢第二幼儿园.ppt
- 安徽三联学院及综合汇总.doc
- 2017年湖北省宜昌市初中毕业生学业考试及简介.doc
- 专题五应用动力学观点和能量观点解决力学压轴题及创新途径.ppt
- 敏安电动汽车生产项目及相关分析.doc
- 浅析2012年3月九年级一摸联考历史试题.doc
- 深入探讨津晋、荣乌高速公路2017年维修工程.doc
- 中铁十三局技师学院及创新途径.doc
- 着重探析绕城高速(津滨高速互通以北段)2017-2019年度日常养护工.doc
- 品牌建设与传播实施方案.docx
- 2025年Q起重机特种作业-Q2起重机司机限流动式(官方)-专业知识历年参考试题库答案解析(5套共1.docx
- 2025年综合类-生化化工药品技能考试-甲醇半成品岗位考试(一级)历年真题摘选带答案(5卷单选题百道.docx
- 年度训练周期规划标准.docx
- 2025年丽水职业技术学院单招笔试综合素质试题库含答案解析(5套共100道单选合辑).docx
- 2025年综合类-电力机车电工考试-中级机车电工历年真题摘选带答案(5卷单选题百道集合).docx
- 培育优良家风促进家庭和谐.docx
- 保荐代表人考试适用【冲刺阶段】之财务模块:财管.pdf
- 2025年住院医师考试-妇产科住院医师历年参考题库含答案解析(5套合计百道单选题).docx
- 病历书写基本原则与相关问题.ppt
文档评论(0)