为RTX51Tiny项目添加管程模块※
2013-09-21汪晓兢
单片机与嵌入式系统应用 2013年11期
关键词:机制
汪晓兢
(中国航天科工集团第三研究院 总体设计部,北京 100074)
RTX51Tiny是应用于8051系列单片机的小型多任务实时操作系统,它完全集成在Keil C51编译器中,体积小,简洁高效,能够实现独立不相关的多任务并发执行,具体相关伙伴组任务之间的同步机制。被广泛应用在8051系列单片机的软件开发项目中。
当Tiny系统打开时间片(timeshare≠0)时,系统中多任务由内核按时间片轮转调度,并发运行。但这时只有独立不相关任务能够按时间片并发推进;而对于有共享资源关联的(非伙伴组之间的)相关任务,Tiny却缺少对共享资源争用的管理工具。信号量是一种有效的、对共享资源进行保护的管理工具;管程是具有同等表达能力的另一种高级同步管理工具。
信号量实现两种管理机制:互斥和同步,两者完全由程序员负责。
管程相应实现两种管理机制:互斥锁和条件变量。理论上编译器负责互斥自动加锁部分,条件变量部分仍需程序员负责,这使程序员出错几率减少一半。管程机制的目标是为了更易于编写正确的程序,管程相对信号量更易于检错和控制。
信号量设计方法见参考文献[1]。信号量的优点是通用性,可以做成库函数,一次设计,长久应用。而管程,理论上是编译器依赖,与条件变量一起,随具体项目设计而不同。
Keil C51没有管程支持,影响管程C语言应用的原因大多是一种习惯概念:“管程是语言概念,C语言并不支持它。……要使用管程,就需要一种带有管程的语言。”实际上,对Tiny这样的小系统,富有好奇心和探索欲的程序员可以自己代劳,替代编译器完成管程结构成分的功能。
登录APP查看全文
