Что такое Hard Real-Time?

«Что такое Hard Real-Time?» — вопрос из категории Архитектура, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Hard Real-Time (системы жёсткого реального времени) — это класс систем, в которых невыполнение задачи в строго заданный временной интервал (дедлайн) считается отказом системы и приводит к критическим последствиям (катастрофа, потеря оборудования, угроза жизни).

Ключевые характеристики:

  • Детерминированность: Время отклика системы должно быть предсказуемым и гарантированным.
  • Неприемлемость опозданий: Пропуск дедлайна так же плох, как и неправильный результат.
  • Приоритет временных ограничений над функциональностью: Своевременность выполнения важнее общей пропускной способности.

Примеры из реального мира:

  1. Авионика: Система управления полётом должна обработать данные с датчиков и скорректировать элероны за строго определённые миллисекунды.
  2. Медицинские устройства: Дефибриллятор должен нанести разряд в точный момент сердечного цикла.
  3. Промышленная автоматизация: Контроллер, останавливающий конвейер при обнаружении человека, должен сработать немедленно.

Почему Node.js не подходит для Hard Real-Time?

  • Event Loop: Обработка длительных синхронных операций блокирует цикл событий, вызывая непредсказуемые задержки.
  • Сборка мусора (GC): Паузы, вызванные сборкой мусора, недетерминированы и могут нарушить временные ограничения.
  • ОС общего назначения: Такие ОС, как Linux или Windows, не гарантируют время отклика из-за планировщика задач, прерываний и виртуальной памяти.

Технологии для Hard Real-Time: Для таких систем используют специализированные ОС реального времени (RTOS), такие как QNX, VxWorks, FreeRTOS, и языки, обеспечивающие детерминированное выполнение (C, C++, Ada, Rust с no_std).