如何在微型 RTOS 中实现调度程序,它能够在任务超时时中断任务

How to implement a scheduler in a tiny RTOS which is capable of interrupting tasks when they go out of time

我正在阅读有关 RTOS 的文章,但有一个关于调度程序实现的概念我不明白。

设计实时软件任务的一种方法是在时隙中划分执行。这意味着,如果任务 T 开始执行但无法在定义的时间段内完成其工作,则 RTOS 必须保存 T 的状态,中断它并重新排队以备后用执行。

假设任务的执行仅仅是RTOS调用的一个过程。我的问题是:

如何实现中断机制?我的意思是,如果RTOS开始执行用户程序,它将无法检查任务是否结束- 时间直到程序 returns,也不会在必要时中断它,对吗?

据我了解,必须有一种机制,RTOS 可以通过该机制在执行每个用户任务指令之间执行操作。我想这是通过 滴答中断 实现的,这是否意味着 RTOS 必须在 [=中执行此类操作(重新调度、中断任务、保存它们的状态等) =22=]tick 中断处理程序?

任何抢占式调度程序,不仅仅是所谓的 RTOS,都能够停止 "normal" 用户态代码的执行流。中断源不一定是 "tick" 计时器,也可以是系统设计和配置为接受的任何其他外部源。在这个意义上,外部意味着在 CPU 指令执行之外,无论您希望看到这种区别的粒度如何。甚至 cache/memory 子系统在某些(大多数)现代操作系统中也是 "outside" 以方便在页面丢失后从磁盘加载,例如

恕我直言,这个问题太宽泛了,应该转移到更合适的 stackexchange 站点。