保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统内存管理方案研究


RTEMS(The Rael Time Executive for Multi-processor Systems)是一个基于多处理器的,能够运行在不同处理器平台上的嵌入式操作系统。其应用领域十分广泛,包括航空航天设备(导弹、飞机控制系统),网络设备(路由器、交换 机),掌上设备(电子阅读器、PDA)等。针对不同领域应用的需求差异,该系统的内存管理提

供了比较完善的机制。同其它常见的嵌入式系统一样,RTEMS不支持虚拟存储管理,不支持复杂的段页式的保护机制,而采用线性编址方式,即逻辑地址和物理地址一一对应的平面模式,同时支持静态和动态两种管理模式。在系统正常运行时,内存中的映像如图1所示。

图1中假设内破大小为2MB。在特定的应用中,中断表和RTEMS的映像所占用的内存空间大小是个定值,采用静态的内存分配机制,在编译时就可以确定其大小。堆栈区和系统内存区则采取动态分配机制,在系统运行时可以根据需要自动调整其大小。

3 RTEMS动态内存管理

RTEMS动态内存管理机制提供两种分区机制,Partition和Region。

Partition分区管理用于固定大小内存块的分配,Region分区管理 用于可变大小内存块的分配。

3.1 固定长度分区管理

RTEMS定义的固定长度的分区(Partition)是一段连续的内存空间。它可以被划分成固定长度的内存块(buffer),允许应用在创建分区时配置分区的大小和内存块的大小,要求分区的大小是内存块的整数倍。例如,应用创建一个大小为1024字节的分区,内存块为256字节,如图2所示。

创建分区时,RTEMS根据分区和内存块的大小,形成一个空闲内存块的双向链表。当从分区中申请内存块时,按照空闲内存块链表的顺序分配。如果空闲空间不足,调用者不会被阻塞,而是获得一个空指针,以确保申请内存调用的时间确定性。释放内存块时,将该内存块挂在空闲内存块链表的链尾。分区被删除时将释放出这段连续的内存空间。

RTEMS的分区管理机制提供以下API:

rtems_partition_create 创建一个分区

rtems_partition_ident 获得分区标识号

rtems_partition_deldet1 删除一个分区

rtems_partition_get_buffer 申请一个内存块

rtems_partition_return_buffer 释放一个内存块

RTEMS的固定长度分区管理算法有以下特色:

①系统创建的分区数目可在运行时动态增减。

②内存块的控制结构所占用的内存空间在该内存块被分配出去时会变为可用空间,不会影响该内存块实际可用的大小;而在回收时控制块会自动生成,这一点使得分区管理的系统开销对用户的影响为零。

③在分区的内存块中还可以再定义分区,这就意味着内存块可以很容易地被分为子内存块,提高了分区管理的灵活性。

    3.2 可变长度分区管理

RTEMS定义的可变长度的分区(Region)是一段连续的、大小可配置的内存空间,可以被划分成很多大小不一的段(Segment)。创建分区时要指定一个分配单元,称为页。段的大小是页的倍数,如果应用程序在申请段时,给出的大小不是页的倍数,内核会将其调整为页的倍数。例如,应用从而大小为512个字节的分区中申请一个大小为700字节的段,那么,内核实际分配的段大小为1024字节。

《嵌入式系统内存管理方案研究(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/159758.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。