Существует два основных вида операционных систем: общего назначения и реального времени. Про первый вид мы говорим постоянно на канале, к ним относят, например дистрибутивы, основанные на ядре Linux, системы Windows, MacOS.
Включаете рабочий или домашний ПК (ноутбук) и загружается как-раз таки операционная система общего назначения. Она может решать большое количество задач, но также она может иногда подвисать, крашиться, сыпать различного рода ошибками и иными BSODами. Мы, сквозь, зубы системе это прощаем и пытаемся исправить (если это возможно) появившиеся косяки.
Но существуют устройства и задачи, которые они выполняют, где необходима моментальная реакция на действия пользователя или других устройств, а права на ошибку или зависание просто-напросто нет. В таких устройствах используются операционные системы реального времени (или RTOS), про которые ниже пойдет речь.
Реально время и варианты его существования
Прежде чем перейти непосредственно к тому, что такое RTOS и чем они отличаются от обычных ОС, нужно понять что такое «реальное время». Если совсем упростить, то это такой режим работы программы (системы), когда время обработки данных выполняется за некоторое малое время (обозначим его для будущего удобства t), причем это самое время (то есть, t) подбирается так, чтобы пользователю казалось, что обработка происходит без разрыва. Например, когда вы смотрите видео со скоростью 25 кадров в секунду, то t будет равняться 1/25 секунды. Если кадр не отобразится за обозначенное время, то реально время нарушится.
Реальное время можно разделить на «жесткое» и «мягкое». В первом случае нарушение времени на обработку данных не допускается совсем, во втором варианте допускается, что программа может не уложиться в отведенное на обработку время. Пример с видео является примером мягкого реального времени, когда в случае чего можно кадр пропустить. У пользователя произойдет подвисание или слегка ухудшится качество, но поток при этом поступать не перестанет.
Некоторые специалисты в области информатики относят к примерам систем с мягким реальным временем пользовательские операционные системы навроде Windows или MacOS, дистрибутивы Linux (то, что вначале было отнесено к ОС общего назначения). Спорить или утверждать обратное не могу, так как не имею достаточного количества знаний в плане теории ОС и практики применения этих знаний. Просто сделаю это примечание, чтобы «умники» в комментариях не начали недовольно ворчать.
RTOS и принципы их работы
Real-time operating system или операционная система реального времени отличается от систем общего назначения скоростью обработки внешних сигналов и быстром реагировании на них. Эти показатели должны быть такими, чтобы гарантировано сделать все необходимое в нужный момент. Простым примером RTOS является система бортового компьютера самолета, анализирующая поступающие от различных датчиков данные. Любое недопустимое изменение сведений должно тут же быть отработано в соответствии с прописанными алгоритмами.
В основе любой RTOS лежит три элемента: задача, системные часы и планировщик. Задача - это та последовательность действий, которая должна быть выполнена, системные часы позволяют отсчитывать необходимое для решения задач время, планировщик обеспечивает выполнение имеющихся задач в нужно время и реагирование на любое внешнее событие. Планировщик работает так, что в случае невозможности выполнить какую-либо задачу он не останавливает всю систему с ошибкой, а просто ставит выполнение задачи на паузу и идет к другим задачам.
В случае с бортовым компьютером самолета, система не будет пытаться достучаться до звукового сигнала оповещения о проблеме, если этот сигнал окажется недоступным, а перейдет к другим задачам (например, к запуску светового сигнала).
«Мягкие» и «жесткие» RTOS
Теперь совместим то, о чем говорили в начале с имеющимися на данный момент данными о операционных системах реального времени. Смысл RTOS в реакции на любые внешние события независимо от того, что происходит внутри самой системы. По скорости реакции RTOS делят на мягкие и жесткие.
В мягких системам реального времени задержки в реакции допускаются в строго очерченных пределах. Хорошим примером такой мягкой системы является программа, управляющая фитнес-браслетом. Если она среагирует на нажатие пользователя на 0,1 секунду позже, то ничего страшного не случится, ну а если задержка составляет более пары секунд, то самое время бить тревогу. Поэтому китайские фитнес-браслеты, купленные непонятно где безбожно тормозят - внутри установлена не операционная система реального времени, а нечто обычное, причем явно не оптимизированное (например, кастомный Android).
Жесткие системы реального времени подчиняются строгим регламентам в плане реагирования на внешние сигналы. Опять-таки возвращаясь к авиации можно привести в пример автопилоты, которые обязаны укладываться в нормативы при срабатывании в нештатных ситуациях. Автоматизированные системы пожаротушения или другие аварийные системы тоже не имеют права на ошибку и потому перед выпуском в свет проходят огромное количество тестов.
Инструменты создания RTOS
Главными языками программирования для операционных систем реального времени являются Си, «плюсы» (C++) или ассемблер. Да, на удивление, даже такой, казалось бы древний язык, по-прежнему используется при создании устройств и систем, работающих в режиме реального времени. Почему именно эти языки? Они позволяют учитывать особенности «начинки» устройства (процессора, памяти и пр.) и обеспечивают нужное быстродействие.
Подведем итоги
Естественно, это статья обзорная, можно назвать ее информативно-популярной и не претендующей на соответствие теории информатики и информационных систем. Я постарался на простых примерах и, как говорится, на пальцах рассказать про операционные системы реального времени, их назначение и принцип работы.
За более подробной информацией, верной с точки зрения теории, могу отправить вас в специализированную литературу, например, за авторством Эндрю Таненбаума. На канале же мы с вами проще стараемся быть, для народа.