- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux操作系统第4章 存储管理 第1章 嵌入式Linux操作系统简介 第2章 Linux操作系统使用与系统配置 第3章 嵌入式Linux编程环境 第4章 存储管理 第5章 操作系统进程 第6章 进程间通信 第7章 中断与系统调用 第8章 文件管理 第9章 设备管理 第10章 嵌入式Linux的构建 第4章 存储管理 4.1 进程虚存空间的管理 4.2 内存空间/地址类型 4.3 分页机制与MMU 4.4 高速缓存 4.5 内存区域Zone 4.6 获得内存页面 4.7 slab分配器 4.8 kmalloc 4.9 高端内存 4.10 虚拟内存的申请和释放 思考题 4.1 进程虚存空间的管理 Linux运行在x86架构时,进程的虚拟内存为4GB。进程虚存空间的划分在系统初始化时由GDT确定,它定义在/arch/i386/kernel/head.S文件中: .quad 0x0000000000000000 /* NULL 描述符 */ .quad 0x0000000000000000 /* 未使用*/ .quad 0xc0c39a000000ffff /* 内核代码段1GB在0xc0000000 */ .quad 0xc0c392000000ffff /* 内核数据段1GB在0xc0000000 */ .quad 0x00cbfa000000ffff /* 用户代码段3GB在0*/ .quad 0x00cbf2000000ffff /* 用户数据段3GB在0*/ .quad 0x0000000000000000 /* 未使用 */ .quad 0x0000000000000000 /* 未使用 */ .fill 2*NR_TASKS,8,0 /* 各个进程LDT描述符和TSS描述符的空间 */ Linux的存储管理主要是管理进程虚拟内存的用户区。进程虚拟内存的用户区分成代码段、数据段、堆栈以及进程运行的环境变量、参数传递区域等。每一个进程都用一个mm_struct结构体来定义它的虚存用户区。mm_struct结构体首地址在任务结构体task_struct成员项mm中。 4.1 进程虚存空间的管理 4.1.1 进程的虚存区域 一个虚存区域是虚存空间中一个连续的区域,在这个区域中的信息具有相同的作和访问特性。每个虚拟区域用一个vm_area_struct结构体进行描述.它定义在/include/linux/mm.h中 4.1 进程虚存空间的管理 4.1.2 虚存空间的映射和虚存区域的建立 虚拟内存使计算机可以操纵更大的地址空间,还可以使系统中的每一个进程都有自己的虚拟地址空间。这些虚拟的地址空间是相互完全分离的,所以运行一个应用程序的进程不会影响另外的进程。另外,硬件的虚拟内存机制允许对内存区写保护。这可以防止代码和数据被错误的程序覆盖。 内存映射可以将CPU的虚拟地址空间映射到系统的物理内存。 核心的共享虚拟内存机制,虽然允许进程拥有分离(虚拟)的地址空间,但有时也需要进程之间共享内存。例如,系统中可能有多个进程运行命令解释程序bash 。尽管可以在每一个进程的虚拟地址空间都拥有一份 bash 的拷贝,但更好的方法是在物理内存中只拥有一份拷贝,所有运行 bash 的进程共享代码。动态连接库是多个进程共享执行代码的另一个常见例子。另外,共享内存也经常用于进程间通讯机制,两个或多个进程可以通过共同拥有的内存交换信息。Linux系统支持系统V的共享内存 IPC机制。 Linux虚存采用动态地址映射方式,即进程的地址空间和存储空间的对应关系是在程序的执行过程中实现的。进程使用的是虚拟地址,因此它对每个地址的访问都需通过MMU把虚拟地址转化为内存的物理地址。 4.1 进程虚存空间的管理 4.1.2 虚存空间的映射和虚存区域的建立 动态地址映射使Linux可以实现进程在主存中的动态重定位,虚存段的动态扩展和移动,也为虚存的实现提供了基础。当Linux中的进程映象执行时,需要调入可执行映象的内容。但并不需要把这些数据直接调入物理内存,只需要把这些数据放入该进程的虚拟内存区。只有当在执行需要这些数据时才真正调入内存。这种进程的映象和进程虚拟进程空间的连接叫内存映象。当需要将进程映象调入进程的虚拟内存空间时,需要申请一段合适的虚拟内存空间,在这种情况下需要用到mmap系统调用来获得所需的内存空间。 Linux使用do_mmap()函数完成可执行映像向虚存区域的映射,由它建立有关的虚存区域 do_mmap()函数定义在include\linux\mm.h文件中: static inline unsigned long do_mmap(struct fil
您可能关注的文档
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 舒适系统CAN.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 诊断策略.ppt
- 汽车总装技术 教学课件 作者 海争平.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 目录.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境1.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境2.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境3.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境4.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境5.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境6.ppt
- 人教版八年级上册数学精品教学课件 第十三章 三角形 章末整合练.ppt
- 人教版八年级上册数学精品教学课件 第十五章 轴对称 15.3 等腰三角形-15.3.1 等腰三角形-第2课时 等腰三角形的判定 (4).ppt
- 人教版八年级上册数学精品教学课件 极速提分法 第17招 整体思想在解题中的七种技巧.ppt
- 人教版八年级上册数学精品教学课件 第十五章 分式 专项突破9 分式方程的解在求字母的值或取值范围中的常用技巧.ppt
- 人教版八年级上册数学精品教学课件 第十八章 分式 18.3 分式的加法与减法-第1课时 分式的加减.ppt
- 人教版八年级上册数学精品教学课件 第十四章 全等三角形 14.1 全等三角形及其性质 (4).ppt
- 七年级作文成长的经历(11篇).docx
- 法律责任豁免声明及工作证明函(6篇).docx
- 叙事作文那是一次难忘的尝试750字通用14篇.docx
- 沙滩里的秘密500字(14篇).docx
文档评论(0)