Как устроена RTOS — операционная система реального времени
medium

Как устроена RTOS — операционная система реального времени

Операционка для критически важных задач

Есть два основных вида операционных систем: общего назначения и реального времени. Системы общего назначения — это обычные операционные системы в привычном нам смысле: Windows, Linux и Mac OS. Они решают много задач сразу, но иногда могут зависать или тормозить. Но есть устройства и задачи, где на всё нужна моментальная реакция без права на ошибку или зависание. В них используют операционные системы реального времени. Про них и поговорим.

Что такое операционная система реального времени (RTOS)

RTOS — это аббревиатура от real-time operating system, операционная система реального времени. Главное отличие таких систем от всех остальных — в скорости обработки внешних сигналов и своевременном реагировании. В RTOS время реагирования и обработки сигнала должно быть таким, чтобы гарантированно успеть сделать всё, что нужно в данный момент. Чтобы было понятнее, поясним на фитнес-браслете.

Задача фитнес-браслета — отслеживать пульс во время тренировок, следить за физической активностью и точно отсчитывать время. А если тренировки сейчас нет — показывать время, управлять музыкой, будильниками и прочим хозяйством. 

Представим ситуацию, что у нас браслет показывает время на экране постоянно — движутся стрелки, мигают цифры, всё как в обычных часах. Но как только мы нажимаем кнопку или касаемся экрана, браслет бросает всё и начинает обрабатывать наше нажатие — например запускать секундомер. Это значит, что браслет в режиме реального времени реагирует на все наши действия — без задержек и зависаний. При этом в фоне может идти обратный отсчёт, а датчики будут измерять пульс — всё это не должно мешать сразу реагировать на внешние действия.

Планировщик задач

В основе систем реального времени лежат системные часы и планировщик задач. Цель планировщика — обеспечить выполнение всех задач в нужное время и вовремя среагировать на внешнее событие.

Например, в нашем браслете одновременно работают такие задачи:

  • отображение времени на экране;
  • секундомер в фоне;
  • измерение пульса каждые 2 минуты.

Так как каждая задача должна работать в режиме реального времени, а процессор один, то планировщик распределяет эти задачи так:

  1. Выполняет одну команду из функции с отображением времени и ставит её на паузу.
  2. Переключается на секундомер, смотрит, сколько времени прошло, запоминает это и переключается обратно на отображение.
  3. Показывает время на экране, обновляет положение секундной стрелки и переключается на секундомер, и всё по новой.
  4. В этот момент планировщик получает уведомление от внутренних часов, что прошло 2 минуты. Он ставит все задачи на паузу, даёт команду датчику измерять пульс и снова переключается на выполнение других задач.
  5. Теперь планировщик по кругу перебирает уже три задачи: стрелки, секундомер и пульс.

Если это нарисовать в виде схемы, получится так:

Как устроена RTOS — операционная система реального времени

Жёсткие и мягкие системы

Смысл RTOS в том, чтобы система моментально отзывалась на любые события, независимо от того, что происходит у неё прямо сейчас. В зависимости от скорости реакции такие системы делят на жёсткие и мягкие. 

Жёсткие системы гарантируют выполнение любой задачи вовремя, а сам процесс занимает не больше того времени, что прописан в регламентах задач. Например, часть систем автопилотов в авиации работает на таких системах — они должны укладываться в норматив по времени срабатывания в любых нештатных ситуациях. Аварийные системы управления тоже часто работают на RTOS, чтобы успевать вовремя реагировать на происходящее.

При тестировании жёсткой системы задержка выполнения считается ошибкой, и тест проваливается. Даже если потом система сделала всё правильно и вовремя, но не успела вовремя стартовать нужный процесс, тест не пройден и система отправляется на доработку.

Мягкие системы к задержкам относятся чуть проще: это неприятно, но терпимо, если она не превышает определённых значений (например, 0,3 секунды). 

Большинство бытовых систем относится к мягким — если фитнес-браслет среагирует на нажатие на 0,1 секунду позже, ничего критичного не произойдёт. Но если от нажатия до реакции проходит пара секунд — беда. Дешёвые китайские умные часы часто тормозят именно по этой причине — чтобы не тратить время и деньги на оптимизацию, в часы ставят стандартный софт и не подгоняют его под конкретный процессор.

Почему RTOS — это надёжно

RTOS по большей части решает проблему зависаний. 

Допустим, в системе перемкнуло датчик управления и одна из функций, которая за него отвечает, ушла в бесконечный цикл. В обычной ОС это привело бы к тому, что зависла бы программа или весь компьютер. В случае с RTOS это решается так:

  1. Планировщик выполняет по очереди команды и доходит до команды с бесконечным циклом.
  2. Выполняет одну команду оттуда, ставит эту задачу на паузу и идёт к другим задачам.

Получается, что бесконечный цикл тоже выполняется по очереди с другими — это значит, что он не будет мешать работе остальных задач. При этом, если планировщик достаточно умный, в какой-то момент он поймёт, что функция работает неправильно, и либо остановит её, либо перезапустит.

Благодаря тому, что система не зависает даже при попадании в бесконечный цикл, RTOS и получилась такой надёжной системой.

На чём пишут системы реального времени

Главные языки для RTOS — это C и C++ (то есть «Си» и «Си плюс плюс»). Они позволяют учесть особенности процессора и памяти и обеспечить нужное быстродействие.

Ещё RTOS пишут на ассемблерах — когда нужно выжать из железа максимум и сделать супербыструю реакцию на любые события. Но это уже высший пилотаж, и такое встречается редко.

Где применяются RTOS

Системы реального времени применяются везде, где нужна надёжность, скорость или простота.

Например, RTOS управляет системами защиты серверов, кардиостимуляторами, электронной тормозной системой в автомобиле, автопилотом, системами отслеживания биржевых котировок и бронирования билетов. А всё потому, что там нужна моментальная обработка запросов и полное отсутствие сбоев в любых условиях.

С другой стороны, RTOS в простейшем виде стоит в музыкальных брелках, синтезаторах, беспроводных колонках и игрушках — там, где нужно реагировать на действия пользователя, но требования к задержкам не такие критичные. 

Апскиллинг, как говорится
Апскиллинг — это, например, переход с уровня junior на уровень middle, а потом — senior. У «Яндекс Практикума» есть курсы ровно для этого: от алгоритмов и типов данных до модных фреймворков.
Изучить вопрос
Апскиллинг, как говорится Апскиллинг, как говорится Апскиллинг, как говорится Апскиллинг, как говорится
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
medium