【发布时间】:2018-11-08 13:07:54
【问题描述】:
我正在阅读有关 RTOS 的内容,但有一个关于调度程序实现的概念,我不明白。
设计实时软件任务的一种方法是将执行划分为时隙。这意味着,如果一个任务T 开始执行但它不能在定义的时间段内完成它的工作,RTOS 必须保存T 的状态,中断它并重新排队以供以后执行。
假设任务的实现仅仅是 RTOS 调用的过程。我的问题是:
如何实现中断机制? 我的意思是,如果 RTOS 开始执行用户程序,它就无法检查任务是否超时,直到程序返回,必要时也不能中断,对吧?
据我了解,必须有一种机制,RTOS 可以通过该机制在每个用户任务指令的执行之间执行操作。我猜这是通过tick中断实现的,这是否意味着RTOS必须在tick中执行这种操作(重新调度、中断任务、保存它们的状态等)中断处理程序?
【问题讨论】:
-
检查抢占式与协作式多任务处理。 (您最后一个问题的简短回答是“是”。)
-
要了解 RTOS 概念,如上下文切换、分时、调度、高效阻塞、基于优先级的调度等,您可能想在 YouTube 上观看 RTOS 视频课程:youtube.com/…
标签: operating-system scheduled-tasks scheduler taskscheduler rtos