Главная » Мануалы

1 ... 3 4 5 6 7 8 9 ... 32


Пакет с процедурными гнездами

Пакет с непроцедурным

гнездом

Задача с гнездами входов



Соединительная связь (вызов процедуры, вызов входа, доступ к информации)

Очередность доступа (для случаев, когда связи не упорядочены сверху вниз или слева направо)

Поток данных


Не до конца определенный модуль (называемый облачком, пузырьком, аморфным концептуальным элементом или функциональнойединицей)

Рис. 3.1. Основные условные графические обозначения для описания архитекч туры систем.

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



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

Связи с пакетами могут быть процедурными и непроцедурными. Процедурные связи соответствуют вызовам обыкновенных процедур, объявленных в спецификации пакета. Непроцедурные связи указывают на доступ к другим внутренним элементам пакета, например к внутренним переменным, объявленным в его спецификации.

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

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

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

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

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




в. request

Условный вызов

select

в. request; else

alternative ACT10IM; end select;

Временной вызов

У

select

в, request; or

delay t;

alternative action; end select;

Стандартный вход


Рис. 3.2. Обозначения на структурном графе различных вариантов обращений к входу.

На рис. 3.2 и 3.3 иллюстрируются различные варианты рандеву и приводятся соответствующие им графические обозначения. Как показано на этих рисунках, вызовы входов разделяются на безусловные, условные и временные, а их прием может происходить в фиксированном порядке, в порядке поступления (первым пришел - первым обслужен) или в зависимости от определенных условий. Вызываемая задача может также прекратить ожидание вызова входа по истечении установленного интервала времени.

На рис, 3.2 изображен новый символ со стрелкой, загнутой назад, которая означает, что вызывающая задача не может ждать приема вызова неопределенно долго. Эта особенность задачи может выражаться в двух формах. Если задержка вообще недопустима, то вызов называется условным, и альтернативные действия (ALTERNATIVE-ACTION)I задаются в операторе ELSE. Если же допускается задержка на время Т, то вызов называется временным, а допустимое время задержки Т

Безусловный вызов




accept A; do,.. end; - - КРИТИЧЕСКАЯ СЕКЦИГГ

OTHER A I!ROCESSING:

accept B: do... end: - - КРИТИЧЕСКАЯ СЕКЦИЯ

OTHER B PROCESSINC;

(з) Фиксированный порядоч.


accept А do ... end; - - КРИТИЧЕСКАЯ СЕКЦИЯ OTHER A PROCESSING;

accept В do ... end; - - КРИТИЧЕСКАЯ СЕКЦИЯ OTHER B PROCESSING; lend select;

(6) В порядке поступпенин (выборочное ожидание!.


у = FALSE С

select

wtien X = >

, accept А do,.. end; - - КРИТИЧ ЕСКАЯ СЕКЦИЯ OTHER A PROCESSING;

when у = > 1 t accept В do... end; - - КРИТИЧЕСКАЯ СЕКЦИЯ OTHER B PROCESSING; end select;

(s) Обусповг.енный порядок.


accept A do.,. end; - - КРИТИЧЕСКАЯ СЕКЦИЯ OTHER A PROCESSING;

accept В Jo ... end; - - КРИТИЧЕСКАЯ СЕКЦИЯ 0THER B PR0CESS1NG;

delay T;

DELAY PROCESSING; end select;

{г) С выделенИ5М лимита времени, .

Рис. 3.3. Обозначения на структурном графе различных вариантов выполнения оператора приема при вызове входа. {Замечание: точки означают нали-,чие защиты; относящееся к точке пояснение указывает условие, при котором данный вход закрыт.)



устанавливается в операторе OR. В обоих случаях могут выполняться альтернативные действия.

Для наглядного представления входов, обращения к которым принимаются в фиксированном порядке, на структурном графе стрелки доступа либо перечеркиваются ориентированной дугой, направление которой соответствует порядку приема вызовов, либо нумеруются в заданном порядке (рис. 3.3, а). Если обращения к входам принимаются по принципу выбора с ожиданием в соответствии с дисциплиной первым пришел - первым обслужен (т. е. в порядке поступления), то, как показано на рис. 3.3, б, совокупность гнезд, соответствующих этим входам, охватывается контуром или перечеркивается. Входы, которые игнорируются до тех пор, пока не будет снята защита, помечаются точкой, располагаемой рядом со стрелкой доступа (рис. 3.3,в). Возможность выхода из состояния выборочного ожидания по превышению лимита времени отображается с помощью гнезда-псевдовхода, обеспечивающего вьшолнение альтернативных действий при возникновении задержки (рис. 3.3, г). Для вызываемой задачи наличие такой альтернативы означает еще один вход. Его можно интерпретировать как вход, к которому обращается система, управляющая прохождением задач.

Оператор отбора на рис. 3.3, б указывает на то, что задача, к которой происходит обращение, ожидает вызова любого из ее входов А или В; если вызовы входов А и В поступают одновременно, то один из них выбирается случайным образом. После того как вызов произошел и принят, рандеву продолн<а-ется до тех пор, пока в вызванной задаче не будет достигнут, оператор END. Это так называемая критическая секция задачи. После окончания выполнения критической секции, но еще до выхода из оператора выборочного ожидания допускается дальнейшая работа вызванной задачи, связанная с данным входом ;(OTHER A PROCESSING, OTHER B PROCESSING).

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

В операторе WHEN на рис. 3.3, в используется переменная X, которая не позволяет принять обращение к входу А до тех



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

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

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

Возможные задержки, возникающие при взаимодействии задач, можно классифицировать следующим образом:

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

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

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

Рис. 3.4 иллюстрирует применение некоторых введенных выше символов для описания систем. На рис. 3.4, а представлен граф потоков данных, на котором отображены только информационные потоки между модулями и не показаны связи по обращениям. В этом графе могут быть любые модули из яисла изображенных на рис. 3.1.






is) Граф потоков данных.



(6) Структурный граф. Рис. 3.4. Примеры использования графической нотации.

На рис. 3.4, б представлен структурный граф, на котором показаны действующие связи между модулями и информационные потоки между ними. Этот граф отображает статическую картину структуры системы и включает как управляющие, так и информационные взаимодействия. Он дает также некоторое представление об упорядочении взаимодействий во времени.

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



Процедура МАШ

Активный I пакет НоллективногоЛ пользования/-

/Отдельная задача/


Вложенный пакет


1 1

Отдельный пассивный Пакет коллективного пользовании

г

Рис. 3.5. Пакеты и задачи; встроенные, независимые и коллективного пользования.

друг другу. Эта проблема проектирования освещается в разд. 3.2.

Полезно различать пассивные и активные пакеты (рис. 3.5). Пассивный пакет не содержит встроенных задач; в активном пакете они есть и могут быть скрыты за спецификацией пакетного интерфейса.

Введенная нами графическая нотация позволяет представлять систему как совокупность аппаратных средств, т. е. в ви-



3.2.2. Средства отображения динамики прохождения задач в языке Ада по аналогии с взаимодействиями между людьми

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

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

Небольшая часть структуры учреждения изображена в виде структурного графа на рис. 3.6, где представлены неформальное описание поведения людей с помощью схематических фигурок (рис. 3.6, а) и аналогичное по используемым изобразительным средствам описание системы в среде языка Ада (рис. 3.6,6). На данном графе показан набор возможных способов обращения людей друг к другу и проведения рандеву между ними (как между задачами), а также ряд пассивных черных ящиков (пассивных пакетов), отображающих обстановку типичного учреждения. Отметим, что данная структура не обязательно наилучшая: это всего лишь один из многих вариантов. На рисунке отмечены пять сотрудников фирмы: вице-президент, два управляющих, секретарь и помощник одного из управляющих. Показаны также три пассивных черных ящика,

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



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

Рассмотрим сначала одну из задач вице-президента. Он имеет совершенно свободный доступ к личной картотеке и может пользоваться ею без согласования своих действий с потребностями каких-либо других задач. Он может также решить обратиться к более широкой картотеке, например к картотеке сотрудников фирмы, и затем провести рандеву с одним из своих управляющих, для того чтобы передать ему управление картотекой. Стрелка, идущая от задачи вице-президента к управляющему по кадрам, означает приход вице-президента s

Обшедоступнан картотека; личных дел сотрудникое

Личная картотека

Картотек! сообщений


!1омощник

Машинистки

Диспетчер V \/ А бюро

U) Неформализованное описание.



1 ... 3 4 5 6 7 8 9 ... 32

Яндекс.Метрика