ЖУРНАЛ СТА 2/1997

Необходимо отметить, что в одной вычислительной системе могут одно- временно сосуществовать задачи и «жесткого», и «мягкого» реального времени, и что только одна из этих задач, обладающая наивысшим при- оритетом, может быть понастоящему детерминированной. Не стоит особо увлекаться прио- ритетами. Если система нормально работает, когда все задачи имеют оди- наковый приоритет, то и слава Богу. Если нет, то можно присвоить высо- кий приоритет «критической» задаче, и низкий приоритет всем остальным. Если у вас больше одной «критичес- кой» задачи, при недостаточном быс- тродействии системы имеет смысл рассмотреть многопроцессорную конфигурацию или, отказавшись от ПО РВ, перейти к простому цикличес- кому алгоритму. Как правило, разработчики стара- ются свести свою систему реального времени к наиболее простым конфи- гурациям, характерным для систем «жесткого» реального времени, иног- да даже в ущерб эффективности ис- пользования вычислительных ресур- сов. Причина понятна: сложные дина- мические системы весьма трудно ана- лизировать и отлаживать, поэтому лучше заплатить за более мощный процессор, чем иметь в будущем про- блемы изза непредвиденного пове- дения системы. В связи с этим боль- шинство существующих систем реаль- ного времени представляют собой ста- тические системы с фиксированными приоритетами. Часто в системе реали- зуется несколько «режимов» работы, каждый из которых имеет свой набор выполняемых задач с заранее задан- ны-ми приоритетами. Значительная часть особо ответственных систем попрежнему реализуется без приме- нения коммерческих ОС РВ вообще. СИНХРОНИЗАЦИЯ ЗАДАЧ Хотя каждая задача в системе, как правило, выполняет какуюлибо от- дельную функцию, часто возникает необходимость в согласованности (синхронизации) действий, выпол- няемых различными задачами. Такая синхронизация необходима, в основ- ном, в следующих случаях. 1. Функции, выполняемые различны- ми задачами, связаны друг с другом. Например, если одна задача подго- тавливает исходные данные для дру- гой, то последняя не выполняется до тех пор, пока не получит от пер- вой задачи соответствующего со- общения. Одна из вариаций в этом случае — это когда задача при оп- ределенных условиях порождает одну или несколько новых задач. 2. Необходимо упорядочить доступ нескольких задач к разделяемому ресурсу. 3. Необходима синхронизация задачи с внешними событиями. Как прави- ло, для этого используется механизм прерываний, с которым читатель, безусловно, знаком. 4. Необходима синхронизация задачи по времени. Диапазон различных вариантов в этом случае достаточно широк, от привязки момента выдачи какоголибо воздействия к точному астрономическому времени до про- стой задержки выполнения задачи на определенный интервал времени. Для решения этих вопросов в ко- нечном счете используются специ- альные аппаратные средства, назы- ваемые таймером. Давайте рассмотрим все четыре слу- чая более подробно. Связанные задачи Взаимное согласование задач с по- мощью сообщений является одним из важнейших принципов операцион- ных систем реального времени. Спо- собы реализации межзадачного обме- на отличаются большим разнообрази- ем, что не в последнюю очередь приво- дит к обилию терминов в этой области. Можно встретить такие понятия, как сообщение (message), почтовый ящик (mail box), сигнал (signal), событие (event), прокси (proxy) и т. п. Если, чи- тая описание какойлибо ОС РВ, вы встретите уже знакомое название, не спешите делать выводы. Даже один и тот же термин может для разных ОС РВ обозначать разные вещи. Чтобы не запутаться, мы будем в дальнейшем на- зывать сообщениями любой механизм явной передачи информации от одной задачи к другой (такие объекты, как семафоры, можно отнести к механиз- му неявной передачи сообщений). Объем информации, передаваемой в сообщениях, может меняться от 1 бита до всей свободной емкости памяти ва- шей системы. Во многих ОС РВ компо- ненты операционной системы, так же как и пользовательские задачи, способ- ны принимать и передавать сообщения. Сообщения могут быть асинхронными и синхронными. В первом случае до- ставка сообщений задаче производится после того, как она в плановом порядке получит управление, а во втором случае циркуляция сообщений оказывает не- посредственное влияние на планиро- вание задач. Например, задача, послав- шая какоелибо сообщение, немедлен- но блокируется, если для продолжения работы ей необходимо дождаться от- вета, или если низкоприоритетная за- дача шлет высокоприоритетной задаче сообщение, которого последняя ожи- дает, то высокоприоритетная задача, если, конечно, используется приори- тетная многозадачность с вытеснени- ем, немедленно получит управление. Иногда сообщения передаются через отведенный для этого буфер опреде- ленного размера («почтовый ящик»). При этом, как правило, новое сообще- ние затирает старое, даже если послед- нее не было обработано. Однако наиболее часто использует- ся принцип, когда каждая задача имеет свою очередь сообщений, в конец ко- торой ставится всякое вновь получен- ное сообщение. Стандартный прин- цип обработки очереди сообщений по принципу «первым вошел, первым вышел» (FIFO) не всегда оптимально соответствует поставленной задаче. В некоторых ОС РВ предусматривается такая возможность, когда сообщение от высокоприоритетной задачи обра- батывается в первую очередь (в этом случае говорят, что сообщение насле- дует приоритет пославшей его задачи). Иногда полезным оказывается не- посредственное управление приорите- том сообщений. Представим, что зада- ча послала серверу (драйверу) принте- ра несколько сообщений, содержащих данные для печати. Если теперь зада- ча хочет отменить всю печать, ей надо послать соответствующее сообщение с более высоким приоритетом, чтобы оно встало в очередь впереди всех по- сланных ранее заданий на печать. Сообщение может содержать как са- ми данные, предназначенные для пе- редачи, так и указатель на такие данные. В последнем случае обмен может произ- водиться с помощью разделяемых облас- тей памяти, разделяемых файлов и т. п. Общие ресурсы Трудно переоценить важность пра- вильной организации взаимодействия различных задач при доступе к общим ресурсам. Хорошей аналогией может служить обед в многодетной крестьян- ской семье прошлого века. Едокам (задачам) не разрешалось одновре- менно лезть ложками в общую миску (ресурс). Нарушители порядка могли получить от отца семейства (суперви- зора) ложкой по лбу. Ресурс — это общий термин, описы- вающий физическое устройство или область памяти, которые могут одно- временно использоваться только од- ной задачей. Процессорное время то- же представляет собой своеобразный конкурентно используемый ресурс вычислительной системы. Примером физических устройств могут служить ОБЗОР Программное обеспечение 2/97 26

RkJQdWJsaXNoZXIy MTQ4NjUy