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

时间:2018-11-08 13:07:54

标签: operating-system scheduled-tasks scheduler taskscheduler rtos

我正在阅读有关RTOS的内容,其中有一个我不了解的有关调度程序实现的概念。

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

比方说,任务的实现仅仅是RTOS调用的过程。我的问题是:

如何实现中断机制?我的意思是,如果RTOS开始执行用户过程,它将无法检查任务是否超时。该过程返回,或者在必要时也无法中断它,对吧?

据我了解,必须存在一种机制,RTOS可以通过该机制在执行每个用户任务的指令之间执行操作。我想这是通过 tick中断实现的,这是否意味着RTOS必须在 tick中执行此类操作(重新计划,中断任务,保存其状态等)。中断处理程序

1 个答案:

答案 0 :(得分:1)

任何抢占式调度程序,不仅是所谓的RTOS,都可以停止用户域代码的“正常”执行流。中断源不一定是“滴答”计时器,而是系统设计和配置为可以接受的任何其他外部源。从这个意义上说,外部意味着在CPU指令执行之外,但是您希望看到这种区别的粒度如何。在某些(大多数)现代操作系统中,即使是高速缓存/内存子系统也位于“外部”,以利于在页面未命中后从磁盘加载,例如

恕我直言,这个问题范围太广,应该移到更合适的stackexchange网站上。