概述
任务(线程)调度是操作系统最基本的功能,但在工业控制中受成本、实时性或认证等因素可能不可使用操作系统,为了解决复杂的任务调度问题,有些企业会采用一个大循环的方法来规避,但这会导致程序的灵活性下降,其实实现操作系统的基本任务调度(注意,是基本)并不复杂,主要有以下内容:
(1). 链表:一个循环单项链表,用于实现所有任务的分时调度。调用创建任务接口时添加到该链表。
(2). 回调函数:该回调函数就是用户的任务,在该部分实现你自己的代码。
(3). 参数指针:在指针在创建任务时传递到链表的数据结构中,在任务调度时会将指针回传到回调函数中,需要注意的是该对象不能是从栈中申请的。
(4). 系统时间:用提供时间基准,可用硬件定时器实现。
(5). 任务运行时间控制:例如要让任务每1S或5S调度一次,需要利用系统时间实现。
几点说明:
(1) 该任务调度方法中没有实现上下文切换,实现方法是保存一些寄存器,例如PC寄存器。
(2) 用C++实现程序结构会比较清晰,这里利用的是C++的封装特性。
(3) 该任务调度方法中没有使用优先级,即不能实现抢占式调度,但对于硬件中断还是会抢占当前任务。
下一博文:工业安全系统中的几个指标:安全性、可靠性、可用性
最后
以上就是仁爱西装为你收集整理的如何实现自己的任务调度模块的全部内容,希望文章能够帮你解决如何实现自己的任务调度模块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复