2011年9月24日我在网上发布了我编写的Wanlix和Mindows操作系统,源码开放。 Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字节,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 这两个操作系统内核刚写出来,还不为太多人所知,为了让大家能更好的了解这2个操作系统,我将Mindows与广为大家所知的ucosII操作系统做一个对比,见下表:
功能项
|
ucosII
|
Mindows
|
源码开放
|
源码开放
|
源码开放
|
调度特性
|
实时抢占
|
实时抢占
|
支持的任务数量
|
固定支持64个
|
可支持8、16、32、64、128、256共6个等级的任务数量,用户可自行选择。
|
用户入口
|
没有用户入口函数,需要在用户代码里初始化操作系统
|
提供用户入口函数,用户代码中无需考虑操作系统初始化
|
任务自结束
|
不支持,需要使用while死循环构建任务,需要使用“任务删除函数”才可删除
|
支持,没有限制
|
同等优先级任务
|
不支持,每个优先级的任务只能有一个
|
支持任意多的同等优先级任务
|
任务优先级继承
|
支持,是依靠TCB中没有使用的优先级来实现的,继承后的任务优先级并不相同,并非真正的继承
|
支持,继承后任务优先级相同,支持任意多的任务优先级继承
|
动态任务、事件数量
|
需要在编译前静态确定,比如编译前定义只使用15个任务,那么后续动态运行时不能超过15个任务,支持的事件也需要静态确定。
|
任务数量不超出支持的任务上限即可,可动态增加任务,事件也可动态任意增加,只要内存够用就可以。
|
在线调试
|
不支持
|
支持,可通过PC 机上的终端工具与单板通信,实时动态运行任务,并可实时动态查看任务信息等
|
可学习性
|
相关材料只是从全局角度介绍,不利于用户理解
|
从0开始,功能一点点的加入,逐渐完善,用户可以看到操作系统的整个开发过程,并有实例输出可观看,方便理解
|
可移植性可扩展性
|
好
|
好。 可移植性:将用户需要修改的代码集中到一个文件中。 可扩展性:文件按功能划分,扩展时只需修改少量文件,规划出文件结构,用户可在此结构上扩展
|
任务间通信
|
支持信号量、队列、邮箱
|
暂时支持3种信号量和队列,其它功能暂没支持,但很方便扩展
|
应用情况
|
应用多年,可靠性高,支持众多芯片,有众多的使用者,有很多经验可以分享
|
刚开发,可靠性没有经过充分验证,支持的芯片少,无人知晓
|
我将Wanlix和Mindows的开发过程记录下来,就形成了“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能!
|