基于VxWorks的空间机器人中央处理器的内存模块及其管理方法

文档序号:6463515阅读:169来源:国知局
专利名称:基于VxWorks的空间机器人中央处理器的内存模块及其管理方法
技术领域
本发明涉及一种基于VxWorks操作系统的内存模块,特别是针对空 间机器人特点所设计的具有高可靠性的内存模块及其管理方法,属于空 间技术领域。
技术背景随着航天技术的发展,人类在太空的活动越来越多。利用空间机器 人协助或替代宇航员完成空间作业,不仅可以避免宇航员在恶劣的太空 环境中作业时受到伤害,而且同时还可以提高完成任务的效率和质量, 是实现人类探索太空的使命安全、低消耗的有效途径。随着人类在太空 中的活动的日益增加,在未来空间机器人将扮演越来越重要的角色,空 间机器人技术成为最有吸引力的研究领域之一。空间机器人控制系统是一种应用于空间环境下的分布式实时控制 系统,需要具备强大的智能和自主能力,来适应复杂的空间环境,完成 人类所期望的任务,这就需要控制系统软件的支持。因而控制软件的可 靠性和正常运行的能力显得至关重要。然而,现有的操作系统多是按照平常大多数应用程序所设计,其系统 分区容易产生大量残留的碎片。当申请大块数据时候,有可能出现申请失败 的情况。这对实时性和可靠性要求非常高的空间技术的系统设计中是绝对不 允许出现的。因此,有必要提出一种有针对性的内存管理方法。 发明内容本发明的发明目的在于提供一种基于VxWorks操作系统针对空间机 器人特点所设计的具有高可靠性的内存模块及其管理方法。 本发明的发明目的是通过下述技术方案予以实现的 空间机器人的内存模块,其特征在于包括定长内存缓冲池、变长内 存缓冲池、定长内存分配队列;所述定长内存缓冲池内包括若干固定长度的定长内存单元; 所述定长内存分配队列中存储所述定长内存缓冲池中各个定长内存单元 的地址;所述变长内存缓冲池为可以申请任意长度内存的内存缓冲区。 所述定长内存缓冲池被分为定长长缓冲池和定长短缓冲池。 所述定长内存缓冲池中的定长内存单元均采用环形静态存储结构。 还包括定长内存缓冲池管理模块、定长内存缓冲池记录表; 所述定长内存缓冲池管理模块内设有周期监测定时器和防死锁定时器;所述周期监测定时器为周期性信号用于监控所述定长内存缓冲池的资源;所述防死锁定时器为非周期性信号用于防止内存模块锁死;所述定长内存缓冲池记录表用于记录申请内存的任务ID和申请内存的情况。空间机器人的内存分配方法,其特征在于-1) 内存模块初始化,分配定长内存缓冲池和变长内存缓冲池的区间, 并将定长内存缓冲池划分为若干定长内存单元;2) 创建定长内存分配队列,将所述定长内存缓冲池中各个定长内存单 元的地址存储于定长内存分配队列中;3) 任务申请内存消息缓冲时,若申请长度不超过定长内存缓冲池中各个 定长内存单元的固定长度,则优先在定长内存单元申请,同时将定长内存分 配队列中对应的地址信息取出;4) 若申请长度超过定长内存单元的固定长度或定长内存单元己全部被分 配出去,则向所述变长内存缓冲池申请;5) 当需要释放内存时,将被释放的定长内存单元的地址归还定长内存分配队列。所述步骤1中,定长内存缓冲池中的定长内存单元被划分为定长长缓 冲池和定长短缓冲池;所述步骤3被改为下述步骤3i)任务申请内存消息缓冲时,若申请长度不超过定长短缓冲池的长度 时,优先在定长短缓冲池申请;如果定长短缓冲池全部被分配出去,继而向定 长长缓冲池申请,如果成功将得到一个定长长缓冲池的定长内存单元3ii)若申请长度大于定长短缓冲池的长度而小于定长长缓冲池的长度时, 优先在定长长缓冲池中分配一个定长长缓冲池的定长内存单元;如果这时定 长长缓冲池已全部被分配出去,则向变长内存缓冲池申请。空间机器人的内存的管理方法,其特征在于-al)定长内存缓冲池管理模块在系统中建立定长内存缓冲池管理任务;a2)将申请内存的任务ID和申请内存的情况存储于定长内存缓冲池 记录表中,动态跟踪并记录更新;a3)当定长内存缓冲池使用量超过设定值时,所述定长内存缓冲池管 理模块找出当前占用定长内存缓冲池最多的一个或多个任务,监测所述任 务目前的运行状态;如果该任务处于活动状态则保护现场后禁用,同时 启动周期监测定时器和防死锁定时器;a4)所述周期监测定时器时钟周期触发,判断当前定长内存缓冲池运 行情况,如果小于设定值,则释放被禁用的所有任务;如果大于设定值, 则继续查找当前占用定长内存缓冲池最多的一个或多个任务并禁用;a5)重复所述步骤3、 4,如超过防死锁定时器的规定时间则释放所有 被禁用的任务,同时记录此异常;a6)如定长内存缓冲池资源耗尽,则直接向变长内存缓冲池动态申请 所需资源。本发明的有益效果是本发明所提供的内存模块及其管理方法针对 空间机器人特点具有高可靠性。


图1为环形静态存储结构图;图2为内存分配示意图;图3为任务间消息内存分配示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步描述。本发明所选用的VxWorks操作系统是一种强实时嵌入式系统,它具有 实时性、可靠性、可裁剪性、较好的兼容性,方便的调试环境等特点。VxWorks 操作系统在内存管理上采用的是简单的最先匹配算法,它从空闲内存块的高 地址开始,当找到第一个满足分配要求的空闲块时就分配所需的内存;在释 放空间时只是把释放的内存块放入空闲表中,并不合并相邻内存块,即不执 行紧缩操作。随着内存块的申请和释放,在整个系统内存分区中,动态内存 存储区混杂着许多正在使用或已经释放的存储块,而这些未使用小块内存区 形成内存外部碎片,请求的内存块和实际大小的差额形成内部碎片。外部碎 片降低内存使用率和系统可靠性,系统变得不稳定,可能导致系统崩溃。由于空间机器人控制系统具有上层任务的串行运行,外部干扰较少,内 部组合运行方式固定,功能层运行模式相对固定以及任务间交互数据较频繁等特点。结合VxWorks嵌入式操作系统的优点和缺点分析,我们可以看出对 于空间机器人控制系统的内存分配与管理不需要沿用复杂的分配和管理算 法,可以使用相对稳定,可靠,简单的策略,使复杂的动态方法静态化。鉴于以上分析,本发明的内存模块中包括定长内存缓冲池、变长 内存缓冲池、定长内存分配队列。定长内存缓冲池内包括若干固定长度的定长内存单元,根据实际需要定 长内存缓冲池可以被分为定长长缓冲池(LBuf)和定长短缓冲池(SBuf)。定长内 存缓冲池中的定长内存单元均采用环形静态存储结构,如图1所示。定长内存分配队列中存储的是定长内存缓冲池中各个定长内存单元的地 址。定长内存分配队列通过消息队列的原理来实现对各个定长内存单元的快;iS^酉己。变长内存缓冲池为可以申请任意长度内存的内存缓冲区,可以作为定长 内存缓冲池的补充。如图2、图3所示,本发明的内存模块的具体分配方法如下1) 缓冲池初始化,分配定长内存缓冲池和变长内存缓冲池的区间, 并将定长内存缓冲池划分为若干定长内存单元;2) 创建定长内存分配队列,将定长内存缓冲池中各个定长内存单元的 地址存储于定长内存分配队列中;3) 任务申请内存消息缓冲时,若申请长度不超过定长内存缓冲池中各个 定长内存单元的固定长度,则优先在定长内存单元申请,同时将定长内存分 配队列中对应的地址信息取出;4) 若申请长度超过定长内存单元的固定长度或定长内存单元己全部被分 配出去,则向变长内存缓冲池申请;5) 当需要释放内存时,仅需将被释放的定长内存单元的地址归还定长内 存分配队列即可。对于定长内存缓冲池被分为定长长缓冲池和定长短缓冲池的情况,其分 配方法如下步骤1中,定长内存缓冲池中的定长内存单元被划分为定长长缓冲池和 定长短缓冲池;步骤3被改为下述步骤 3i)任务申请内存消息缓冲时,若申请长度不超过定长短缓冲池的长度时, 优先在定长短缓冲池申请;如果定长短缓冲池全部被分配出去,继而向定长长缓冲池申请,如果成功将得到一个定长长缓冲池的定长内存单元;3ii)若申请长度大于定长短缓冲池的长度而小于定长长缓冲池的长度时,优先在定长长缓冲池中分配一个定长长缓冲池的定长内存单元;如果这时定长长缓冲池已全部被分配出去,则向变长内存缓冲池申请。可见本发明的内存模块优先分配定长内存缓冲池的内存,并且通过消息队列的原理对定长内存缓冲池内的各定常内存单元进行管理。这样可以使内存申请算法简单快捷,时间非常短。并且,不易出现申请大块数据失败的问题。当系统任务在相互通信时,如果某些进程申请内存资源过多,可能会出现 定长内存缓冲池资源匮乏的情况,这就比较容易造成系统不稳定。因此,为 了保障其它进程的资源申请顺利和系统正常的运行,本发明还在内存模块中 设计了定长内存缓冲池管理模块、定长内存缓冲池记录表。该定长内存缓冲池管理模块用于在系统中建立定长内存缓冲池管理任务, 其优先级为所有任务最高。该定长内存缓冲池管理模块内包括周期监测定时 器和防死锁定时器。该周期监测定时器为周期性信号用于监控定长内存缓冲 池的资源。该防死锁定时器为非周期性信号用于防止内存模块锁死。该定长内存缓冲池记录表用于动态跟踪记录申请内存的任务ID和申 请内存的情况。上述的内存模块对系统内存的管理方法如下1) 定长内存缓冲池管理模块在系统中建立定长内存缓冲池管理任务;2) 将申请内存的任务ID和申请内存的情况存储于定长内存缓冲池记 录表中,动态跟踪并记录更新;3) 当定长内存缓冲池使用量超过设定值(如如3/4)时,定长内存缓 冲池管理模块找出当前占用定长内存缓冲池最多的三个任务,监测其目前 的运行状态;如果处于活动状态则保护现场(记录其当前优先级和相关 状态)后禁用(降低其优先级),同时启动周期监测定时器和防死锁定时器;4) 周期监测定时器时钟周期触发,判断当前定长内存缓冲池运行情况, 如果小于设定值,则释放被禁用的所有任务;反之,则继续査找当前占 用定长内存缓冲池最多的三个任务(被禁任务除外),禁用处于活动状态 的任务;5) 重复步骤3、 4,如超过防死锁定时器的规定时间则释放所有被禁 用的任务,同时记录此异常;6)如定长内存缓冲池资源耗尽,则直接向变长内存缓冲池动态申请 所需资源。
权利要求
1. 空间机器人的内存模块,其特征在于包括定长内存缓冲池、变长内存缓冲池、定长内存分配队列;所述定长内存缓冲池内包括若干固定长度的定长内存单元;所述定长内存分配队列中存储所述定长内存缓冲池中各个定长内存单元的地址;所述变长内存缓冲池为可以申请任意长度内存的内存缓冲区。
2、 如权利要求1所述的内存模块,其特征在于所述定长内存缓冲池 被分为定长长缓冲池和定长短缓冲池。
3、 如权利要求1所述的内存模块,其特征在于所述定长内存缓冲池 中的定长内存单元均采用环形静态存储结构。
4、 如权利要求1或2所述的内存模块,其特征在于还包括定长内存 缓冲池管理模块、定长内存缓冲池记录表;所述定长内存缓冲池管理模块内设有周期监测定时器和防死锁定时器;所 述周期监测定时器为周期性信号用于监控所述定长内存缓冲池的资源;所述 防死锁定时器为非周期性信号用于防止内存模块锁死;所述定长内存缓冲池记录表用于记录申请内存的任务ID和申请内 存的情况。
5、 空间机器人的内存分配方法,基于权利要求1所述的内存模块 实现,其特征在于-1) 内存模块初始化,分配定长内存缓冲池和变长内存缓冲池的区间, 并将定长内存缓冲池划分为若干定长内存单元;2) 创建定长内存分配队列,将所述定长内存缓冲池中各个定长内存单 元的地址存储于定长内存分配队列中;3) 任务申请内存消息缓冲时,若申请长度不超过定长内存缓冲池中各个 定长内存单元的固定长度,则优先在定长内存单元申请,同时将定长内存分 配队列中对应的地址信息取出;4) 若申请长度超过定长内存单元的固定长度或定长内存单元已全部被分 配出去,则向所述变长内存缓冲池申请;5) 当需要释放内存时,将被释放的定长内存单元的地址归还定长内存分配队列。
6、 如权利要求5所述的内存分配方法,基于权利要求2所述的内存 模块实现,其特征在于所述步骤1中,定长内存缓冲池中的定长内存单元被划分为定长长缓 冲池和定长短缓冲池;所述步骤3被改为下述步骤3i)任务申请内存消息缓冲时,若申请长度不超过定长短缓冲池的长度 时,优先在定长短缓冲池申请;如果定长短缓冲池全部被分配出去,继而向定 长长缓冲池申请,如果成功将得到一个定长长缓冲池的定长内存单元;3ii)若申请长度大于定长短缓冲池的长度而小于定长长缓冲池的长度时, 优先在定长长缓冲池中分配一个定长长缓冲池的定长内存单元;如果这时定 长长缓冲池己全部被分配出去,则向变长内存缓冲池申请。
7、 空间机器人的内存的管理方法,基于权利要求4所述的内存模块 实现,其特征在于al)定长内存缓冲池管理模块在系统中建立定长内存缓冲池管理任务;a2)将申请内存的任务ID和申请内存的情况存储于定长内存缓冲池记 录表中,动态跟踪并记录更新;a3)当定长内存缓冲池使用量超过设定值时,所述定长内存缓冲池管 理模块找出当前占用定长内存缓冲池最多的一个或多个任务,监测所述任 务目前的运行状态;如果该任务处于活动状态则保护现场后禁用,同时 启动周期监测定时器和防死锁定时器;a4)所述周期监测定时器时钟周期触发,判断当前定长内存缓冲池运 行情况,如果小于设定值,则释放被禁用的所有任务;如果大于设定值, 则继续查找当前占用定长内存缓冲池最多的一个或多个任务并禁用;a5)重复所述步骤3、 4,如超过防死锁定时器的规定时间则释放所有 被禁用的任务,同时记录此异常;a6)如定长内存缓冲池资源耗尽,则直接向变长内存缓冲池动态申请 所需资源。
全文摘要
本发明提供了一种基于VxWorks的空间机器人中央处理器的内存模块,其特征在于包括定长内存缓冲池、变长内存缓冲池、定长内存分配队列;所述定长内存缓冲池内包括若干固定长度的定长内存单元;所述定长内存分配队列中存储所述定长内存缓冲池中各个定长内存单元的地址;所述变长内存缓冲池为可以申请任意长度内存的内存缓冲区。该内存模块结构设计针对空间机器人特点具有高可靠性。
文档编号G06F12/02GK101281491SQ20081010634
公开日2008年10月8日 申请日期2008年5月12日 优先权日2008年5月12日
发明者万宗杰, 喆 刘, 史国振, 孙汉旭, 贾庆轩, 郑一力 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1