Operating system 如何在一个小型RTOS中实现一个调度器,当任务超时时,它能够中断任务

Operating system 如何在一个小型RTOS中实现一个调度器,当任务超时时,它能够中断任务,operating-system,scheduled-tasks,scheduler,taskscheduler,rtos,Operating System,Scheduled Tasks,Scheduler,Taskscheduler,Rtos,我正在读关于RTOS的书,关于调度器的实现,有一个概念我不理解 设计实时软件任务的一种方法是将执行划分为时间段。这意味着,如果任务T开始执行,但无法在定义的时间段内完成其工作,RTO必须保存T的状态,将其中断并重新排队等待以后执行 假设任务的实现只是RTOS调用的一个过程。我的问题是: 如何实现中断机制?我的意思是,如果RTOS开始执行用户过程,在过程返回之前,它将无法检查任务是否超时,也无法在必要时中断,对吗 据我所知,必须有一种机制,通过该机制,RTO可以在执行每个用户任务的指令之间执行操作

我正在读关于RTOS的书,关于调度器的实现,有一个概念我不理解

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

假设任务的实现只是RTOS调用的一个过程。我的问题是:

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


据我所知,必须有一种机制,通过该机制,RTO可以在执行每个用户任务的指令之间执行操作。我猜这是通过勾号中断实现的,这是否意味着RTO必须在勾号中断处理程序中执行此类操作(重新调度、中断任务、保存状态等)?

任何抢占式调度器,而不仅仅是所谓的RTOS,都有能力停止“正常”进程userland代码的执行流。中断源不一定是“滴答”计时器,也可能是系统设计和配置为可接受的任何其他外部源。从这个意义上讲,外部意味着CPU指令执行之外,不管您希望看到这种区别的粒度有多细。甚至在某些(大多数)现代操作系统中,缓存/内存子系统也是“外部”的,以便于在缺页后从磁盘加载,例如


我觉得这个问题太广泛了,应该转移到更合适的stackexchange站点。

检查抢占式与协作式多任务。(最后一个问题的简短回答是“是”。)要理解RTOS的概念,如上下文切换、分时、调度、高效阻塞、基于优先级的调度等。您可能想在YouTube上观看RTOS视频课程: