Nucleus 实时操作系统分析报告
Nucleus 的好处在于各层协议都提供的是源码 Vxworks 则不提供.
Nucleus 的另一大好处是程序员不用写板支持软件包(BSP) 因为操作系统已经开放给程序员
不同的目标板在操作系统 BOOT 时可以通过修改源码进行不同的配置 对于程序员来说写 BSP 是一项比较繁琐的任务 有了 OS 的源码这项工作就简单多了 同时调试时也可以跟踪到中断寄存器那一级简化了硬件的调试VxWorks 和 pSOS 都必须购买标准的 BSP 模板工开发工作量就比较大了具来写板支持软件包.
当然 Nucleus 作为一个非主流的操作系统其自身也存在着很多不足之处 比如 实时性不够定时中断管理不可靠 I/O管理太简单 操作系统的调试工具太少等.
Nucleus的内核
可移植性
Nucleus PLUS 可用于大多数流行的处理器因为Nucleus PLUS 主要是用标准C 写的 移植到新的处理器系列相对很直接这也就意味着用Nucleus PLUS 开发的应用程序也具有很高的可移植性
可用性
不像其他的商业内核 PLUS 的系统调用名直接表明了它的功能比如 你可以通过Nu_Create_Task 系统调用来创建一个任务 Nucleus PLUS 的系统调用都设计成具有类似的入口参数和返回值类型 PLUS 的对象都不隐式地和别的对象相关 比如 邮箱和任务之间是不相关的 因此用户可以利用多个Nucleus PLUS 对象之间的结合形成混合系统调用
配置
Nucleus PLUS 最终是以C 库的形式提供给用户 你可以选择所需要的部分链入到你的应用程序中 但是 其可裁剪性并不好 如果某些系统功能不要的话 必须在Nucleus.h 的头文件中加一些宏定义 比如定义 那么每个系统调用时都要进行堆栈检查否则就不进行堆栈检查 可以删除的功能并不多 VxWorks的可裁剪性就强多了有300 多个独立模块 微内核6K 最小系统<30K 配全了可达到几百K
特性
快速响应时间 对临界资源的检测时间不依赖于占有该临界资源的线程执行时间的长
短 一旦低优先级线程释放掉临界资源 不管其是否执行完 高优先级线程就会抢占运行 每个任务的执行时间和其他任务的处理时间无关
较高吞吐量 随着任务数目的增多 任务的调度时间为常数
可扩展性 利用现有系统调用的结合可得到新的系统调用
Nucleus PLUS 提供其他实时内核都具有的系统服务 比如 任务控制 任务通信 任务同步 内存管理 可编程的定时器 标准的输入/输出设备接口等 对任务的调度依赖优先级 时间片的方法 可以选择挂起一个任务按照先入先出 FIFO的顺序或按照优先级的顺序 所有的操作系统对象 任务 邮箱 队列 管道等 都可以动态地创建和删除 创建一个对象时要指定指定其控制块的内存区域和其它的数据要求堆栈空间等
Nucleus 在任务调度时 首先查看任务是否可以抢占 如果不能抢占则一直执行到任务完成或任务放弃时间片 否则 依靠优先级进行调度 先调入优先级最高的任务 对于优先级相同的任务则分享时间片 轮流调度