- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 嵌入式Linux的内存管理; 内存管理机制是嵌入式系统中的一个重点和难点,它必须满足以下几个特性:
实时性
可靠性
高效性
在嵌入式实时系统中,内存管理根据不同的系统,有不同的策略,对于有些系统支持的虚拟内存管理机制,对于另外一些系统,可能只有flat式的简单内存管理机制。;1. 嵌入式操作系统内存管理机制分类;2.内存在系统中的生命期;3.Linux系统的内存管理机制;4.Linux系统虚拟内存机制的屏蔽; 虚拟内存管理机制在为进程安全提供很好保证的同时,也为开发人员提供了一个管理内存的方法,使开发人员更多的关注其他的方面。但是它也带来了时间不确定性的缺陷。根据不同的系统需求,可以选取相应的内存管理策略。现在大多数的实时系统中,非虚拟内存管理机制用得比较多,这样保证了系统的实时性,但是增加了开发的难度,任务内存操作不当,可能引起系统崩溃。;内存管理程序提供以下功能:
大地址空间:用户程序使用的内存数量可以超过物理上实际所有的内存数量。
内存保护:进程的内存是私有的,不能被其他进程所读取和修改。而且,内存管理程序可以防止进程覆盖代码和只读数据。
内存映射:可以把一个文件映射到虚拟内存区域,并把该文件当做内存来访问。
对物理内存的公平访问:内存管理程序确保所有的进程都能公平地访问计算机的内存资源,这样可以确保理想的系统性能。
共享虚拟内存:内存管理程序允许进程共享它们内存的一部分。; 内存管理的基本概念; 内存管理的基本概念;如:内存页描述符结构如下,
struct page {
page_flags_t flags; 页标志字
atomic_t _count;
atomic_t _mapcount;
unsigned long private;
struct address_space *mapping;
pgoff_t index;
struct list_head lru;
#if defined(WneANT_PAGE_VIRTUAL)
void *virtual;
#endif /* WANT_PAGE_VIRTUAL */
};;(1)虚存区间 vm_area_struct ,变量名通常为vma。
(2)Vm_area_struct中的vm_mm指向一个mm_struct数据结构,变量名通常为mm;mm-segments为指向该进程的局部段描述符表LDT。
(3)Find_vma()找到一个包含addr的虚存页面。
(4)Insert_vm_struct向进程的虚拟页面队列中插入一个虚存页面(linux内核的链表插入采用双重链表指针)。
(5)Swap_info_struct 相当于page结构。
(6)Swap_entry_t 相当于pte_t结构。
(7)SWP_TYPE(x) 页面所在的文件。
(8)SWP_OFFSET(x)页面在文件中的偏移。
(9)SWP_ENTRY(type,offset)获得swap_entry_t。
……;(1).text
存放 CPU 执行的机器指令,代码区通常是只读的,防止程序意外地修改了它的指令。
(2).data
该区包含被初始化的全局变量、静态变量.它们是在编译阶段被编译器存放在可执行目标文件的.data段中的.
(3).BSS
未被初始化的全局变量和静态局部变量,编译的时候并未被分配空间,仅仅在.bss段中标记它们,当程序运行的时候才为它们在内存中分配空间,并把它们初始化为零或空指针(NULL)。
(4).rodata
该区包含常量数据(如字符串常量)在编译阶段被编译器存放在可执行目标文件的.rodata段中的。 ;程序运行时内存结构 ;程序执行时的内存分配情况 ;栈和堆的区别 ;;进程内存空间;内存分配方式 ;内存分配方式;6.2.2系统物理内存管理;Linux页式管理;用户空间和内核空间内存使用;Linux内核内存使用;Linux内核内存使用;Linux内核内存使用;Linux内核内存使用;Linux内核内存使用;Linux内核内存使用;6.3 虚拟空间的管理;6.3 虚拟空间的管理;6.4 共享内存;6.4 共享内存;6.4 共享内存;6.5 动态内存分配及malloc/free的实现 ;6.6 Linux内存的使用;本章小结 ;
文档评论(0)