嵌入式系统开发Chapter8内存管理ppt课件.ppt

嵌入式系统开发Chapter8内存管理ppt课件.ppt

ID:59441221

大小:458.00 KB

页数:57页

时间:2020-09-18

嵌入式系统开发Chapter8内存管理ppt课件.ppt_第1页
嵌入式系统开发Chapter8内存管理ppt课件.ppt_第2页
嵌入式系统开发Chapter8内存管理ppt课件.ppt_第3页
嵌入式系统开发Chapter8内存管理ppt课件.ppt_第4页
嵌入式系统开发Chapter8内存管理ppt课件.ppt_第5页
资源描述:

《嵌入式系统开发Chapter8内存管理ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章内存管理主要内容概述内存管理机制内存保护第一节 概述不同实时内核所采用的内存管理方式不同,有的简单,有的复杂。实时内核所采用的内存管理方式与应用领域和硬件环境密切相关。在强实时应用领域,内存管理方法就比较简单,甚至不提供内存管理功能。一些实时性要求不高,可靠性要求比较高,且系统比较复杂的应用在内存管理上就相对复杂些,可能需要实现对操作系统或是任务的保护。嵌入式实时操作系统在内存管理方面需要考虑如下因素:不使用内存管理:最快速和最确定的内存管理方式,适用于那些小型的嵌入式系统,系统中的任务比较少,且数量固定。通常的操作系统都至少具有基本的内存管理方法:提供内存分配与释放的系统调用。

2、快速而确定的内存管理虚拟存储技术:为用户提供一种不受物理存储器结构和容量限制的存储管理技术,是桌面/服务器操作系统为在所有任务中使用有限物理内存的通常方法,每个任务从内存中获得一定数量的页面,并且,当前不访问的页面将被置换出去,为需要页面的其他任务腾出空间。置换是一种具有不确定性的操作:当任务需要使用当前被置换出去的页面中的代码和数据时,将不得不从磁盘中获取页面,而在内存中另外的页面又可能不得不需要先被置换出去。在嵌入式实时操作系统中一般不使用虚拟存储技术,以避免页面置换所带来的开销。不使用虚拟存储技术平面内存模式:应用程序和系统程序能够对整个内存空间进行访问。平面内存模式比较简单,易于

3、管理,性能也比较高。适合于程序简单、代码量小和实时性要求比较高的领域。内存保护:应用比较复杂、程序量比较大的情况;防止应用程序破坏操作系统或是其他应用程序的代码和数据。内存保护内存保护包含两个方面的内容:防止地址越界:每个应用程序都有自己独立的地址空间,当应用程序要访问某个内存单元时,由硬件检查该地址是否在限定的地址空间之内,只有在限定地址空间之内的内存单元访问才是合法的,否则需要进行地址越界处理;防止操作越权:对于允许多个应用程序共享的存储区域,每个应用程序都有自己的访问权限,如果一个应用程序对共享区域的访问违反了权限规定,则进行操作越权处理。第二节 内存管理机制静态分配系统在启动前

4、,所有的任务都获得了所需要的所有内存,运行过程中将不会有新的内存请求。在强实时系统中,减少内存分配在时间上可能带来的不确定性。不需要操作系统进行专门的内存管理操作。系统使用内存的效率比较低下,只适合于那些强实时,且应用比较简单,任务数量可以静态确定的系统。动态分配堆(heap):应用通过分配(malloc)与释放(free)操作来使用内存。堆会带来碎片:内存被逐渐划分为位于已被使用区域之间的越来越小的空闲区域。垃圾回收:对内存堆进行重新排列,把碎片组织成为大的连续可用内存空间。但垃圾回收的时间长短不确定:不适合于处理实时应用。在实时系统中,避免内存碎片的出现,而不是在出现内存碎片时进行回

5、收。常用管理方式:固定大小存储区:在指定边界的一块地址连续的内存空间中,实现固定大小内存块的分配。可变大小存储区:在指定边界的一块地址连续的内存空间中,实现可变大小内存块的分配。应用根据需要从固定大小存储区或者可变大小存储区中获得一块内存空间,用完后将该内存空间释放回相应的存储区。1固定大小存储区管理可供使用的一段连续的内存空间被称为是一个分区;分区由大小固定的内存块构成,且分区的大小是内存块大小的整数倍数。内存块1内存块2内存块3内存块4128字节512字节一个大小为512字节的分区,内存块为128个字节的分区typedefstruct{PartitionIDID;/*分区的ID*/P

6、artitionNameName;/*分区的名字*/void*starting_address;/*分区的起始地址*/intlength;/*分区的长度*/intbuffer_size;/*内存块的大小*/PartitionAttributeattribute;/*属性*/intnumber_of_used_blocks;/*剩余内存块数*/MemoryChainmemory;/*内存块链*/}Partition;分区的数据结构ID表示分区的标识;starting_address表示分区的起始地址;length表示分区的存储单元的数量;buffer_size表示分区中每个内存块的大小;a

7、ttribute表示分区的属性;number_of_used_blocks表示分区中已使用内存块的数量;memory为一个指针,指向分区中由空闲内存块组成的双向空闲内存块链表的头结点。分区1分区2nextpreviousnextpreviousnextprevious……空闲内存块链表分区的操作创建分区删除分区从分区得到内存块把内存块释放到分区获取分区ID获取当前创建的分区的数量获取当前所有分区的ID获取分区信息如果内存块处于空闲状

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。