имитационных экспериментов по различным сценариям управления поведением МЭС в соответствии с планом экспериментов; накопление экспериментальных данных о состоянии МЭС в динамике и формирование базы экспериментальных данных; формирование обучающей выборки для интеллектуального анализа данных.
Применение предложенной процедуры экспериментальных исследований с помощью программного комплекса возможно при проведении имитационных экспериментов с динамическими моделями сложных объектов различной физической природы, реализованными в среде МАТЬАВ.
СПИСОК ЛИТЕРАТУРЫ
1. Кузык Б.Н., Кушлин В.И., Яковец Ю.В. Программирование, стратегическое планирование и национальное программирование: Учебник 2-е изд., перераб. и доп. М.: ЗАО "Издательство Экономика", 2008. 575 с.
2. Смоленцев H. MATLAB: программирование на Visual С#, Borland JBuilder, VBA: Учеб. курс. M.: ДМК Пресс; СПб.: Питер. 2009. 464 с.
3. Карпов Ю. Имитационное моделирование систем. Введение в моделирование с АпуЬо§1с 5. СПб.: БХВ-Петербург. 2005. 400 с.
4. Ильясов Б.Г., Дегтярева И.В., Макарова Е.А., Габдуллина Э.Р. Моделирование динамики кругооборота финансовых потоков с учётом накопления финансовых ресурсов // Вестник компьютерных и информационных технологий. 2009. № 7 (61). С. 28—38.
УДК 004.451.23
М.В. Хлудова
СИНХРОНИЗАЦИЯ РАСПРЕДЕЛЁННЫХ ПРИЛОЖЕНИЙ РЕАЛЬНОГО ВРЕМЕНИ
Современное системное и прикладное программное обеспечение должно обладать важнейшим свойством: способностью к параллельному исполнению программных единиц работы, называемых заданиями. Термин "параллельное исполнение" заданий в информационных системах означает, что задания исполняются одновременно. Приложения реального времени являются параллельными по своему назначению, так как, с одной стороны, осуществляют обработку потока одновременно наступающих событий, а с другой — выработку управляющей реакции на эти события. В качестве примеров систем реального времени можно назвать системы управления технологическими процессами, контроллерные сети автомобиля и др.
Модель выделения ресурсов. Каждому заданию для выполнения предоставляется процессор и дополнительные ресурсы, перечень которых известен при проектировании приложений реального времени. Кроме того, заранее известны различные атрибуты заданий: предельный интер-
вал времени для завершения, максимальная длительность исполнения на процессоре, список заданий-предшественников, список ресурсов, которые используются заданием в монопольном или разделяемом режиме и длительности интервалов их использования. Если несколько заданий одновременно претендуют на использование процессора, то конфликт разрешается с помощью планировщика. В планировщике по заданной функции предпочтения и числовым значениям атрибутов задания осуществляется расчёт величины приоритета задания. Для обслуживания на процессоре назначается самое приоритетное из числа готовых к выполнению в данный момент задание. Обслуживание на процессоре может быть прервано при поступлении в систему более приоритетного задания, если в системе заложенадисциплина планирования с вытеснением менее приоритетного задания и дообслужи-ванием на процессоре.
Дополнительные ресурсы (структуры данных, буферы ввода-вывода) выделяются зада-
нию по запросу. Если ресурс выделен заданию в монопольном режиме, то он не может быть предоставлен в данном интервале времени никакому другому заданию. Задание "удерживает" ресурс до того момента, пока не завершится необходимость его использования. Если задание 7} запрашивает ресурс, выделенный в настоящий момент в режиме монопольного использования заданию 7], то задание 7} получает отказ и блокируется в ожидании освобождения ресурса. Использование ресурса не может быть прервано и, следовательно, ресурс не может быть отобран у задания и предоставлен другому заданию. Очередь заблокированных заданий обслуживается в порядке их поступления, без учёта значений приоритета заданий, рассчитанных при назначении на процессор.
Программный механизм синхронизации. В случае, когда два или более задания обновляют значения общихданных, могут возникнуть проблемы с целостностью этих данных. Для предотвращения возможных нарушений используется специальный механизм, синхронизирующий доступ к этим данным и не позволяющий нескольким заданиям изменять данные одновременно. Для синхронизации доступа к данным вводится концепция критической секции — части кода задания, в которой производится обновление совместно используемых данных. Кроме того, разработан ряд механизмов, обеспечивающих взаимное исключение — режим, гарантирующий, что в каждый момент времени критическая секция, связанная с определенным ресурсом, будет выполняться только одним заданием. Универсальным программным механизмом для реализации взаимного исключения являются семафоры [1,2]. Семафор программный объект, представляющий интерфейс в виде двух операций: закрытия семафора Д.5) и открытия семафора ^^-Атрибутами семафора в простейшем варианте выступают целое значение и очередь заданий. Операции определены таким образом, что при открытом семафоре Д.5) разрешает первому заданию, "завладевшему" семафором, продолжить работу, а остальные задания блокирует и помещает в очередь, связанную с данным семафором. Семафор переводится в состояние "закрыто". Операция переводит семафор в состояние "открыто" и активизирует задание из начала очереди.
Для обеспечения взаимного исключения необходимо:
каждому ресурсу Л, используемому в монопольном режиме, сопоставить семафор
каждое задание перед выполнением критической секции над ресурсом Я должно выполнить операцию Д5);
каждое задание после завершения критической секции над ресурсом Л должно выполнить операцию
Протоколы доступа к разделяемым ресурсам в монопольном режиме. При планировании заданий, получившихдоступ кресурсам с помощью семафоров, могут возникнуть большие проблемы. Низкоприоритетное задание, "завладевшее" семафором, может удерживать другие задания в состоянии ожидания вне зависимости от их приоритетов до тех пор, пока не закончит работу с ресурсом в рамках критической секции. При планировании на основе приоритетов выполнение задания на процессоре может быть прервано более высокоприоритетным заданием. За счёт возможного участия заданий среднего уровня приоритета непрогнозируемо увеличивается задержка ожидающих в очереди семафора высокоприоритетных заданий. Такая ситуация, называемая инверсией приоритетов, детально представлена в табл. 1.
Таблица 1 Ситуация инверсии приоритетов
Момент времени Задание Действие
(о Т3 Начинает выполнение
Н Т3 Выполняет /"(5) и входит в критическую секцию
'2 т, Начинает выполнение и прерывает Т3
Ь Т] Выполняет /"(б) и блокируется в очереди семафора 5
ь Тз Возобновляет выполнение
¿4 т2 Начинает выполнение и прерывает Т3
н т2 Завершает выполнение на процессоре
н Тз Возобновляет выполнение
Тз Выполняет К(5) и выходит из критической секции
т, Возобновляет выполнение и входит в критическую секцию
Ь Т\ Выполняет 1Т5) и выходит из критической секции
н Т\ Завершает выполнение на процессоре
Пусть существует три задания Тх, Г2, Т3. Приоритеты заданий установлены следующим образом: рг(Тх) > рг{Т2) > рг{Тъ).
В системе используется алгоритм планирования с вытеснением менее приоритетного задания с обслуживания на процессоре. Задания Тх и Г3 используют в монопольном режиме дополнительный ресурс, "защищенный" семафором
Для разрешения проблемы инверсии приоритетов предлагается [3—5] использовать протоколы из семейства протоколов "наследования приоритетов". Протоколы этого семейства предполагают временное увеличение приоритета задания, удерживающего семафор, до уровня самого приоритетного задания в очереди семафора. Эта операция называется наследованием приоритета. Задание, удерживающее семафор, выполняется с действующим приоритетом, равным максимуму из двух значений: исходного и унаследованного приоритетов. Применительно к описанной в табл. 1 ситуации это означает, что в момент /3 задание Г3 наследует приоритет задания Тх, а в момент /6 задание Г3 восстанавливает значение своего исходного приоритета. Внесенные изменения позволяют исключить непрогнозируемые задержки выполнения высокоприоритетного задания, вызываемые заданиями среднего уровня приоритета. К сожалению, использование протокола наследования приоритета в таком непосредственном виде приводит к возникновению тупиковых ситуаций (табл. 2). Рассмотрим пример выполнения двух заданий Тх, Т2 с исходными приоритетами рг{Тх) < рг{Т2). Задания используют в монопольном режиме ресурсы, "защищённые" семафорами 5( и 52.
Для систем реального времени заранее известен перечень заданий и ресурсов, используемых каждым из них. Используя эту информацию, можно дополнить протокол таким образом, чтобы предотвратить возможность наступления тупиковой ситуации [4, 6].
Для каждого семафора определяется на множестве заданий, использующих ресурс, "за-щищённый" данным семафором, наиболее приоритетное задание Тп. Значение приоритета этого задания рг(Тп) называют порогом приоритета семафора и включают в число атрибутов семафора 5,-. Основная идея протокола пороговых приоритетов (ППП) заключается в том, что даже если семафор свободен, задание может "захватить" его лишь в случае, когда все остальные се-
Таблица 2 Тупиковые ситуации
Момент времени Задание Действие
к Т] Начинает выполнение
Тх Выполняет /'(5? ) и входит в критическую секцию
'2 Т2 Начинает выполнение и прерывает Т1
Ь Т2 Выполняет Р(Б1) и входит в критическую секцию
¿4 Т2 Пытается выполнить /'(5?) и блокируется в очереди семафора Б2
Тх Наследует приоритет Т2 и продолжает выполнение
4 Тх Пытается выполнить /'(5, ) и блокируется в очереди семафора 5]
Ь Оба задания заблокированы, так как наступила тупиковая ситуация
мафоры, удерживаемые в данный момент заданиями, имеют более низкий порог приоритета, чем приоритет данного задания. В приведенном примере (см. табл. 2) порог приоритета обоих семафоров 5( и 52 равен приоритету задания Т2. В интервале от /0 до г2 события при использовании ППП развиваются аналогично. В момент /3 задание Т2 пытается захватить семафор 51( но приостанавливается, так как порог 52 (уже удерживаемого заданием Тх) равен приоритету Т2 и задание Т2 не блокируется в очереди семафора 52. Далее задание Тх наследует приоритет задания Т2 и выполняется до завершения критической секции, освобождает семафор и завершается. Таким образом, на простом примере видно, что ППП предотвращает наступление тупиковой ситуации.
Рассмотрим свойства ППП более детально, для чего определим новую переменную—текущий порог приоритета в системе П(?), как максимальный пороговый приоритет среди всех семафоров, "удерживаемых" заданиями в момент г. Если все ресурсы в системе свободны и, соответственно, ни один семафор не "удерживается" заданием, то значению П
оритета, ниже самого низкого значения в системе.
Планирование заданий и выделение им дополнительных ресурсов происходит при использовании ППП следующим образом.
1. При возникновении задания ^ устанавливается значение его приоритета/?К7}), которое остается неизменным, за исключением ситуации, описанной в п. 5.
2. Планирование осуществляется на приоритетной основе с вытеснением более низкоприоритетного задания (при выполнении его на процессоре).
3. Список дополнительных ресурсов, необходимых для выполнения задания, известен до его выполнения.
4. Когда задание 7} запрашивает в момент I дополнительный ресурс Л, то может произойти один из следующих сценариев развития:
а) ресурс Луже выделен другому заданию 7] в монопольном режиме, поэтому запрос не может быть выполнен, а задание 7} блокируется и помещается в очередь семафора, "защищающего" ресурс Л;
б) ресурс Л свободен. Тогда,
если /?г(7}) > П(?), то ресурс Л выделяется заданию 7);
если рг(Т•) < П(7), то осуществляется дополнительная проверка (если 7} уже "удерживает"
П
выделяется заданию 7), в противном случае в удовлетворении запроса отказывается и задание 7} блокируется).
5. Если задание 7} блокируется (п. 4а), то оно "наследует" приоритет задания 7]. При этом оно получит приоритет рг{ Тр до момента освобождения каждого ресурса, защищенного семафором, чей порог приоритета выше или равен рг{ Тр; затем приоритет 7} возвращается к исходному значению, которое было до выделения ресурсов заданию 7).
Из приведенного описания функционирования однопроцессорной системы по ППП можно сделать следующие выводы:
если задание блокируется (п. 4а), то блокировка осуществляется только одним заданием;
задание, которое блокирует задание 7), не может быть само заблокировано;
невозможны транзитивные блокировки заданий;
для однопроцессорной системы блокировка задания при использовании ППП возможна в течение интервала времени, не превышающего длительности одной критической секции.
В последнее время актуальными стали исследования временных характеристик для распреде-
лённых приложений реального времени [7]. В этом случае задание 7} может использовать не только локальные ресурсы того узла, на котором оно выполняется, но и удалённые ресурсы других узлов. Использование удалённых ресурсов осуществляется в рамках глобальных критических секций (ГКС) задания 7} на удалённом узле. Для синхронизации распределённых приложений предлагается применять версию многопроцессорного ППП (МППП), которая является расширением ППП и отличается допускаемыми величинами интервалов блокировки заданий. Согласно МППП планировщик на каждом узле определяет порядок выполнения локальных заданий и ГКС в соответствии со значениями их приоритетов. Доступ к ресурсам узла контролируется на основе ППП.
Рассмотрим пример, демонстрирующий применение МППП. Система состоит из двух узлов. На первом узле выполняются задания Тх, Г2, Ту Приоритеты заданий установлены следующим образом: рг(Тх) > рг(Т2) > рг(Тъ).
На этом узле расположен ресурс Ях, защищенный семафором
На втором узле выполняются задания Г4, Т5. Приоритеты заданий установлены следующим образом: рг(ТА) > рг{Т5). На этом узле расположен ресурс Л2, защищенный семафором 52. Ресурс Л2 используется и как локальный заданиями Г4, Г5, так и в удалённом режиме заданием Тх, поэтому он является глобальным ресурсом. На втором узле выполняется ГКС задания Тх с наивысшим приоритетом. Временная диаграмма выполнения заданий, использующих локальные и глобальные ресурсы под управлением МППП, представлена на рисунке.
Из диаграммы видно:
на узле 1 задание Тх блокируется локальным низкоприоритетным заданием в Т2 в течение интервала времени А, с момента 6 по момент 8;
выполнение ГКС задания Тх с использованием ресурса 112 на узле 2 блокируется локальной критической секцией задания Т4 в
А
момент 15;
выполнение ГКС задания Тх с использованием ресурса 112 на узле 2 задерживает выполне-
А
момента 15 по момент 16.
В общем случае длительность суммарного времени ожидания задания при использовании МППП складывается из пяти составляющих:
т
Локальный ресурс Процессор
Глобальный ресурс Процессор
Г T
Узел I <
Узел 2 <
У/////а
Wa Ш
v(s2)
1-1-1-1-1-1-1-1-1-г
0 2 4 6 6 10 12 14 16 16 20 22
Применение многопроцессорного ППП
времени блокировок на локальном процессоре из-за использования разделяемых локальных ресурсов (типа А[);
времени удалённых блокировок на удалённом процессоре из-за использования разделяе-
А
задержек выполнения на локальном узле, внесённых путем вытеснения задания и назначения ГКС заданий более высокого приоритета А
задержек выполнения на удалённом узле, внесённых вытеснением ГКС задания и назначением ГКС более высокоприоритетного задания;
задержек выполнения на локальном процессоре из-за ожидания завершения заданий более высокого приоритета.
Расширенная версия ППП позволяет синхронизировать доступ к локальным и удалённым ресурсам в распределённых приложениях. Для обеспечения успешного функционирования распределённого приложения на этапе проектирования необходимо рассчитать значения всех составляющих суммарного времени ожидания для каждого задания и оценить возможность завершения заданий в пределах установленных сроков.
СПИСОК ЛИТЕРАТУРЫ
1. Бэкон Д., Харрис Т. Операционные системы. Параллельные и распределенные системы. СПб.: Питер. 2004. 800 с.
2. Олифер В.Г., Олифер H.A. Сетевые операционные системы. СПб.: Питер. 2001. 544 с.
3. Операционная система реального времени QNX Neutrino 6.3. Системная архитектура: Пер. с англ. СПб.: БХВ-Петербург. 2005. 336 с.
4. Никифоров В. В. Операционные системы реального времени: Уч-метод. пособие. СПб.: Изд-во РГПУ. 2007. 109 с.
5. Darari S., Slia L. Sources ofunbounded priority inversion in real-time systems and comparative study of possible solutions // ACM Operating Systems Review 1992. \bl. 26, № 2.
6. Goodenough J.В., Sha L. The priority ceiling protocol: a method for minimizing the blocking of high priority Ada tasks // Proc. 2nd Intern, workshop on
№
7. Керимов M.A., Хлудова M.B. Контроллерные сети в автомобильных приложениях: факторы надежности функционирования // Сб. науч. тр. Междунар. науч.-техн. конф. / СПбГАУ. СПб. 2009. С. 80-85.