八章节存储管理知识.ppt

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3. free_area_init() 这个函数用于建立管理物理页帧的数据结构mem_map,有多少物理页帧就有多少mem_map_t类型的结构体与之相对应。 每个页面的mem_map_t结构中的flags被标明为PG_DMA和PG_reserved,并且页帧号被赋给相应的数值。 同时建立了管理空闲页面的bitmap映射表,并且所有的位都被清0。 4. mem_init() mem_init()函数遍历整个可用物理内存地址空间,将每个页面相对应的struct page结构中flags的PG_reserved标志位清除,标志用户个数的count计数器置1,并同时统计可用物理页面数量,然后打印系统的各个内存参数,如可用RAM和ROM的大小、内核代码段和数据段大小等。 第 8章 目录 ★1 缺少MMU支持的内存管理 ★2 FLAT平模式内存管理 2.1 3种内存管理模型 2.2 标准Linux的内存管理 2.3 uClinux内存管理 2.4 uClinux内存管理的局限性 ★3 内存管理模块的启动过程 ★4 可执行程序的加载 4.1 用户程序的内存分布 4.2 reloc段机制 4.3 FLAT可执行文件格式 4.4 执行文件加载流程 8.4 可执行程序的加载 在普通的Linux中,虚拟内存技术的使用使我们不必关心一个应用程序是从什么地址开始的。 即使所有的应用程序都使用同一个连接脚本配置。 8.4 可执行程序的加载 也就是说,即使它们使用的虚拟地址是重叠的,经过页表和页目录的转换之后它们也可以被映射到不同的物理地址。 但是在uClinux中,由于缺少了MMU的硬件支持,在内核中不会发生地址的映射转换,这样就必须解决应用程序的加载问题。 8.4 可执行程序的加载 uClinux系统使用flat可执行文件格式,gcc的编译器不能直接形成这种文件格式, 但是可以首先编译生成coff可执行格式或者elf可执行格式的文件, 然后使用格式转化工具(coff2flt或者elf2flt)将这些中间代码转换成flat文件格式。 8.4 可执行程序的加载 当用户执行一个flat格式的可执行程序时,内核的执行文件加载器将对flat文件进行进一步处理,主要是对reloc段进行修正。 下面对do_load_flat_binary()函数的分析将详细描述其实现过程。 第 8章 目录 ★1 缺少MMU支持的内存管理 ★2 FLAT平模式内存管理 2.1 3种内存管理模型 2.2 标准Linux的内存管理 2.3 uClinux内存管理 2.4 uClinux内存管理的局限性 ★3 内存管理模块的启动过程 ★4 可执行程序的加载 4.1 用户程序的内存分布 4.2 reloc段机制 4.3 FLAT可执行文件格式 4.4 执行文件加载流程 8.4.1 用户程序的内存分布 1.堆 标准Linux上用户程序的动态内存分配是通过调用glibc库的malloc函数从程序的堆空间中获得内存页面。 在虚拟内存系统中malloc是使用sbrk调用将程序的数据段向后扩展得到。 应用程序的内存使用分布图如图8-2所示。 图 8-2 flat可执行文件格式 8.4.1 用户程序的内存分布 而在uClinux的平地址模式中,堆空间是通过mmap调用获得的。 uClibc中的malloc函数是一个非常简单的实现,它将所有分配内存的细节都交给了内核。 2. 栈 uClinux中的栈紧随着用户程序的数据段,而堆是从栈底向下扩张的,如图8-2所示。 由于uClinux中没有内存保护机制,这样必须在程序编译连接的时候就确保为栈保留了足够的空间使它不会覆盖程序的数据段和代码段。 图 8-2 flat可执行文件格式 第 8章 目录 ★1 缺少MMU支持的内存管理 ★2 FLAT平模式内存管理 2.1 3种内存管理模型 2.2 标准Linux的内存管理 2.3 uClinux内存管理 2.4 uClinux内存管理的局限性 ★3 内存管理模块的启动过程 ★4 可执行程序的加载 4.1 用户程序的内存分布 4.2 reloc段机制 4.3 FLAT可执行文件格式 4.4 执行文件加载流程 8.4.2 reloc段机制 一个可执行程序通常包含代码段、数据

文档评论(0)

DKman_80 + 关注
实名认证
内容提供者

海内存知己 天涯若比邻

1亿VIP精品文档

相关文档