Густав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления (1087169), страница 108
Текст из файла (страница 108)
Операции над каналами эквивалентны чтению/записи физических файлов. Овя включают функции, как определить, открыть, читать, записать, закрыть, удалить. Дополнительные операции могут устанавливать флаги режима доступа, определять размер буфера и т. д. Благодаря тому что ввод/вывод в файл и на физические устройства и вход/выход процессов трактуются одинаково, каналы являются естественным средством взаи- модействия между процессами в системах "клиент-сервер". Механизм каналов в ()Х1Х может в некоторых случаях зависеть от протокола ТСР/1Р, а в уее1пе)олуз ХТ каналы работают с любым транспортным протоколом.
Следует иметь в виду, что внешне простой механизм каналов может требовать больших накладных расходов при реализации, особенно в сетевых системах (разделы 10.2.3 и 10.6.7). 10.5.4. Удаленный вызов процедур Модель "клиент-сервер" построена на обмене сообщениями "регулярнов' структуры, которые можно передавать, например, через механизм каналов.
Однако основной процедурой обмена данными и синхронизации в среде "клн ент-сервер" является удаленный вызов процедур (1еетоее Ргосеееиге Сад — ллРС) Последний может рассматриваться как вызов подпрограммы, при котором опер~ ционная система отвечает за маршрутизацию и доставку вызова к узлу, где пахе днтся эта подпрограмма. Нотация обращения к процедуре не зависит от того, явпя ется ли она локальной или удаленной по отношенило к вызывающей программе' Это существенно облегчает программирование. В системе реального времени существенно, является КРС блокирующим ип ли нет. Блокирующий КРС не возвращает управление вызывающему процессу, по" ока не закончит свою работу, например пока не подготовит данные для ответа.
Не блокирующие КРС возвращают управление вызывающей процедуре по истече нии некоторого времени (еелееоиг) независимо от того, завершила ли работу вызл" ваемая процедура; в любом случае вызывающая программа получает код идентифицирующий результат выполнения вызова, — код возврата.
Таким обра зом, неблокирующие КРС ьлмеклт важное значение с точки зрения гарантии живу ес ти с нс тем ъ|. ~ обмен информацией между процессами ~0 443 0 б 5. Сравнение методов синхронизации и обмена данными 1)а первый взгляд может показаться, что основные задачи, связанные с паралвым программированием, взаимным исключением, синхронизацией и коммуни,епь Фп" ' „„ями межлу процессами, имеют мало общего, но в сущности — это просто разные обы достижения одной цели.
Методы синхронизации можно использовать для епое, ерга „вязании взаимного исключения и коммуникаций. Аналогично, с помощью технике „.И,еоммуникаций между процессами можно реализовать функции синхронизации лез пззвмного исключения процессов. Ваприлиер, семафор эквивалентен почтовому ящику, в котором накапливаются сообпвп нУлевой Длины, — опеРации з(дпа1 и и а11 эквивалентны операциям рце и дет по>вою ящика, а текущее значение семафора эквивалентно числу помещенных в почтоля(е ящик сообщений.
Аналогично можно организовать взаимное исключение и защиту 1есурсов с помощью почтовых ящиков. В этом случае сообщение выполняет функцию япркера". Процесс, получивший этот "маркер", приобретает право входить в критичеспю секцию или распоряжаться ресурсами системы. При выходе из секции или освобожлепвлл ресурса процесс помешает "маркер" в почтовый ящик. Следующий процесс читает пл почтовою ящика, получает "маркер" и может войти в критическую секцию.
Связь между разными подходамлл ллмсет практическое значение в том случае, если е системе применяется только один из них, а все остальные нужно строить на его основе. Гэвременньее операционные системы, поддерживающие многозадачный режим и операппи в реальном времени, применяют все упомянутые методы. Передача сообщений и поступ к общим областям памяти медленнее, чем проверка и обновление семафора и пеееменной события, и требует лополнительных накладных расходов, Если есть выбор пежлу различными методами синхронизации и взаимодействия, следует использовать юг из них, который лучше решает конкретную проблему — результирующая программа ь1дет понятнее и, возможно, быстрее работать. Кроме того, весьма важно оценить, на'"влько эффективно в имеющейся программной среде реализуются конкретные решеппп Следует избегать незнакомых и неестественных конструкций, пел В Распределенных системах всегда существует риск потерять сообьцение в сети.
еля сетевая система сконфигурирована так, что она контролирует правильность и'Редачи сообщения и имеются средства для повторной передачи утраченных сооб"евилл, то прикладная программа не должна осулцествлять дополнительные проверен. Ок . Обьлчно нижний уровень операционной системы и процедуры сетевого интеР- ~'йса передают на более высокий уровень код возврата, который прикладная про Р ~рамма должна проверить, чтобы убедиться, была ли попытка успешной или нет, пп Ри необходимости повторить ее Есл ели контроль не предусмотрен, например используется служба 1Р без транспор'вого п о протокола ТСР (раздел 9А,9), то прикладная программа несет ответствениость 3 за проверку результата передачи.
Эта операция сложнее, чем это кажется. 'йвжно но использовать сообщение, подтверждающее прием, но нет гарантии, что оно семо в , в свою очередь, не будет потеряно и отправитель не начнет новую передачу. Эта "Робя, блема не имеет общего решения — стратегии передачи сообщений должны в кажевм случае рассматриваться индивидуально Возможным решением является помелать ь и нумеровать каждое сообщение таки"л образом, чтобы отправитель и получаь могли следить за порядком переда"и.
Этот метод используется в некоторых '"пах коммуникационных протоколов (Разделе 9.4). 444 Глава 10. Программирование систем реального вр ни 10.6. Методы программирования в реальном времени '10.6.1. Что такое программа реального времени. ни? е в реальном времени представляет собой раздел муль „„ Программирование в граммирования, который , ко орый посвящен не только разработке взаимосвязанных па, лельных процессов, но и о и временным характеристикам системы, взаимодействую с внешним миром.
, ами реального времени и обычными послеловательными пр . Между программами ал граммами с четко опреде ределенными входом и выходом имеются существенные рвали чия. Некоторые про лемы, в, блемы, возникающие при использовании строго последовател,. ной программы для уп авл управления параллельными по природе процессами, биля описаны в разделе 2.1. ы отличия программ реального времени от последовательных Ниже перечислены отличия п программ. ' Логика исполнения программы определяется внешними событиями. П б е не только с данными, но и с сигналами, поступающими пз ' Программа ра отает не то внешнего мира, например, от датчиков.
° Логика развития программы может явно зависеть от времени. ° Жесткие временные ограничения. Невозможность вычислить результат за определенное время может оказаться такой же ошибк ", р б ой, как и неверный результат (" правильный ответ, полученный поздно, — это неверный ответ"). Результат выполнения программы зависит от общ его состояния системы, н его нельзя предсказать заранее. м ежиме.
Соответственно, из° Программа, как правило, работает в многозадачно р обходимы процедуры синхронизации и обмена д, . у анными межд процессами. Исполнение программы не заканчивается по исчер панин входных данных — она всегда жлет поступления новых данных. ой скорее' Важность фактора времени не следует пеним имать как т еоованис высоко1 Р в смени ти исполнения программы. Скорость исполчен р р ия п ог аммы реального вре ниченийр' ы в амках установленных ограничени должны быть достаточной для того, чтобы в р у агировать на входные данные и сигналы р' и вы абатывать соответствующие в управлять го в смени может великолепно, величины. "Медленная" система реального вр, медленным процессом.
Поэтому скорост ть исполнения программ реального или необходнчо необходимо рассматривать относитсл у р ьно п авляемого процесса или не 1 оцессов тР ' скорости. и . Типичные приложения автоматиза ~ р гни п оизводственных про о ялка 1 мс, а в отдельных случаях— — поряьк буют гарантированное время ответа порялка мс, а в и является эФ' .ьном в смени особенна важными 0.1 мс. При программировании в реально, р . аботка программ ог амм. Соответственно, разра откап 1ак фек напасть ремя ре кции пр р ., отка но связана с параметрами операционной си ., р р стемы, а в аспределеннь тех и локальной е " сети. альном времени требуют специал альп ьной нности программирования в реальн ванин, к Особенно р и и последовательном программиро о ов, не использующихся при пос й сред ники и метод к влиянию на ис о и лнение программы внешней то ые относятся в основном аи1 ' Р .
Н б е важными из них являются перехва Р т п срыв снпых па амет ов. аи олее ва ых) сит алий и непосредственное исп . ольз обработка исключительных (нештатных) с у 10.6.2. Среда программирования Прежде чем переходить к вопросам собственно программирования в реальном зремени, рассмотрим среду, в которой исполняются программы. Срела выполнения может варьироваться от мини-, персональных и одноплатных микрокомпьютеров и локальных шин, связанных с окружающей средой через аппаратные интерфейсы, до Рэспределенных систем "клиент-сервер" с централизованными базами данных и дос- тупом к системе высокопроизводительных графических рабочих станций.