Nucleus PLUS系统架构和组件

(一)组件和软件组件方法学

1,软件组件(Software Component)的定义

从一般意义上来说,组件(Component)是系统中可以明确辨识的组成部分,一个不透明的功能实现体。软件开发中,组件是对数据和方法的简单封装,它具有约定式规范的接口。组件具有面向对象的特征,具有功能独立性、高度的可重用性、与语言和平台无关性等特点。软件组件是软件系统中具有一定意义的、相对独立的构成部分,是一个通过规定的接口提供一组服务代码的执行单元,这个执行单元的特点是高内聚、低偶合。组件的接口和组件的实现相分离,调用者只需要知道接口并访问接口就可以使用组件。接口相对固定,组件功能和实现的变化不应该引起接口的变化。软件组件是软件复用的关键技术。

2,软件组件方法学:

组件技术是90年代初出现的一种软件开发技术,它是在结构化设计和面向对象技术的基础上发展起的,是面向对象技术之后的软件开发的标准方法系,是面向对象的开发技术的延伸。软件组件开发主要是开发与维护系统构造过程中用到的组件。将软件组件作为一个单独的过程,目的是将组件作为构造软件的“零部件”。有了组件的概念和组件技术,软件开发就可以借鉴建筑学和现代制造业中成功的实例,先构造出软件的总体架构,然后根据组件重用技术,在架构上根据需要组装上所需功能的组件,最后形成应用程序。版本更新只须用新的组件替换旧组件即可实现,而无须改动整个程序,也不需要对整个程序进行重新编译。

(二)Nucleus PLUS系统架构

Nucleus PLUS系统采用软件组件的形式构成以增加系统的代码清晰性、可靠性和可重用性,使系统模块化、易于维护。Nucleus PLUS由多个软件组件构成,每个组件都有唯一的用途和特定的外部接口。每个组件的使用通过这些接口的调用实现,而组件内部的数据结构绝大多数情况下都不可以被其他组件直接访问。这种组件架构使得Nucleus PLUS的每个软件组件可以被轻松的替换和重用。

每个软件组件都由两个头文件和若干个源文件组成,其中源文件大多用C语言写成,少数用汇编语言写成。头文件中一个用于数据类型定义和常量声明,另外一个用于声明组件的外部接口。下表是每个组件文件的概述,组件不一定还包含表中所有的文件,其中XX标示组件名缩写。

在支持用户模式和管理模式的处理器架构上,Nucleus PLUS 内核和所有应用任务都运行在管理模式。这种做法实现简单、任务系统调用开销小,但是每个任务都能访问任何资源。

所有需要调用Nucleus PLUS系统服务或者使用Nucleus数据类型的用户代码源文件中都要包含头文件“NUCLEUS.h”,该文件包含数据类型、常量定义以及Nucleus PLUS服务的所有函数声明。事实上,“NUCLEUS.h”中所有以“NU_”开头的函数实质上在Nucleus各组件源代码中是不存在的。绝大多数Nucleus函数都有一个真正执行操作的函数(各组件中定义)和一个调用真正执行函数前对用户调用进行错误检查的“壳”函数。错误检查功能是可以停用的,不定义宏标示“NU_NO_ERROR_CHECKING”即可。NU_NO_ERROR_CHECKING的定义与否决定”NU_“函数真正映射的组件函数。

(三)Nucleus PLUS的组件

Nucleus Plus 系统共16个组件,分别讨论如下(主要描述组件的功能):

1,通用服务组件Common Service Component(CS)

所有的Nucleus PLUS组件控制的控制数据结构采用的都是链表,CS即负责提供链接结构和链表操作函数,包括添加、删除节点。

2,初始化组件Initialization Component(IN)

负责初始化和启动Nucleus Plus 系统。初始化和启动过程包含两部分:具体硬件目标板依赖部分(处理器相关和板级初始化)先初始化,然后是Nucleus PLUS各组件和用户程序的初始化。

INT_Initialize 子程序在Nucleus PLUS 系统中是最先运行的,负责所有与目标硬件板相关的初始化。INT_Initialize 完成后将控制权转移到高级Nucleus PLUS 初始化子程序INC_Initialize上并不再返回。INC_Initialize调用所有的Nucleus plus组件初始化函数、调用Application_Initialize创建用户任务等对象,最后将控制权交给调度函数TCT_schedule,系统启动完毕。初始化具体过程参见博文”Nucleus
PLUS的启动、运行线程和中断处理
“。

3,线程调度组件Tread Control Component(TC)

负责Nucleus Plus的抢占式实时任务和HISR的调度管理。每个用户应用由多个任务组成,一个任务就是具有特定目的的半独立程序片段,任务处于五种状态之一--运行、就绪、挂起、终止、完成。任务具有不同的优先级,高优先级任务能够抢占低优先级任务,同优先级任务按照进入”就绪状态“的顺序调度,优先级从0-255递减。

Nucleus PLUS每一个任务都有一个控制结构体称为线程控制块Thread Control Block(TCB)-TC_TCB,任务支持动态的创建和删除,TC通过一个双向链表TCD_Created_Tasks_List管理所有的任务,全局变量TCD_Total_Tasks表示已创建的总任务数。

TCD_Priority_List是一个大小为256的TCB指针数组(数组大小与Nucleus PLUS优先级数相同),每个数组指针是一个表的头部(某元素为空则表示没有该优先级的任务),该表的元素是具有相同优先级的进入就绪状态的任务的TCB指针。即Nucleus PLUS维护一个指针数组来调度不同优先级的任务链表。

任务调度过程见博文”Nucleus PLUS任务调度“。

HISR是中断处理例程的下半部分,能够访问绝大多数Nucleus PLUS任务(不可自动挂起)。HISR也是抢占式的,其优先级0-2递减。HISR由LISR激活,因此必须事先创建并注册。

HISR的管理和任务的管理是类似的,每个HISR都有一个控制结构TC_HCB和独占的堆栈,TCD_Created_HISRs_List是一个存储已创建HISR例程的双向链表的表头,TCD_Total_HISRs表示已创建的HISR总数。另外TC会维护两个已激活的HISR表,表项分别是三个优先级已激活的HISR双向链表的头和尾。TC还通过链表维护LISR例程,包括中断向量注册和LISR入口函数。TC组件提供了HISR的创建、删除、激活等函数。

4,时钟组件Timer Component(TM)

负责管理所有的Nucleus Plus 定时器设备。Nucleus Plus 的基本定时单元为一个Tick,它相当于一次硬件定时器中断。系统层面上,定时器用于任务管理-定时睡眠和唤醒等;用户应用程序层面,定时器用于那些需要有超时处理机制的地方。

定时器支持动态创建/删除,每个定时器都有一个控制结构TM_TCB、TMD_HISR或TM_APP_TCB,分别用于系统任务定时器、HISR定时器和应用程序专用计时器。TM通过链表维护已创建的、已激活的定时器列表。TM提供一个系统定时器TMD_System_Clock。

定时器函数包括创建、开始、停止、重置、删除、超时处理等。

5,邮箱组件Mailbox Component(MB)

下述Nucleus PLUS进程间通信机制邮箱、队列、管道、信号量和事件组详见博文”Nucleus进程间通信(IPC)方式“。

负责管理Nucleus Plus 所有的邮箱服务,提供一种低开销的进程间通信机制。每个邮箱包含一个长度为4个32-bit字的消息。邮箱可以由用户动态创建/删除,支持任务的挂起和恢复。

每个邮箱都有一个控制块Mailbox Control Block (MCB) MB_MCB,MB通过双向链表维护已创建的邮箱。邮箱的任务挂起/唤醒支持FIFO顺序和任务优先级顺序进行,也是通过维护一个双向链表进行,每有一个任务挂起在邮箱上就会创建一个控制块MB_SUSPEND结构体。

MB提供了邮箱的创建、删除、消息发送/获取、重置、清空、广播等函数。

6 队列组件Queue Component(QM)和7管道组件Pipe Component(PI)

分别负责管理所有的Nucleus Plus 队列服务,管理所有的Nucleus Plus 管道服务。两部件的管理与MB是类似的,区别在于:队列的消息是一个或者多个32-bit字,管道的消息是一个或者多个8-bit字节。

8,信号量组件Semaphore Component(SM)

负责管理所有的Nucleus Plus 信号量服务,用于多个任务间的同步。信号量支持动态创建/删除,SM可提供的信号量计数范围是0-4,294,967,294,其管理与MB类似。

9,事件组件Event Flag Component(EV)

负责管理所有的Nucleus Plus 事件组服务,每个事件组包含32个事件标示(event flag),即32位无符号整型数的每个位即是一个event flag(为1表示事件发生,0表示未发生)。其管理与MB类似。

10,存储分配组件Partition Memory Component(PM)

负责管理所有的Nucleus Plus 分区内存,分区内存的内存池指的是由用户指定的内存总数目固定、每个分区(partition)的字节数也确定的内存。分区内存支持动态创建和任务的挂起/唤醒(FIFO或者任务优先级顺序)。

每个分区内存都需要一个控制块Partition Memory Control Block (PCB)-PM_PCB(额外占据内存,不包含在分区内存内),PM通过双向链表维护所有创建的分区内存。每个分区内存的可用分区由一个null结尾的单链表控制,每个可用分区由头结构体PM_HEADER开始。

11,动态内存组件Dynamic Memory Component(DM)

负责管理所有的Nucleus Plus 动态内存服务,动态内存池的起始位置和长度由用户指定,支持动态创建/删除和任务挂起/唤醒。动态内存的分配按照first fit算法分配,没有固定字节数的分区。DM的管理与PM类似。

12,I/O驱动组件Iinput/Output Driver Component(I/O)

负责管理所有的Nucleus Plus 输入/输出设备的驱动服务,提供了一种通用的、相似的s驱动服务接口,包括初始化、分配、释放、输入/输出、设备状态获取和服务申请终止等服务。

13,错误处理组件Error Component(ER)

负责管理所有的Nucleus Plus 系统错误。

14,历史组件History Component(HI)

负责Nucleus Plus的历史设备管理。

15,许可证组件License Component (LI)

负责Nucleus Plus的许可证管理。

16,版本控制组件Release Component(RL)

负责Nucleus Plus 的版本管理。

Nucleus PLUS系统架构和组件,布布扣,bubuko.com

时间: 2024-09-29 17:29:31

Nucleus PLUS系统架构和组件的相关文章

如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?

引言 在我的博客中,我曾经翻译了几篇关于ECS的文章.这些文章都是来自于Game Development网站.如果你对这个架构方式还不是很了解的话,欢迎阅读理解 组件-实体-系统和实现 组件-实体-系统. 我发现这个架构方式,是在浏览GameDev上的文章的时候了解到的.很久以前,就知道了有这么个架构方法,只是一直没有机会自己实践下.这一次,我就抽空,根据网上对ECS系统的讨论,采用了一种实现方法,来实现一个. 我很喜欢做游戏,所以同样的,还是用游戏实例来实践这个架构方法.我将会采用cocos2

大型网站系统架构的演化(转)

前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线.所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就:不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索.下单.支付,例如腾讯,要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各

ios系统架构及常用框架

1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media layer).核心服务层(Core Services layer).核心操作系统层(Core OS layer)如图: (1) 触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作.它包括以下这些组件: Multi-Touch Event

软件体系结构---安卓系统架构之应用程序框架层分析---1

本博客只介绍安卓系统架构中的应用程序框架层 什么是应用程序框架? 应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性.其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响. 而对于安卓来说:Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则.我们在开发应用时就是在这个框架上进行扩展.在这个框架中我们可以完全访问核心应用程序所使用的API框架,即我们

大型网站系统架构的演化

前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线.所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就:不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索.下单.支付,例如腾讯,要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各

Android基础入门教程——1.1 背景相关与系统架构分析

Android基础入门教程--1.1 背景相关与系统架构分析 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google I/O大会上推出的Android M,有趣的是Android系统的命名都是以点心来命名的,下述表是15个Android版本名称,对应API号以及发布时间! 系统版本名称 API版本号 发布时间 Android 1.5:Cupcake:纸杯

Android 系统架构

Android 系统从下至上分为四层:Linux 内核.Android 核心库及Android 运行时环境(Android Runtime). 应用程序框架以及应用程序等. Linux 内核(Linux Kernel) Android 的核心系统服务依赖于Linux 2.6,例如,安全.内存管理.进程管理.网络堆栈.驱动模型. Linux Kernel 也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务. 除了标准的 Linux 内核以外,Android 系统还增加了内核的驱

开箱即用!Android四款系统架构工具

开箱即用!Android四款系统架构工具_天极网 一款功能强大且实用的开发工具可以为开发者简化开发流程,提高工作效率,允许开发者在应用开发本身投入更多的时间和精力,从而提高作品质量.本文就为大家分享4款实用的Android应用架构工具. 开发者若想开发出一款高质量的应用,一款功能强大的开发工具想必是不可或缺的.开发工具简化了应用的开发流程,也能使开发者在应用开发本身投入更多的精力.本文就为大家带来4款实用的Android应用架构工具. 1. Spring for Android Spring f

大型网站系统架构演化之路

前言 一.最开始的网站架构 二.应用.数据.文件分离 三.利用缓存改善网站性能 四.使用集群改善应用服务器性能 五.数据库读写分离和分库分表 六.使用CDN和反向代理提高网站性能 七.使用分布式文件系统 八.使用NoSql和搜索引擎 九.将应用服务器进行业务拆分 十.搭建分布式服务 小结 前言 一个成熟的大型网站(如淘宝.天猫.腾讯等)的系统架构并不是一开始设计时就具备完整的高性能.高可用.高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计