第6章嵌入式Linux的内存管理本章教学目的及要求了解Linux内存管理的基本概念及相关数据结构了解虚存空间的管理掌握共享内存的操作理解嵌入式操作系统内存管理理解动态内存分配及malloc/free的实现了解Linux内存的使用内存管理机制是嵌入式系统中的一个重点和难点,它必须满足以下几个特性:实时性可靠性高效性在嵌入式实时系统中,内存管理根据不同的系统,有不同的策略,对于有些系统支持的虚拟内存管理机制,对于另外一些系统,可能只有flat式的简单内存管理机制。6.1Linux内存管理的基本概念及相关数据结构6.1.1嵌入式操作系统内存管理机制1.嵌入式操作系统内存管理机制分类(1)虚拟内存管理机制有些嵌入式处理器提供了MMU,MMU具备内存地址映射和寻址功能,它使操作系统的内存管理更加方便。如果存在MMU,操作系统会使用它完成从虚拟地址到物理地址的转换,所有的应用程序只需要使用虚拟地址寻址数据。这种使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存。MMU是实现虚拟内存的必要条件。(2)非虚拟内存管理机制由于虚拟内存机制会导致不确定性的I/O阻塞时间,使得程序运行时间不可预期。在实时性要求较高时,很多嵌入式系统不需要虚拟内存机制。另外,从嵌入式处理器的成本考虑,大多采用不装配MMU的嵌入式微处理器。采用实存储器管理策略时,对于内存的访问是直接的,它对地址的访问不需要经过MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址;同时,大多数嵌入式操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。2.内存在系统中的生命期(1)在启动阶段,内存以临时分配的形式出现,当完成系统启动后,这些内存会回收供以后系统使用。(2)在正常运行阶段,内存以两种方式存在:①系统为代码,数据分配的永久内存,这些内存在系统运行过程中是不会改变的,有的硬件的I/O等外设也把相应的地址映射到固定的内存空间。②动态内存分配空间:这些内存不会固定分配,而是根据系统需要而动态分配的,如果利用非虚拟内存管理机制,一般需要改造动态内存分配机制以提高性能。3.Linux系统的内存管理机制Linux内核的设计并没有全部采用Intel所提供的段机制,仅仅是有限度地使用了分段机制。这不仅简化了Linux内核的设计,而且为把Linux移植到其他平台创造了条件,因为很多RISC处理器并不支持段机制。所有段的基地址均为0。由此可以得出,每个段的逻辑地址空间...