Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Системы обработки транзакций



Приложения для обработки транзакций (или просто транзакционные прило­жения) относятся к классу критических для бизнеса или иной деятельности [2]. Сюда входят системы ввода зака­зов, резервирования авиабилетов и кассовые терминалы. Транзакционное прило­жение занимается обновлением информации в базе данных. Нагрузка на такое приложение обычно предсказуема, значительную долю в ней занимают запросы на обновление. Известны также требования в периоды пиковой нагрузки, поэто­му можно оценить структуру множества запросов к базе. Некоторые транзакци­онные приложения должны работать постоянно, в других допустимы короткие пе­рерывы.

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

Рассмотрим, к примеру, электронный перевод денежных средств. Чтобы транз­акция считалась завершенной, требуется успешно провести все операции. Если ка­кую-то операцию осуществить не удается, транзакцию следует отменить. Это озна­чает, что результаты выполнения отдельных составляющих операций необходимо аннулировать, чтобы система пришла в такое состояние, как будто данная транз­акция и не начиналась.

У транзакций выделяются следующие свойства:

атомарность. Транзакция – это неделимая единица работы. Она либо вы­полняется полностью (фиксируется), либо не выполняется вовсе (откаты­вается);

непротиворечивость. После завершения транзакции система должна ока­заться в непротиворечивом состоянии;

изолированность. На поведение транзакции не должны оказывать влияния другие транзакции;

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

3.11.2. Мониторы обработки транзакций. Монитор обработки транзакций (ТР-монитор) координирует поток инфор­мации между различными клиентами, инициирующими запросы, и приложением обработки транзакций, которое отвечает на эти запросы. ТР-мониторы уже много лет существуют на больших ЭВМ. Наиболее широко известна программа CICS компании IBM, функционирующая с операционными системами и СУБД, кото­рые поставляет IBM.

В гетерогенной клиент-серверной среде ТР-мониторы выполняют следующие действия:

– посылают и принимают сообщения от клиентов и серверов;

– управляют потоком транзакций и распределяют нагрузку между серверами;

 

4. РАЗБИЕНИЕ НА ЗАДАЧИ

На этапе проектирования подсистем приложение разбивается на отдельные подсистемы. При этом разрабатываются параллельные задачи, о чем пойдет речь да­лее, и скрывающие информацию классы, из которых создаются пассивные объек­ты.

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

Тип задачи – это активный класс, а сама задача - активный объект. У задачи есть собственный поток управления. Пассивный объект – это экземпляр пассив­ного класса. При обсуждении проектной модели мы будем использовать термин «объект» для обозначения пассивного объекта, а термин «задача» – для обозначения активного объекта.

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

4.1. Вопросы разбиения на параллельные задачи

Задача – это активный объект, который называют также процессом или по­током. Под задачей мы будем понимать активный объект с един­ственным потоком управления. В одних системах задача реализуется в виде од­нопоточного процесса, в других – в виде потока (облегченного процесса внутри тяжеловесного).

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

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

Объекты, вошедшие в аналитическую модель, рассматриваются с целью вы­яснить, какие из них могут выполняться параллельно, а какие – только последо­вательно. Объекты, способные работать параллельно, вычленяются в отдельные задачи. Объекты, которые должны выполняться строго последовательно, объеди­няются в задачу, которая может охватывать один или несколько объектов. Возможно также, что одна задача будет вызывать одну операцию некоторого объекта, а другая – другую операцию того же объекта.

4.2. Категории критериев разбиения на задачи

Критерии разбиения на задачи можно отнести к нескольким категориям по признаку участия в процессе структурирования:

критерии выделения задач ввода/вывода. Касаются отображения объектов интерфейса устройств на задачи ввода/вывода и вопроса о моменте активи­зации таких задач;

критерии выделения внутренних задач. Связаны с тем, как внутренние объек­ты отображаются на внутренние задачи и как эти задачи активизируются;

критерии назначения приоритетов задачам. Позволяют определить отно­сительную важность каждой задачи;

критерии группировки задач. Позволяют решить, какие объекты следует группировать в параллельные задачи и как именно;

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

Задачи активизируются периодически или апериодически (по требованию). При определении задачи может использоваться сразу несколько критериев.

Критерии разбиения применяются поэтапно; сначала критерии выделения задач ввода/вывода, критерии выделения внутренних задач и назначения приори­тетов. В результате мы получаем взаимно-однозначное соответствие между объек­тами из аналитической модели и задачами из проектной модели. Затем с целью уменьшения числа задач используются критерии группировки. Опытный проек­тировщик может выполнять эти шаги одновременно. После того как задачи выяв­лены, определяются их интерфейсы.

Для изображения различных видов за­дач задействуются стереотипы. Стереотипами будут также обозначаться разные виды устройств, с которыми общаются задачи. Если в процессе разбиения на за­дачи некоторый объект определяется как активный, то для него уточняются ха­рактеристики соответствующей задачи. Например, активный объект «интерфейс устройства ввода/вывода» считается задачей и характеризуется следующим об­разом: «асинхронный интерфейс устройства ввода/вывода», «синхронный интер­фейс устройства ввода/вывода», «периодический интерфейс устройства ввода/ вывода», «пассивный интерфейс устройства ввода/вывода» или «монитор ресур­сов». Точно так же «внешнее устройство ввода» в зависимости от характеристик классифицируется как «асинхронное устройство ввода» или «пассивное устрой­ство ввода».

4.3. Критерии выделения задач ввода/вывода

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

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

– характеристики устройств ввода/вывода. Важно понять, является устрой­ство асинхронным (активным) или пассивным. Вот три основных класса устройств ввода/вывода:

• асинхронные устройства ввода/вывода (иногда их называют также актив­ными), работающие по прерываниям. Когда асинхронное устройство вво­да получает данные для обработки, оно генерирует прерывание. Асин­хронное же устройство вывода генерирует прерывание, когда заканчивает операцию вывода и готово к приему новых данных;

• пассивные устройства ввода/вывода. Пассивное устройство не генериру­ет прерываний при завершении операции. Чтобы узнать, есть ли инфор­мация у пассивного устройства ввода, его надо периодически опрашивать. Соответственно перед отправкой данных пассивному устройству вывода надо убедиться, что оно готово принять их;

• канал связи. Некоторые управляемые микропроцессорами устройства ввода/вывода и внешние системы подключаются с помощью канала свя­зи. Порядок обмена данными между системами определяется коммуни­кационным протоколом (например, TCP/IP). На прикладном уровне за­дачи, принадлежащие разным системам, обмениваются сообщениями.

– характеристики данных. Важно выяснить, работает устройство ввода/вы­вода с дискретными или непрерывными данными. Дискретные данные мо­гут быть булевскими или принимают значения из конечного множества. Аналоговые данные по своей природе непрерывны и теоретически способны принимать значения из бесконечного множества. Аналоговое устройство ввода/вывода требуется опрашивать. Если бы оно генерировало прерыва­ние при каждом изменении значения, система просто не смогла бы их все обработать;

– пассивное устройство ввода/вывода. Для пассивного устройства необходи­мо выяснить следующее:

• достаточно ли запрашивать данные у устройства по мере необходимости, например только тогда, когда они нужны потребителю;

• следует ли периодически опрашивать устройство и посылать всю посту­пающую информацию потребителю, даже если он явно ее не запрашивал, или какому-то объекту, абстрагирующему данные;

– частота опроса. Если пассивное устройство ввода/вывода приходится пери­одически опрашивать, необходимо определить частоту опроса. Она зависит от того, насколько критичны входные данные и как интенсивно они могут изменяться.

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

4.3.2. Асинхронные задачи интерфейса с устройствами ввода/вывода. Если в системе имеются асинхронные устройства ввода/вывода, то для интер­фейса с каждым из них нужна отдельная задача, которая будет активизироваться при поступлении прерывания от устройства. В процессе разбиения на задачи все объекты интерфейса асинхронных устройств, представленные в аналитической модели, отображаются на соответствующие задачи.

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

Асинхронная задача интерфейса с устройством ввода/вывода – это задача драйвера устройства. Как правило, она активизируется низкоуровневым обработ­чиком прерывания, а иногда непосредственно устройством.

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

В качестве примера асинхронной задачи интерфейса с устройством рассмот­рим объект Интерфейс Ручки Круиз-Контроля, показанный на диаграмме ко­операции, которая входит в состав аналитической модели (рис. 4.l, a). Этот объект получает входные данные от ручки круиз-контроля, которая представлена в виде внешнего устройства ввода. Затем он преобразует данные во внутренний формат и посылает запрос объекту Круиз-Контроль. С точки зрения разбиения на зада­чи ручка круиз-контроля - это асинхронное устройство ввода, изображаемое на диаграмме параллельной кооперации в составе проектной модели (рис.4.1, б) с помощью стереотипа «асинхронное устройство ввода». Оно генерирует преры­вание при изменении положения ручки. Объекту Интерфейс Ручки Круиз-Кон­троля соответствует одно-именная асинхронная задача интерфейса с устройством ввода, которая передается на диаграмме параллельной кооперации со стереоти­пом «асинхронный интерфейс устройства ввода». Когда задача активизируется в результате прихода прерывания Круиз-Контроля, она читает данные Кру­из-Контроля, преобразует их во внутренний формат и посылает сообщение за­прос Круиз-Контроля задаче Круиз-Контроль.

Рис. 4.1. Пример асинхронной задачи интерфейса с устройством ввода/вывода: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

4.3.3. Периодические задачи интерфейса с устройством ввода/вывода. Если асинхронная задача интерфейса с устройством ввода/вывода работает с асинхронным устройством, то периодическая задача имеет дело с пассивным устройством, которое необходимо время от времени опрашивать. В этой ситуации задача активизируется периодически, но ее функции связаны с вводом/выводом.

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

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

Периодические задачи интерфейса с датчиками

Концепция периодической задачи ввода/вывода используется во многих про­мышленных системах на базе датчиков. Такая задача регулярно активизируется и считывает показания датчиков.

Рассмотрим пассивное цифровое устройство ввода, к примеру датчик двига­теля. С ним ассоциирована периодическая задача интерфейса с устройством вво­да. Она активизируется событием таймера и считывает состояние устройства. Если показания датчика изменились с момента последнего опроса, то задача вы­водит на экран индикатора новые показания.

Рис. 4.2. Пример периодической задачи интерфейса с устройством ввода: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

 

В качестве примера рассмотрим объект Интерфейс Двигателя, показанный на рис. 4.2, а. На диаграмме кооперации из аналитической модели объект Интер­фейс Двигателя, являющийся «интерфейсом устройства ввода», принимает дан­ные от объекта Двигатель, изображенного со стереотипом «внешнее устройство ввода». Поскольку двигатель – это пассивное устройство, то на диаграмме парал­лельной кооперации он имеет стереотип «пассивное устройство ввода» (рис. 4.2, б). Двигатель не генерирует прерываний, так что использовать асинхронную задачу для интерфейса с ним нельзя. Поэтому применяется периодическая задача интер­фейса с устройством ввода, которая регулярно (по событию таймера) опрашивает датчик двигателя. Следовательно, объект Интерфейс Двигателя отображен на задачу Интерфейс Двигателя, имеющую стереотип «периодический интерфейс устройства ввода». Для активизации этой задачи необходимо добавить объект Тактовый Генератор со стереотипом «внешний таймер» (рис. 4.2, б). При акти­визации задача Интерфейс Двигателя опрашивает датчик двигателя и, если его состояние изменилось, выводит сообщение двигатель Включен или двигатель Выключен задаче-потребителю, после чего ожидает следующего события таймера.

О выборе временных интервалов для периодических задач ввода/ вывода

Частота, с которой задача опрашивает датчик, зависит от ожидаемой частоты из­менения его показаний, а также от приемлемой величины задержки извещения о мо­дификациях. Например, температура окружающей среды изменяется медленно, по­этому время между измерениями может составлять минуты. С другой стороны, чтобы гарантировать быструю реакцию на нажатие педали тормоза (в предположении, что это пассивное устройство), датчик педали надо опрашивать каждые 100 мс.

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

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

4.3.4. Пассивные задачи интерфейса с устройствами ввода/вывода. Такие задачи используются для работы с пассивными устройствами ввода/ вывода, которые не надо опрашивать. В частности, они применяются в случае, когда желательно совместить вычисления с вводом/выводом. Обратите внимание, что слово «пассивное» относится к устройству, а не к объекту. Объект остается активным, поскольку представляет собой задачу. Рассмотрим следующие случаи:

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

Отделение пассивной задачи ввода от вычислительной задачи полезно толь­ко в тех случаях, когда последняя должна произвести некоторые вычисления за время, пока задача ввода читает данные. Если же вычислительная задача должна дожидаться входных данных, то ввод допустимо выполнять в том же потоке управления;

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

Пассивные задачи интерфейса с устройствами обычно применяются для ра­боты с устройствами вывода, а не ввода, поскольку совмещение вывода с вычис­лениями требуется чаще (см. следующий пример). Как правило, для совмещения ввода с вычислениями используются периодические задачи ввода.

Рассмотрим пассивную задачу вывода, которая получает сообщение от зада­чи-производителя. Совмещение вычислений с выводом достигается так: задача-потребитель выводит данные, содержащиеся в сообщении, на пассивное устрой­ство вывода (дисплей), а производитель в то же время готовит новое сообщение (рис. 4.3). Интерфейс Дисплея Статистики Датчика – это пассивная задача интерфейса с устройством вывода. Она принимает сообщение, которое нужно вывести, от задачи Алгоритм Статистики Датчика и показывает содержащие­ся в нем данные, пока Алгоритм вычисляет следующее значение. Таким образом, вычисления оказываются совмещенными с выводом. Задача Интерфейс Дисплея Статистики Датчика показана на диаграмме параллельной кооперации со сте­реотипом «пассивный интерфейс устройства вывода».

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

4.3.5. Задачи-мониторы ресурсов. Задача-монитор ресурса – это частный случай пассивной задачи ввода/выво­да, рассмотренной выше. С устройством ввода/вывода, которое получает запросы из разных источников, должна быть ассоциирована задача-монитор для коорди­нации запросов, даже если устройство является пассивным. Ее цель – упорядо­чить запросы, чтобы гарантировать целостность данных и избежать их искажения или потери.

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

Пример монитора ресурсов приведен на рис. 4.4. Интерфейс Лампочки Эта­жа – это объект интерфейса устройства вывода, который получает запросы от не­скольких экземпляров объекта Управление Лифтом с указанием погасить лам­почку на данном этаже (рис. 4.4, а). Лампочка – это пассивное устройство вывода. Поскольку оно получает запросы из разных источников, то объект Интерфейс Лампочки Этажа устроен как задача-монитор ресурса, которая координирует все поступающие запросы (рис. 4.4, б). Описанная задача изображена на диаграмме параллельной кооперации со стереотипом «монитор ресурса».

Рис. 4.4. Пример задачи-монитора ресурса: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

4.4. Критерии выделения внутренних задач

Если критерии выделения задач ввода/вывода применяются для определения задач ввода/вывода, то критерии выделения внутренних задач помогут выявить внутренние задачи, не связанные с вводом/выводом.

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

Рис. 4.5. Пример периодической задачи: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

Деятельность, которую нужно выполнять периодически (например, через оди­наковые промежутки времени), выделяется в периодическую задачу. Эта задача активизируется событием таймера, выполняет свои функции и ожидает следую­щего события таймера. Периодом задачи называется промежуток времени между последовательными активизациями.

В качестве примера рассмотрим объект Таймер Пути, показанный на рис. 4.5, а. Он активизируется событием таймера и просит объект Путь вычислить пройден­ное машиной расстояние. Объект Путь сначала считывает показания счетчика оборотов вала и значения калибровочной константы, а затем вычисляет полный пройденный путь. Объект Таймер Пути отображается на периодическую задачу (рис. 4.5, б), которая при каждой активизации запрашивает у объекта Путь прой­денное машиной расстояние. Задача Таймер Пути изображена на диаграмме па­раллельной кооперации со стереотипом «периодическая». Объекты Путь, Счет­чик Оборотов Вала и Калибровочная Константа являются пассивными.

4.4.2. Асинхронные задачи. Во многих параллельных системах и системах реального времени встречаются работы, выполняемые по требованию. Обычно для них применяются асинхронные задачи. Если асинхронные задачи ввода/вывода активизируются прерываниями, то асинхронные внутренние задачи (их еще называют апериодическими) активизиру­ются по требованию, когда приходит внутреннее сообщение или событие.

Объект, который активизируется по требованию (т.е. при получении внут­реннего сообщения или события от другой задачи), оформляется как отдельная асинхронная задача. Эта задача активизируется прибытием сообщения или собы­тия от запрашивающей задачи, выполняет запрос и ожидает следующего сообще­ния или события. К числу внутренних асинхронных задач относятся асинхронные алгоритмы и асинхронные задачи бизнес-логики.

Пример асинхронной задачи приведен на рис. 4.6. В аналитической модели объект Крейсер активизируется поступлением сообщения Команда Круиз-Контроля от объекта Круиз-Контроль, считывает значения объектов Теку­щая Скорость и Требуемая Скорость, вычисляет корректировку положения дроссельной заслонки и посылает сообщение Значение Дросселя объекту Ин­терфейс Дросселя (рис. 4.6, а). В проектной модели объект Крейсер выделяет­ся в асинхронную задачу-алгоритм Крейсер, которая активизируется поступлени­ем сообщения команда Круиз-Контроля. Эта задача изображена на диаграмме параллельной кооперации со стереотипом «асинхронный алгоритм» (рис. 4.6, б). Объектам Круиз-Контроль и Интерфейс Дросселя также соответствуют зада­чи. Текущая Скорость и Требуемая Скорость - это пассивные объекты.

Рис. 4.6. Пример асинхронной задачи: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

4.4.3. Управляющие задачи. В аналитической модели зависящий от состояния управляющий объект ис­полняет диаграмму состояний. Так как используется ограниченная форма диа­граммы состояний, в которой параллелизм внутри объекта не допускается, то ее выполнение оказывается строго последовательным. Поэтому последовательно исполняемая задача может осуществлять управляющую деятельность. Задача, реализующая последовательную диаграмму состояний (обычно изображаемая в виде таблицы переходов состояний), называется управляющей.

Пример управляющей задачи приведен на рис. 4.7. Зависящий от состояния управляющий объект Круиз-Контроль (рис. 4.7, а), который исполняет диаграмму состояний Круиз-Контроль, оформлен в виде отдельной одноименной задачи (рис. 4.7, б), так как исполнение диаграммы строго последовательное. Эта задача изображена на параллельной диаграмме состояний со стереотипом «управление».

Рис. 4.7. Пример управляющей задачи: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации)

Другой пример дает задача Управление Лифтом, которая исполняет диаграмму состояний лифта. Здесь есть несколько объектов Управление Лифтом (изобра­женных на рис. 4.8, а с помощью нотации множественных экземпляров). Каждый экземпляр выделен в управляющую задачу. Следовательно, для каждого лифта есть одна управляющая задача Управление Лифтом. Все они изображены на рис. 4.8, б также с помощью нотации множественных экземпляров.

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

Рис. 4.8. Пример нескольких однотипных управляющих задач:

а – аналитическая модель (управляющий объект, несколько экземпляров);

б – проектная модель (однотипные управляющие задачи)

4.4.4. Задачи интерфейса пользователя. Пользователь, как правило, выполняет операции последовательно. Посколь­ку его взаимодействие с системой носит последовательный характер, оно реали­зуется в виде задачи интерфейса пользователя. Быстродействие такой задачи часто ограничено скоростью работы человека. Как и следовало ожидать, на нее отображается объект интерфейса пользователя из аналитической модели.

Задача интерфейса пользователя обычно работает с различными стандартны­ми устройствами ввода/вывода: клавиатурой, дисплеем и мышью, которые управ­ляются самой операционной системой, поэтому нет необходимости разрабатывать специализированные задачи драйверов таких устройств.

Идея иметь одну задачу на каждого пользователя находит широкое примене­ние во многих многопользовательских ОС. Например, в системе UNIX с каждым пользователем ассоциирована одна задача (процесс). Если же пользователь зани­мается сразу несколькими видами деятельности, то для каждой из них создается отдельная задача интерфейса пользователя. Так, в системе UNIX пользователь может запустить несколько фоновых процессов. Все задачи интерфейса с одним и тем же пользователем исполняются параллельно.

Идея одной задачи на каждую последовательную деятельность также нашла отражение в современных графических рабочих станциях с оконным интерфей­сом. В каждом окне выполняется последовательная деятельность, поэтому с каж­дым окном связывается одна задача. В ОС Windows пользователь способен рабо­тать с редактором Word в одном окне и с программой PowerPoint – в другом. Для каждого окна имеется своя задача интерфейса пользователя, которая может, в свою очередь, запускать дополнительные задачи (например, для совмещения печати и редактирования).

Пример задачи интерфейса пользователя приведен на рис. 4.9. Объект Ин­терфейс Оператора принимает команды от оператора, считывает данные из сущностного объекта Хранилище Показаний Датчика и отображает их на дисплее (рис. 4.9, а). Поскольку оператор в данном случае выполняет только последова­тельные действия, то объект Интерфейс Оператора оформляется как задача интерфейса пользователя (рис. 4.9, б). Эта задача изображена на диаграмме па­раллельной кооперации со стереотипом «интерфейс пользователя».

Рис. 4.9. Пример задач интерфейса пользователя: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма параллельной кооперации с одной задачей интерфейса пользователя); в – проектная модель (диаграмма параллельной кооперации с двумя задачами интерфейса пользователя)

В многооконной графической среде дежурный оператор может одновременно наблюдать за состоянием производства (это окно поддерживается одной задачей) и подтверждать прием тревожных сигналов (за такое окно отвечает другая зада­ча) – рис. 4.9, в. Здесь присутствуют две задачи интерфейса пользователя: Окно Состояния Производства и Окно Тревожных Сигналов. Задача Окно Состоя­ния Производства взаимодействует с пассивным объектом Хранилище Состо­яний Производства, а задача Окно Тревожных Сигналов - с пассивным объек­том Хранилище Тревожных Сигналов.

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

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

Пример нескольких однотипных управляющих задач можно найти в системе управления лифтами (см. рис. 4.8). Аспекты работы лифта, связанные с управ­лением, моделируются с помощью управляющего объекта Управление Лифтом и изображаются на последовательной диаграмме состояний. На этапе разбиения на задачи объект Управление Лифтом отображается на задачу Контроллер Лиф­та. В системе с несколькими лифтами имеется по одной такой задаче для каждо­го объекта Управление Лифтом. Эти задачи идентичны, и каждая исполняет эк­земпляр одной и той же диаграммы состояний. Однако, скорее всего, все лифты будут в любой момент времени находиться в разных состояниях.

4.5. Критерии назначения приоритетов задачам

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

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

Рассмотрим ситуацию, когда после исполнения критического по времени объекта задействуется объект, некритический по времени. Можно было бы объ­единить эти объекты в соответствии с критерием последовательной группировки. Но, чтобы гарантировать быстрое обслуживание критического по времени объек­та, предпочтительнее выделить его в самостоятельную высокоприоритетную за­дачу. Такая ситуация типична для асинхронных задач ввода/вывода, управляемо­го прерываниями, когда обработка прерывания критична по времени.

В качестве примера рассмотрим объект Контроль Температуры в Печи. Если температура превышает 100°С, то печь следует выключить. Этот объект отобра­жается на высокоприоритетную задачу, которая должна успеть завершиться в те­чение жестко определенного времени, в противном случае изделие, находящееся в печи, сгорит.

Другие разновидности критических по времени задач – управляющие задачи и асинхронные задачи интерфейса с устро


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 1392; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.057 с.)
Главная | Случайная страница | Обратная связь