当前位置:首页 > 嵌入式 > 嵌入式硬件

进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也已进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。

动态内存管理的基本任务就是有效地对动态内存进行分配、回收,并同时保证系统的快速性、可靠性和稳定性。当系统请求分配内存时,系统需要从所有空闲块中找到一个合适的空闲块进行分配;当用户不再使用而将某块内存释放时,系统需要回收这一内存块,以备在新的请求产生时重新进行分配。为此,系统需要建立一个与内存当前使用情况相对应的内存描述,用来记录所有与内存分配、回收相关的信息。而如何记录这些信息并进行分配与回收,便成为各种算法的最根本区别。

1 嵌入式系统中内存管理技术的特点

实时系统分为硬实时系统和软实时系统。硬实时系统是指系统中各任务不仅要执行无误而且要做到准时;软实时系统是指系统中各任务运行的越快越好,并不要求限定某一任务必须在多长时间内完成。可以看出动态内存分配是绝对不能用于硬实时系统的,因为动态分配具有时间不确定性(分配时间与内存块数量有关),而且动态分配可能产生分配不成功的情况。所以对于硬实时系统,只能采用静态内存分配方式。静态分配是指在编译或链接时将程序所需的内存空间分配好,这样不会出现分配失败的情况。

1.1 静态分配与动态分配

静态分配为系统提供了最好的可靠性与实时性。对于那些对实时性和可靠性要求极高的需求,就只能采用静态分配方式。但采用静态分配就必然会使系统失去灵活性。因此必须在设计阶段考虑所有可能的情况,并对所有的需求做出相应的空间分配。一旦出现没有考虑到的情况,系统就无法处理。此外静态分配方式也必然导致很大的浪费,因为必须按照最坏情况进行最大的配置,而在实际运行中可能只用到其中的一小部分。

动态分配为系统提供了很大的灵活性,而且在内存的利用率和系统功能扩展等方面也都明显地优于静态分配。

大多数系统采用静态分配和动态分配相结合的方式。由于嵌入式系统本身各个任务的可靠性、实时性要求不尽相同,通常会有一部分任务对可靠性与实时性没有特别严格的要求。这些任务对一定的延时与失败是可以接受的。因此对于这样的一部分任务,就可以采用动态分配方式来满足它们部分或全部的内存需求。而对于那些有严格时限要求的任务,为了保证任务的可靠性和实时性,就应采用静态分配方式。

1.2 动态分配的技术要求

(1)快速性:由于嵌入式系统对实时性要求较高,所以内存分配过程要尽可能地快。在嵌入式系统中,由于还不能采用通用操作系统中复杂而完善的内存分配策略,所以一般都采用简单、快速的内存分配方案。

(2)可靠性:由于嵌入式系统对可靠性的要求较高,所以内存分配过程也要具备高可靠性。但由于各个嵌入式系统之间对可靠性的要求不尽相同,对内存分配的可靠性要求也就各不相同。通常,可靠性要求极高的系统不采用动态分配。

(3)高效性:由于在嵌入式系统中内存资源都相对有限,所以为了保证程序的正常运行,内存管理系统要尽可能高效地使用内存,减少不必要的浪费。

2 伙伴系统

2.1 伙伴系统原理

伙伴(buddy)系统的基本原理就是按照2的幂次方大小对内存进行分配,以此得到很高的分配速度和回收速度。例如:对于10KB的空间请求,伙伴系统会分配16KB的空间来满足。因为内存空闲块大小均为2的幂次方,所以需要16KB,这是满足10KB的最小空间;同样对于70KB的空间请求,伙伴系统会分配128KB的空间来满足。

2.2 伙伴系统存在的问题

伙伴系统比那些按大小而不按块的整数倍地址分配的算法有更多的优点。其优点为当一个大小为2的K次幂的块被释放后,存储管理只需要搜索2的K次幂字节大小的块以判定是否需要合并。那些允许内存块以任意形式分割的策略需要搜索所有的空闲块表。相比之下,伙伴系统更快。

但是对于内存利用率来说,伙伴系统是极其低效的。问题出自所有的内存请求都必须以2的幂次方大小的空间来满足,一个35KB的请求需要分配64KB的空间,其余的29KB被浪费了。在极端情况下内存资源有近50%被浪费。

3 连续的内存分配

3.1 问题提出

伙伴系统的内存管理方式对空间的使用存在极大的浪费。在某些情况下还会由于资源的浪费,导致后继的内存请求得不到满足,进而严重地影响程序的正常功能。

试考虑:系统共有1MB内存空间可用,采用伙伴系统进行管理。有如下请求:请求A,300KB;请求B,300KB;请求C,50KB.结果如表1所示。

由表1中可以看出:伙伴系统对空间的浪费是极其严重的,即使在物理内存充足(1MB)的情况下,也会产生请求(650KB)无法满足的情况。

由于在嵌入式系统中,一般都没有虚拟内存的支持,所以当内存请求无法得到满足时,将严重影响程序的正常功能。因此为了保证程序的正常功能,就要提高内存的利用率,尽可能地满足程序的内存请求。所以在对伙伴系统进行分析的基础上,提出了连续的内存分配方式。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

深圳2024年4月23日 /美通社/ -- 全球AI解决方案与工业级存储领导品牌宜鼎国际 (Innodisk)持续深化边缘AI布局,今(23)日发表全球首创"MIPI over Type-C"独家技术,让旗下嵌入式相机模...

关键字: AI 嵌入式 相机

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收集机器人)中使用和集成这些驱动程序;以及这样将如何有助...

关键字: 电机控制器 机器人 嵌入式

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

支持高达48V@5A的PD受电模式,达到目前USB PD最高标准。

关键字: 嵌入式 开发板
关闭
关闭