Найти в Дзене
Разумный мир

Система реального времени. § 1. Реальное время. Главное, успеть

Оглавление

Термин "система реального времени" слышали если не все, то почти все. Те, кто не сталкивался с такими системами, обычно представляют себе что-то очень сложное и очень быстрое. Иногда вспоминают операционные системы ЭВМ, в названии или описании которых упоминается реальное время. В ВУЗ-ах, нас специальностях связанных в вычислительной техникой, тоже часто ограничиваются операционными системами. Между тем, эта тема гораздо шире и интереснее.

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

Что такое "реальное время"? Какое еще время бывает?

Это очень важный вопрос, который обманчиво кажется простым. Действительно, ответ кажется простым и очевидным - реальное время это время в нашем реальном мире. И это ответ правильный, но далеко не полный. Попробуйте определить, будет ли реальным временем, например, полдень в какой либо день? Сложно? Дело в том, что даже в нашем реальном мире понятие "время" довольно широкое.

Поэтому нам потребуются уточнения. Представим, что наша задача связана с каким либо событием, которое должно произойти в определенный момент времени. Например, мы отправляемся на самолете в отпуск. В этом случае точное время суток, вместе с датой, будет для нас определяющим моментом. При чем здесь дата? Скоро узнаем.

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

А теперь давайте подумаем, действительно ли все это варианты задачи действительно различны? На самом деле нет, это ровно одна и та же задача! Причем абсолютно одна и та же. Наш "момент времени", причем реального времени в не менее реальном мире, не является чем то абстрактным. Он отсчитывается от "начала координат" и, по своей сути, определяется интервалом времени, прошедшим от начала координат времени. И вся разница в наших рассмотренных задачах сводится лишь к тому, что мы выбираем в качества начала координат, точки отсчета

Любое время события является интервалом времени от начала координат. Иллюстрация моя
Любое время события является интервалом времени от начала координат. Иллюстрация моя

Интервал времени может измеряться в различных единицах. Это могут быть секунды, которые являются основными единицами времени в системе единиц СИ. Но могут быть и доли секунд. А могут быть и минуты, часы, дни, месяцы, годы, века. Ведь 1 минута равна 60 секундам, 1 день равен 24 часам. И так далее.

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

Таким образом, любой момент времени определяется началом координат и интервалом времени. Изменяя начало координат мы изменяем и значение, соответствующее нашему моменту времени, так как изменяется длительность интервала времени.

Давайте введем понятие события. Наш вылет на самолете является событием, как и пробуждение. Но, если внимательно присмотреться, можно заметить кое-что интересное. Полет на самолете ведь тоже является событием, но протяженным во времени. И вылет является лишь началом этого события. Само событие "полет" является совокупностью трех событий: вылет, полет, посадка. И событие "полет" мы можем описать как время вылета и время посадки, продолжительность полета будет разностью этих времен. Но мы можем принять время вылета за начало координат, при этом время посадки становится длительностью интервала времени от момента взлета (начало координат).

Принять время вылета за начало координат можно в том случае, если нас интересует только то, что происходит внутри события "полет". В противном случае мы не можем считать его точкой отсчета. Но мы можем указать не время посадки, а продолжительность полета, как интервал времени.

Обратите внимание, что само событие реального мира никак не изменяется. Изменяется лишь наша интерпретация связанных с ним временных параметров. Давайте рассмотрим несколько примеров:

  • Время (задержка) срабатывания электромеханического реле. Время срабатывания это длительность интервала времени от начала протекания тока через его катушку до момента замыкания контактов. Таким образом, за начало координат можно принять момент подачи напряжения на катушку. Это само по себе является событием, как и взлет в нашем примере с полетом на самолете. Момент замыкания контактов является вторым событием, как посадка самолета. Собственно движение якоря реле является тем самым событием, длительность которого нас и интересует.
  • Солнечное затмение. В данном случае мы не можем произвольно выбирать начало координат. Время начала (и дата) является предопределенным. И мы должны это учитывать, если не хотим пропустить событие.
  • Спортивные состязания, например, бег. Теперь мы сами определяем точку отсчета, начало координат. Выстрелом из стартового пистолета. И нас интересует лишь время, за которое спортсмен пробежал дистанцию. Интервал времени между выстрелом стартового пистолета и разрыванием финишной ленты.

Это очень разные процессы, разные события. Но все они могут быть описаны в виде временного интервала, отсчитываемого от некоего начала координат. Конечно, это не полное описание процессов, а лишь часть описания. Но именно эта часть нас сегодня и интересует.

Теперь мы можем дать определение понятия "реальное время".

  • Реальное время это интервалы времени, отсчитываемые от некоторых моментов, принимаемых за точки отсчета, и связанные с некоторым событием или процессом нашего реального мира.

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

Время модели

Чем же нас может это реальное время реального мира не устраивать? Например тем, что некоторое событие очень скоротечно или наоборот, слишком длительное. А нам может потребоваться внимательно рассмотреть это событие. Что бы это сделать мы можем построить модель. Причем эта модель совершенно не обязательно должна быть математической. Модель вполне может быть механической или гидравлической. Например, модель солнечной системы

Школьная модель солнечной системы. Фото из интернета
Школьная модель солнечной системы. Фото из интернета

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

Аналоговые вычислительные машины §1. Что это такое и какими они были
Разумный мир6 января 2022

При этом 1 микросекунда времени модели может занимать несколько минут реального времени. В первом случае мы "сжимали" время, длительность события, во втором мы время "растягиваем". Это позволяет внимательно и полностью рассмотреть интересующее нас событие, но возникает вопрос соотнесения времени в модели и реального времени.

Итак, у нас появилось еще одно время - время модели. Это время соотносится, не всегда линейно, с реальным временем.

Машинное время

Теперь представим, что у нас есть математическая модель какого-либо процесса. И мы проводим моделирование на ЭВМ (уже цифровой). Один квант времени модели соответствует одной итерации (одному циклу) программы выполняющей моделирование. Предположим, что квант времени модели равен 1 мкс, а продолжительность одной итерации равна 1 секунде. Тогда событие длительностью 100 мкс будет моделироваться 100 секунд. Можно представить и обратную ситуацию, когда время модели задается с дискретностью, например, 1 год, а одна итерация занимает 1 секунду. Событие длительность 1 век (100 лет) будет моделироваться те же самые 100 секунд.

Итак, у нас есть три разных времени: реальное время, время модели, машинное время. Может показаться, что машинное время нас вообще должно интересовать мало. Но это не совсем так. И мы скоро это увидим. Равно как и время модели. Наиболее интересно нам будет время реальное.

Механическая система реального времени

Начнем с очень простого примера, причем никак не связанного с ЭВМ. Рассмотрим самую банальную механическую пишущую машинку

Механическая пишущая машинка. Фотография из интернета
Механическая пишущая машинка. Фотография из интернета

Какое отношение такая машинка имеет к системам реального времени? Самое прямое! И сейчас вы в этом убедитесь.

Пишущая машинка является системой, каким бы странным это некоторым не казалось. Она объединяет несколько различных узлов, каждый из которых тоже является системой. Но нас будет интересовать только механизм привода рычагов с символами при нажатии на клавиши. Вот он более крупно

Собственно печатающий механизм. Фрагмент ранее приведенной иллюстрации
Собственно печатающий механизм. Фрагмент ранее приведенной иллюстрации

Этот печатающий механизм состоит из нескольких рычагов для каждой клавиши. Примерно так

Устройство привода одного символа печатающей машинки. Иллюстрация из интернета
Устройство привода одного символа печатающей машинки. Иллюстрация из интернета

Нажатие на клавишу, в данном случае "А", передается рычагу "1", который через несколько промежуточных тяг приводит в движение рычаг "3". На рычаге "3" закреплены символы, которые через красящую ленту "6" ударяют по бумаге "5" и оставляют на ней отпечаток. Аналогично устроены и приводы всех остальных символов, за исключением клавиши "пробел". Но "пробел" нам сегодня не интересен.

Теперь рассмотрим событие - печать очередного символа. Это событие состоит из нескольких событий:

  • Удар по клавише с нужной буквой. Причем удар нужен определенной силы.
  • Рычаги, связанные с клавишей, приходят в движение и нужный символ сначала прижимается к красящей ленте, через которую и наносится удар по бумаге. В некоторых машинках символ оказывался прижатым к бумаге все время, пока нажата клавиша. В некоторых, рычаг "3" с символом после удара автоматически отводился на некоторое расстояние от бумаги.
  • При отпускании клавиши рычаги, под действием силы тяжести и пружины, соединенной с рычагом "1", приходят в движение и занимают исходное положение.

А теперь подумаем, есть ли для пишущей машинки какое либо принципиальное ограничение скорости печати? Понятно, что одним из ограничений будет опыт машинистки. Но это ограничение не является принципиальным, так как машинистка постепенно набирается опыта и начинает печатать быстрее. Но есть и чисто техническое ограничение. Попробуйте его найти самостоятельно.

Нашли? Посмотрите внимательнее на последнюю иллюстрацию и последовательность событий, составляющих событие "печать символа". У нас механическая система. Мы можем влиять на скорость движения рычагов и символа из исходного положение до удара по бумаге изменяя скорость и силу удара по клавише. Но мы не можем влиять на скорость возвращения рычагов в начальное положение. Точнее, не может влиять машинистка.

Время возвращения рычагов в начальное положение конечно. Если мы нажмем на другую клавишу до возврата системы рычагов ранее нажатой клавиши в исходное состояние, может возникнуть проблема. Обратите внимание, что рычаги с символами расположены по окружности, но все символы ударяют по бумаге в одном и том же месте. Таким образом, если рычаг предыдущего символа не успел вернуться на место, то движущий рычаг следующего символа мог "зацепиться" за него. И печать нужно было остановить, что бы расцепить рычаги. Тоже самое произойдет при одновременной нажатии двух клавиш.

Безусловно, рычагам не обязательно возвращаться в исходное состояние полностью. Главное, что бы траектории движения двух рычагов "3" не пересекались. Но для упрощения мы будем говорить о полном возврате в исходное состояние.

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

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

Давайте попробуем формализовать все это. У нас есть событие "печать символа", которое имеет конечную длительность. Это событие начинается с события "удар по клавише", начало которого мы можем принять за начало координат, точку отсчета. И у нас есть частота наступления событий "удар по клавише" или "печать символа", что по сути одно и тоже. Но мы же говорим о времени, поэтому выразим частоту через интервал времени. И мы можем все свести к трем случаям

Три различных случая связанных с конечным временем печати символа. Иллюстрация моя
Три различных случая связанных с конечным временем печати символа. Иллюстрация моя

Обозначения понятны из иллюстрации, но все таки уточню. То это время (интервал времени) отклика нашей механической системы (машинки) на событие. Или время обработки события. Это разные понятия, но пока для нас они схожи. Тс это интервал времени определяемый частотой наступления событий. То есть, скорость печати машинистки.

Момент перекрытия событий печати двух символов показан красным цветом. При этом движутся сразу два рычага, что является ошибкой. Второй случай, когда То=Тс является промежуточным между первым и третьим. Обычно его отдельно не выделяют, но я это сделал для наглядности.

И мы можем сформулировать условие корректной работы пишущей машинки:

  • Минимальный интервал времени между двумя смежными событиями "удар по клавише", определяемый скоростью печати машинистки, должен быть не менее времени (интервала времени, длительности события) "печать символа".

Или, математически,

  • Tc ⩾ To

Вот именно это соотношение и определяет, может ли наша система считаться системой реального времени. Причем совершенно безотносительно наличия в системе не только ЭВМ, но и электроники.

Система реального времени. Первое приближение

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

В первом приближении мы можем определить, что

  • Система является системой реального времени, если она успевает обрабатывать события с той скоростью, с которой они поступают в систему. То есть, время обработки (отклика) события То в системе не превышает времени между наступлением двух смежных событий Тс.

В дальнейшем мы будем уточнять это определение, поскольку оно далеко не полное. Но это базовое условие - система должна успевать обрабатывать события реального мира в не менее реальном масштабе времени.

Означает ли это, что система реального времени действительно должна быть чрезвычайно быстрой? Далеко не всегда. И мы скоро это увидим.

Заключение

Системы реального времени могут быть самыми разными. И наличие ЭВМ в таких системах совершенно не обязательно. Мы увидели, что даже обычная пишущая машинка может рассматриваться как система реального времени, если позволяет печать со скоростью большей, чем самая опытная машинистка.

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

Абсолютных систем реального времени просто не существует.

Продолжение следует.

До новых встреч!