论文部分内容阅读
嵌入式操作系统是运用在对成本、大小、功能、功率多方面有特殊要求的应用中,嵌入式操作系统可根据应用的需求来裁剪软硬件,更加的灵活。嵌入式系统应用的特点是对实时性要求高且资源受限,因而,提高系统资源利用率,是嵌入式操作系统领域研究的焦点。本课题对基于事件驱动的嵌入式操作系统调度内核进行深入研究,实现了基于事件驱动的调度内核。本课题研究了解了现有实时嵌入式操作系统的调度机制,阐述了任务优先级调度机制的,介绍了事件优先级与任务优先级调度内核的区别。介绍了事件优先级的优点和事件驱动调度内核的基本设计思路,明确了事件驱动调度内核要实现的目标,奠定了实现事件驱动调度内核的理论基础。通过分析和设计,事件驱动调度内核采用了事件优先级、单堆栈的设计、采用订阅-发布模式、任务不可重入性、采用静态事件池等设计思路。设计了内核目录结构、数据结构以及各数据结构之间的关系,确定了事件调度的流程。事件驱动的调度内核实现了事件控制块、事件帮助类、事件池、事件池帮助类等数据结构。利用事件就绪组和事件就绪表实现了事件优先级并实现了O(1)时间复杂度查找最高优先级事件;所有任务都是RTC(Run To Compeletion)的,它们统一使用系统栈,实现了单堆栈设计;用户通过使用事件帮助类和事件池帮助类操作事件控制块和事件池,任务只需要注册、处理和产生事件,不需要了解与其他任务如何协作,内核决定调度哪个事件,实现了订阅-发布模式;在任务函数中,用一个标志位表示该任务是否正在执行,若正在执行则退出,实现了任务不可重入。本文最后对内核进行了测试,分别进行了Win32平台测试、Arduino平台[21]测试,分别计算出了在Win32平台下事件驱动调度内核和任务驱动调度内核在执行过程中任务占用的内存,实际应用中,内存节省率会随着任务所占内存大小和任务的执行顺序不同而改变。通过内存比较得出了事件驱动的调度内核更节省内存、更高效;另一方面,使用事件驱动调度内核,编程人员可以很少使用甚至不使用信号量等同步机制,降低编程人员多线程编程难度。通过实验测试并给出相应数据,验证了事件驱动的嵌入式系统调度内核的正确性、可行性、高效性。本课题对提高系统资源利用率、使多线程编程更简单有重要的参考价值。