如何实现自己的任务调度模块

任务(线程)调度是操作系统最基本的功能,但在工业控制中受成本、实时性或认证等因素可能不可使用操作系统,为了解决复杂的任务调度问题,有些企业会采用一个大循环的方法来规避,但这会导致程序的灵活性下降,其实实现操作系统的基本任务调度(注意,是基本)并不复杂,主要有以下内容:

(1). 链表:一个循环单项链表,用于实现所有任务的分时调度。调用创建任务接口时添加到该链表。

(2). 回调函数:该回调函数就是用户的任务,在该部分实现你自己的代码。

(3). 参数指针:在指针在创建任务时传递到链表的数据结构中,在任务调度时会将指针回传到回调函数中,需要注意的是该对象不能是从栈中申请的。

(4). 系统时间:用提供时间基准,可用硬件定时器实现。

(5). 任务运行时间控制:例如要让任务每1S5S调度一次,需要利用系统时间实现。

 

几点说明:

(1)    该任务调度方法中没有实现上下文切换,实现方法是保存一些寄存器,例如PC寄存器。

(2)    C++实现程序结构会比较清晰,这里利用的是C++的封装特性。

(3)    该任务调度方法中没有使用优先级,即不能实现抢占式调度,但对于硬件中断还是会抢占当前任务。

 

下一博文:工业安全系统中的几个指标:安全性、可靠性、可用性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值