Сегодняшняя статья может показаться несерьезной и не имеющей отношения к теме цикла. Но это совсем не так! Просто многие привыкли рассматривать "системы реального времени" лишь как сложные технические, чаще всего электронные, сущности. Но тема гораздо шире и интереснее, чем кажется на первый взгляд. Давайте попробуем посмотреть с нестандартной, "хитрой", точки зрения на привычные вещи и предметы, которые обычно не связывают с системами реального времени.
Да, статья, как и некоторые другие статьи канала, будет совсем не канонической. В ней не будет строгих определений и сложных формул. Но она важна для понимания сути. И да, сегодня опять не будет ни электроники, ни компьютеров.
Давайте, для начала, возьмем что-нибудь совсем привычное и будничное. Например, заведение общественного питания. Не суть важно, будет это столовая, кафе (некоторые вспомнят, что раньше были и кафетерии), или ресторан. И попробуем посмотреть на все это с точки зрения систем реального времени. И не только.
Система массового обслуживания это тоже система реального времени
Безусловно, системы массового обслуживания это самостоятельная большая тема. Существует и отдельный раздел математики - "Теория массового обслуживания". И наш пример, заведение общественного питания (для определенности будем считать, что это ресторан), как раз является такой системой массового обслуживания. Такой же системой массового обслуживания является сервер. И даже сетевой интерфейс вашего компьютера или смартфона. С точки зрения теории массового обслуживания все они одинаковы.
Если посмотреть "со стороны", то все выглядит примерно так
Голодные люди, в разное время, группами и по одному, приходят в ресторан. Это условно показано в левой части иллюстрации. Пообедав (поужинав) они покидают ресторан и уходят по своим делам. Это показано в правой части иллюстрации. Пока все совершенно не похоже на систему реального времени, нек так ли? Но не спешите с выводами.
С точки зрения теории массового обслуживания, перед нами типичная система массового обслуживания:
- Система массового обслуживания это система, предназначенная для многократно повторяющегося использования при решении однотипных задач.
В нашем случае, однотипной (типовой) задачей является задача накормить посетителя. Каждого в отдельности. При том, что посетителей может быть разное количество.
- Процесс обслуживания это решение системой массового обслуживания возникающей типовой задачи.
Это очень просто определение, ведь посетителей действительно обслуживают. Видимая часть обслуживания в нашем примере осуществляется официантами. Но процесс обслуживания включает в себя и приготовление пищи, и мытье посуды, и обеспечение продуктами, и многое другое.
- Заявка (требование) это объект обслуживания в системе массового обслуживания, для которого решается типовая задача обслуживания.
В нашем случае, каждый посетитель будет являться той самой заявкой. Приход посетителя в ресторан является поступлением заявки на вход системы массового обслуживания. Обслуживание заявки осуществляется внутри системы, мы немного подробнее рассмотрим это чуть позднее. В нашем случае, обслуживание это процесс кормления посетителя. Обслуженная заявка поступает на выход системы и покидает ее. В нашем случае, сытый посетитель уходит по своим делам.
- Поток заявок это последовательность объектов (заявок), подлежащих обслуживанию в системе массового обслуживания.
В нашем случае, поток заявок на входе в систему массового обслуживания это поток голодных посетителей. И здесь мы впервые сталкиваемся с несколькими возможными случаями:
- Поток заявок меньше максимального количества заявок, которые может одновременно обслуживать система массового обслуживания. В этом случае каждая заявка начинает обслуживаться в момент поступления в систему. Задержка в обслуживании отсутствует.
- Поток заявок превышает максимальное количество заявок, которые система массового обслуживания может обслуживать одновременно. В этом случае не каждая поступившая на вход системы заявка может сразу начать обслуживаться. Заявки, которые не могут быть сразу обслужены ставятся в очередь заявок или отвергаются.
Есть и граничный случай, когда поток заявок на входе в точности соответствует возможностям обработки системы. Все еще не видите ничего похожего на систему реального времени? Давайте вспомним самую первую статью цикла
нам нужна вот эта иллюстрация, я повторю ее здесь
Да, на этой иллюстрации речь идет о времени печати символа, времени отклика. Это время является и временем обработки, что мы тоже уже использовали. Но сейчас у нас речь идет заявках и обслуживании. А если мы будем считать заявки событиями? Ведь это, по своей сути, тоже самое. Обслуживание это та же самая обработка. Осталось разобраться со временем.
Ресторан из нашего примера отличается от рассмотренных в предыдущих статьях примеров тем, что может обрабатывать несколько заявок/событий одновременно. Как именно это происходит нам не важно. Обслуживание каждой заявки занимает некоторое время, причем оно может быть разным. Тем не менее, мы можем определить некоторое среднее время обслуживания Тср одной заявки. Если у нас могут одновременно обслуживаться N заявок, то это будет эквивалентно сокращению среднего времени обслуживания в N раз. При "взгляде со стороны", когда мы рассматриваем систему массового обслуживания как черный ящик.
Поток заявок можно рассматривать как некоторое среднее количество заявок в единицу времени. То есть, как среднюю скорость поступления заявок на вход системы. Или как средний интервал времени между двумя последовательными заявками.
Чрезвычайно важно, что речь идет именно средних параметрах, а не мгновенных, как мы ранее рассматривали.
Теперь мы видим, что система массового обслуживания действительно может рассматриваться как специальный случай системы реального времени! Когда поток заявок на входе системы массового обслуживания не превышает ее возможностей каждая заявка обслуживается в реальном масштабе времени. И система массового обслуживания будет работать в режиме реального времени. Если поток заявок превышает возможности системы, то она выходит из реального масштаба времени.
Мы уже знаем, что реальное время в системах может соблюдаться жестко или мягко. Об этом говорилось в предыдущей статье
Если заявка, которая не может быть сразу обработана системой массового обслуживания, ставится в очередь, то с точки зрения системы реального времени, такая система будет являться системой мягкого реального времени. Если же заявка отвергается, то система будет системой жесткого реального времени. Однако, в теории массового обслуживания используется немного иная терминология:
- Система массового обслуживания, в которой поступившая заявка будет поставлена в очередь, при невозможности начать обслуживание сразу, называется системой массового обслуживания с ожиданием. Это соответствует режиму мягкого реального времени для системы реального времени.
- Система массового обслуживания, в которой поступившая заявка будет отвергнута, при невозможности начать обслуживание сразу, называется системой массового обслуживания с отказами. Это соответствует режиму жесткого реального времени для системы реального времени.
Очевидно, что наш ресторан будет системой массового обслуживания с ожиданием. Точнее, с ограниченным ожиданием, так как не каждый посетитель согласится долго стоять в очереди. И будет системой мягкого реального времени.
Но почему система массового обслуживания является лишь специальным случаем системы реального времени? Дело в том, что мы при этом рассматриваем лишь задержку обслуживания заявок. Но совершенно не учитываем, что время обслуживания, время обработки, может не соответствовать каким-либо другим параметрам и требованиям реального мира. Например, ресторан обеспечивает обслуживание без очереди со средним временем обслуживания 30 минут. Но у посетителя есть только 15 минут, иначе он куда-то опоздает. С точки зрения системы, она работает в реальном масштабе времени, ведь очереди нет. Но с точки зрения посетителя этот ресторан не будет являться системой реального времени.
Но ведь система реального времени не просто обеспечивает, но и гарантирует время обработки/обслуживания. В случае ресторана не всегда можно увидеть гарантии. Но в меню может указываться среднее время ожидания блюда (которое включает и время его приготовления), что и является своеобразной гарантией.
Не будем дальше углубляться в теорию массового обслуживания, все таки цикл статей посвящен системам реального времени. Но мы действительно увидели, что здесь много общего.
Такой "мягкий" повар, но тоже система
Давайте рассмотрим одну составляющую часть системы "Ресторан" - повара, который готовит блюда заказанные посетителями. Он тоже является системой реального времени и системой массового обслуживания, причем одновременно обслуживает несколько заявок! Не верите?
Да, повар один, но процесс приготовления блюда зачастую включает в себя ожидание окончания независимо протекающего подпроцесса. Например, приготовление картофельного пюре включает в себя варку картофеля. Пока картошка варится, повар вполне может заняться чем-нибудь другим. Например, начать обжаривать мясо. И в системах массового обслуживания, и в системах реального времени, такое параллельное обслуживание/обработка рассматривается как наличие нескольких каналов обслуживания/обработки. Независимо от физического количества выполняющих обработку объектов.
То есть, и ресторан в целом будет системой массового обслуживания с ограниченным ожиданием (системой мягкого реального времени), и повар, как часть общей системы. Это можно представить так
Варка картошки это один канал обработки, обжарка мяса другой. И они могут выполняться параллельно. Заявки/события показаны жирными точками.
На самом деле, хоть повар и один, варка картошки выполняется не совсем им. Он только положил картошку в кастрюлю, налил воды, поставил кастрюлю на плиту. В процессе варки он непосредственно не участвует, но периодически может проверять готовность. Несколько заказанных посетителями блюд будут являться заявками, которые на вход системы "Повар" переданы системой "Официант". А заказы, к приготовлению которых повар еще не приступил, и образуют очередь.
Но это лишь часть картины, а не вся картина целиком. Варка картофеля занимает некоторое время. Если повар снимет картофель с плиты раньше времени, то картофель будет недоварен. Это соответствует минимальному времени обработки, которое повар (как система) должен соблюдать! Мы подобное уже видели в предыдущей статье. Если картошка варится слишком долго, то она разварится. Это соответствует максимальному времени обработки. Это мы тоже видели в предыдущей статье. Наш повар, как система реального времени должен уложиться в интервал времени от минимального до максимального. Он должен гарантировать, что уложится в этот временной интервал Если конечно хочет и дальше работать поваром. Да, это мягкое реальное время. Что не делает его менее реальным.
Заключение
Как видите, понятие "система реального времени" применимо к довольно широкому кругу сущностей, которые даже в качестве систем рассматриваются далеко не всегда. "Применимо" не значит, что они точно и безусловно и могут называть системами реального времени, особенно, с строгой точки зрения. Но как частный или специальный случай могут таковыми рассматриваться.
Кроме ресторана и повара можно привести в качестве примера теннисиста. Он не будет системой массового обслуживания (хотя может и таковым считаться), но если он перестанет быть системой реального времени, то не сможет отбить летящий в его сторону мяч/шарик (которые являются событиями). Или вратаря. Вы можете и сами придумать множество примеров.
Системами реального времени можно считать и системы автоматического управления и регулирования. Они тоже будут специальным случаем. Но это настолько большая тема, что требует отдельного рассмотрения. И, возможно, этому будет посвящена отдельная статья. Которая будет не о ТАУ, но системах реального времени.