操作系统调度程序间隔计时器 - 它在哪里运行?如何与其互动?

问题描述 投票:0回答:1

因为它与操作系统的进程调度有关:我知道调度程序需要一个类似“时钟”的设备,称为间隔计时器,来跟踪每个进程使用的时间量以及何时切换到就绪进程.

我的问题是 - 间隔计时器在哪里运行?看起来它需要不断地运行,与任何进程并行,以便它可以始终跟踪时间,包括正在运行的进程所使用的时间量。但众所周知,CPU 上任何时刻只能运行一件事,如果该进程正在运行,则意味着间隔计时器无法运行。那么,间隔定时器是用硬件而不是软件实现的吗?如果是这样,如果我正在构建自定义操作系统和调度程序,我将如何在自定义调度程序代码中访问它并与之通信?

process operating-system scheduler freertos rtos
1个回答
1
投票

您所说的“间隔计时器”是一个硬件计时器。它以固定周期产生中断。当“RTOS tick”中断发生时,tick 处理程序(通常):

  • 增加刻度计数器,
  • 更新任何正在运行的软件计时器
  • 如果任务延迟或软件计时器到期,则任何被阻止的任务都会变为就绪
  • 调度程序运行,最高优先级的就绪任务运行。

请注意,这不是调度程序运行的唯一一次。例如,每当任务在延迟、计时器、信号量、互斥体、事件标志或邮箱上显式挂起时,就会发生调度。任何导致正在运行的任务阻塞/等待的 RTOS 调用都会导致调度程序运行。

如果是这样,如果我正在构建自定义操作系统和调度程序,我将如何在自定义调度程序代码中访问它并与之通信?

您只需配置硬件定时器即可生成滴答中断并按上述方式进行。您可以查看现有的开源 RTOS 以了解它是如何完成的。尽管您标记的 FreeRTOS 并不完全传统。 uC/OS-II 可能是一个更好的起点 - 它故意简单,最初是为了教授 RTOS 设计和实现而实现的。描述内核的相关书籍可在 https://weston-embedded.com/micrium-books 以 PDF 形式免费获取。

© www.soinside.com 2019 - 2024. All rights reserved.