Научная статья на тему 'Протокол предотвращения взаимного блокирования задач в системах реального времени'

Протокол предотвращения взаимного блокирования задач в системах реального времени Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
139
33
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МНОГОЗАДАЧНЫЕ СИСТЕМЫ / СИСТЕМЫ НА МНОГОЯДЕРНЫХ ПРОЦЕССОРАХ / MULTI-CORE PROCESSOR SYSTEM / СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ / REAL-TIME SYSTEM / ВЗАИМОСВЯЗАННЫЕ ЗАДАЧИ / ПРОТОКОЛЫ ДОСТУПА К РЕСУРСАМ / PROTOCOL FOR ACCESS TO RESOURCES / MULTITASK SYSTEMS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Никифоров Виктор Викентьевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Protocol for prevention of task deadlocks in real-time systems

A new protocol ensuring task deadlock prevention is proposed for access to mutual resource information database. The protocol is oriented to efficient implementation of multitask software applications which contain tasks with intersected critical intervals for access to mutual resources. The protocol is reported to use the proposed protocol not only with static priority scheduling modes, but with dynamic ones as well. For real-time system with a multi-core processor, the option of picking a scheduling mode from a wide enough set is shown to increase the processor efficiency of time usage by a factor of 2-3.

Текст научной работы на тему «Протокол предотвращения взаимного блокирования задач в системах реального времени»

5. Неусыпин К. А., Фам Суан Фанг. Алгоритмические методы повышения точности навигационных систем ЛА. Ханой: Мир, 2009. 126 с.

6. Управление и наведение беспилотных маневренных летательных аппаратов на основе современных информационных технологий /Под ред. М. Н. Красильщикова и Г. Г. Серебрякова. М.: Физматлит, 2003. 280 с.

7. Ковальчук И. А., Кошеля И. А. Алгоритм вычисления нижней границы ковариаций ошибок оценивания при нелинейной фильтрации // Радиоэлектроника. 1985. Т. 28, № 7. С. 82—84.

Павел Валерьевич Васильев Алла Вячеславовна Мелешко Вячеслав Викторович Пятков

Рекомендована НИИ телевидения

Сведения об авторах канд. техн. наук, доцент; Военно-космическая академия им. А. Ф. Можайского, Санкт-Петербург; E-mail: [email protected] канд. техн. наук; ОАО «НПП „Радар ММС"», Санкт-Петербург; ведущий специалист; E-mail: [email protected]

д-р техн. наук, профессор; ОАО „НИИ телевидения", Санкт-Петербург; начальник научно-технического комплекса; E-mail: [email protected]

Поступила в редакцию 24.04.14 г.

УДК 681.3

В. В. Никифоров

ПРОТОКОЛ ПРЕДОТВРАЩЕНИЯ ВЗАИМНОГО БЛОКИРОВАНИЯ ЗАДАЧ

В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ

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

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

Введение. Программные приложения для систем реального времени (СРВ) строятся в виде фиксированного набора задач ть Т2, ..., ти . Очередная (/-я) активизация задачи тг- означает порождение ее очередного (/-го) экземпляра — задания т(/). Порядок предоставления

задачам процессорного времени определяется применяемой дисциплиной планирования. Для СРВ важно выбрать дисциплину планирования, гарантирующую своевременное выполнение задач при эффективном использовании ресурсов. Проверка гарантий своевременности выполнения прикладных задач ть Т2, ..., ти осуществляется с учетом максимального объема С{ процессорного времени, требуемого для однократного исполнения задачи тг- и периода Т (минимально допустимого интервала времени между двумя активизациями задачи тг-) [1, 2].

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

Целостность информационных ресурсов обеспечивается, например, синхронизирующими механизмами типа мьютексов (тШвх), а с целью предотвращения взаимного блокирования используются стандартные протоколы доступа к ресурсам [2, 3], ориентированные на применение дисциплин планирования со статическими приоритетами задач.

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

Дисциплины планирования. Простейшие способы проверки гарантий своевременности выполнения набора прикладных задач ть Т2, ... , ти опираются на определение значения нагрузки и1 = С^Т — доли процессорного времени, требуемого для исполнения задачи тг-. Для оценки выполнимости программного приложения существенно значение интегральной нагрузки и = ^п и{ . Очевидно, что в случае однопроцессорной системы с классическим

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

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

На рис. 1 представлены три класса дисциплин планирования. Класс Б0 соответствует дисциплинам со статическими приоритетами задач, к нему относится широко применяемая в СРВ КМ-дисциплина: приоритеты задач Т1, Т2, ..., ти снижаются с увеличением значений Т1. Для системы на одноядерном процессоре эффективность (т.е. гарантированная выполнимость

Для дисциплин планирования класса Б1 приоритеты однотипных заданий т(}) и т(к) (] ^ к ) могут различаться, т.е. экземпляры одной задачи могут исполняться с разными приоритетами. Ограничение на модификацию приоритетов для дисциплин планирования класса

S1 состоит в том, что в рамках всего интервала существования конкретного задания т(3 ) его

приоритет остается неизменным. Благодаря смягчению (относительно класса S0) ограничений на модификацию приоритетов применение дисциплин класса S1 позволяет повысить эффективность использования процессора. Так, дисциплина планирования EDF (приоритеты заданий снижаются в порядке размещения на оси времени предельно допустимых моментов их завершения) обеспечивает максимально возможную эффективность использования процессорного времени в однопроцессорных СРВ с классическим одноядерным процессором. При применении дисциплины EDF в таких СРВ выполнение неравенства U < 1 является не только необходимым, но и достаточным условием своевременности выполнения задач.

При построении СРВ на многоядерных процессорах применение RM и EDF неэффективно [4], для таких СРВ разработаны модифицированные варианты дисциплин планировать2

ния. Дисциплина RM_US класса S0 обеспечивает выполнимость всех задач при U <-:

3m - 2

ее эффективность изменяется от 1/2 до 1/3 в зависимости от числа ядер процессора.

Классу S2 соответствует полное снятие ограничений на модификацию приоритетов заданий — приоритеты активных заданий могут изменяться в ходе их исполнения. Такое снятие ограничений открывает возможность повышения эффективности использования процессора в СРВ на многоядерных процессорах. Дисциплина Pfair обеспечивает выполнимость всех задач приложения при U < m , что означает стопроцентную эффективность использования ресурса процессора [5, 6].

Протоколы доступа к разделяемым ресурсам. Участок кода задачи, в рамках которого реализуется доступ к глобальному ресурсу g, называют критическим интервалом по ресурсу g. К однотипным относятся различные критические интервалы, в рамках которых реализуется доступ к одному глобальному ресурсу. Обеспечить целостность разделяемых ресурсов позволяют механизмы, предотвращающие одновременное исполнение однотипных критических интервалов различными заданиями. С этой целью для каждого глобального ресурса gt в программном коде формируется синхронизирующий элемент типа мьютекса mut_i. Каждый участок кода программы, реализующий доступ к gt (каждый из критических интервалов по доступу к ресурсу gt), ограничивается операторами над мьютексом mut_i. Критический интервал начинает оператор lock(mut_i) — закрыть мьютекс mut_i и заканчивает unlock(mut_i) — открыть мьютекс mut_i. Если в момент обращения задания к оператору lock(mut) мьютекс находится в состоянии „закрыт", то исполнение приостанавливается до тех пор, пока владеющее ресурсом задание не освободит его выполнением операции unlock(mut). Операторы lock/unlock разбивают код задачи на сегменты.

На рис. 2 в соответствии с предложенным в работе [7] подходом к представлению межзадачных интерфейсов средствами языка XML приведена структура взаимосвязей двух задач. Задачи Т1 и Т2 разделяют ресурсы g1 и g2, критические интервалы защищены мьютексами mut 1 и mut 2.

Каждая из задач (см. рис. 2) содержит два критических интервала: интервал задачи Т1 по ресурсу g1 содержит 2-й и 3-й сегменты ее кода, по ресурсу g2 — ее 3-й и 4-й сегменты. Критический интервал задачи Т2 по ресурсу g1 состоит из 3-го сегмента ее кода, по ресурсу g2 — 2, 3, 4-го. Существенно, что обе задачи содержат пересекающиеся критические интервалы:

— в X! критические интервалы сцеплены — 3-й сегмент является, с одной стороны, завершающим сегментом критического интервала по gl, а с другой — головным сегментом по g2;

— в Х2 критический интервал по g1 вложен в интервал по g2.

Задача т

'<tErëaЗ™name="task_1" рг1о= <segment length="1"

interface="mutex_1л op_type="get"/> <segment length="3"

interface="mutex_2л op_type="get"/> <segment length="1"

interface="mutex_1л op_type="put"/> <segment length="4"

interface="mutex_2л op_type="put"/> <segment length="1"

op_type="end"/>

</thread>

Задача т2

<thread name="task_2" prio="2"> <segment length="1"

interface="mutex_2л op_type="get"/> <segment length="4"

interface="mutex_1л op_type="get"/> <segment length="2"

interface="mutex_1л op_type="put"/> <segment length="4"

interface="mutex_2л op_type="put"/> <segment length="1"

op_type="end"/>

</thread>

Рис. 2

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

Рассмотрим следующий сценарий. Пусть задача Т2 активизируется в момент времени I = 0 и исполняется до I = 3 , когда активизируется более приоритетная задача X! и процессор переключается на ее исполнение. На интервале (3, 7) исполняются 1-й и 2-й сегменты х^ В момент I = 7 в результате обращения к операции lock(mut_2) исполнение XI приостанавливается, поскольку запрашиваемый ресурс g2 занят задачей Х2. Процессор переключается на исполнение Х2 — с момента I = 7 до I = 10 завершается исполнение 2-го сегмента Х2. В момент I = 10 при обращении к операции lock(mut_1) происходит приостановка исполнения Х2, поскольку запрашиваемый ресурс gl занят задачей Х1. Таким образом, задания Х1 и Х2 попадают в состояние взаимного блокирования: Х1 не может продолжаться, пока Х2 не освободит ресурс g2, Х2 не может освободить g2, пока не получит доступа к занятому

ресурсу gl .

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

Стандартные протоколы доступа предполагают применение дисциплин планирования класса Бо [2, 8]. Поэтому при построении систем, содержащих пересекающиеся критические интервалы, разработчики ориентируются на использование протоколов доступа, исключающих применение эффективных дисциплин планирования классов Б1 или Б2. Однако наличие пересекающиеся критических интервалов не означает взаимного блокирования задач. В работе [9] предложен метод проверки реальной возможности возникновения взаимного блокирования, основанный на анализе структурных особенностей специального многодольного графа — графа связок критических интервалов. На основе метода разработчик может проверить, действительно ли конфигурация взаимосвязей задач требует использования стандартных

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

Граф связок. Критические интервалы задачи т по основному (головному) g и дополнительному g * ресурсам назовем связанными (образующими связку Ь =< т, g, g* > ), если они пересекаются, т.е. содержат общие сегменты кода задачи. Каждая связка Ь состоит из трех участков, на начальном (головном) участке задача т имеет доступ к головному ресурсу g связки. На центральном участке т имеет доступ и к g и и g * . На завершающем один из ресурсов уже освобожден задачей т . Центральный участок образуется пересечением связанных критических интервалов. В структуре приложения на рис. 2 имеются две связки:

ь1 =< тьgl,g2 > и ь2 =<^g2,gl > .

Необходимым условием возникновения взаимных ожиданий является наличие в программном приложении таких пар связок, для которых имеет место следующее отношение зависимости. Связка Ьх =<тг-, ga, gb > зависима от Ьу =<т/, gc, gd >, если тг- и т/ — разные

задачи и gb = gc, то есть связка Ьх является зависимой от Ьу, если Ьх и Ьу принадлежат

различным задачам и головной ресурс связки Ьу совпадает с дополнительным ресурсом Ьх.

Имеющиеся в системе зависимости связок могут быть представлены в виде многодольного

ориентированного графа связок [9]. Каждая связка критических интер- 1_______________

валов представляется отдельной вершиной, если Ьх зависит от Ьу, то ! ¿1= <яъ g2> ;

вершина Ьх графа связок соединяется с вершиной Ьу дугой, ведущей из Ьх в Ьу. Граф связок для программного приложения (см. рис. 2) представлен на рис. 3.

Для проверки возможности возникновения взаимного блокирования задач следует в графе связок выделить множество междольных кон-

Доля т1

Доля т2

Ь2= ^ъ Я1>

туров Ж = {^1,^2,...,} . Контур Wfc является междольным, если в нем нет Рис. 3

двух вершин, принадлежащих одной и той же доле. Выражение Ь е Wk отражает факт принадлежности связки Ь контуру Wfc. Условимся обозначать символом |wk| число связок, принадлежащих контуру Wfc . В общем случае связка Ь может:

— принадлежать одному, двум, либо большему числу контуров Wk из Ж;

— не принадлежать ни одному из контуров Wk .

В работе [9] показано, что взаимное блокирование задач возможно в том, и только в том случае, если множество Ж не пустое. Тот факт, что для приложения со структурой, приведенной на рис. 2, взаимное блокирование возможно, отражается наличием междольного контура в графе связок на рис. 3.

Протокол предотвращения взаимного блокирования. Условимся считать, что в ходе исполнения задачи т связка Ь =< т, g, g* > находится в активном состоянии (является активной), если исполняется ее головной участок. Две связки, принадлежащие задаче т, могут одновременно пребывать в активном состоянии только в том случае, если пересекаются их головные участки. Следовательно, при отсутствии подобных пересечений в ходе исполнения т в каждый момент времени активной может быть не более одной из принадлежащих ей связок.

Отмеченное обстоятельство позволяет для приложений, свободных от пересечений головных участков связок, использовать протокол предотвращения взаимного блокирования (ППВБ), который

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

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

Реализация ППВБ опирается на учет текущего числа активных связок в каждом из контуров м>ь ё^ , учет обеспечивается введением соответствующих счетчиков:

— значение счетчика ) увеличивается на единицу в тот момент времени, когда одна из связок, принадлежащих , переходит в активное состояние;

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

В рамках использования стандартных протоколов, предотвращающих взаимное блокирование задач, проверка/модификация значений мьютексов сопрягается с дополнительными проверками/действиями, выполняемыми при входе/выходе для каждого критического интервала по ресурсам. В рамках использования ППВБ дополнительные проверки/действия выполняются только при входе в пересекающиеся критические интервалы и, более того, только при входе в интервалы, являющиеся элементами одной из связок Ь =< х, g, g* > . Дополнительные проверки/действия для ППВБ состоят в следующем.

1. При запросе заданием х(3) головного ресурса связки Ь =<х, g, g* > проверяется выполнение неравенств ц() +1 < для каждого из контуров , содержащих эту связку.

Если хотя бы одно из неравенств не выполняется, то исполнение х( 3) приостанавливается до тех пор, пока не будет обеспечено выполнение всех проверяемых неравенств.

2. При входе задания х(3) в головной участок связки Ь =<х, g, g* > значение счетчиков

) каждого из контуров Ь ё увеличивается на единицу.

3. При входе задания х(3) в дополнительный участок связки Ь =<х, g, g* > значение счетчиков ) каждого из контуров Ь ё уменьшается на единицу.

Основное преимущество ППВБ состоит в том, что выполняемые в его рамках дополнительные проверки/действия не связаны с приоритетами задач и он может использоваться не только с дисциплинами планирования класса Б0, но и с более эффективными дисциплинами планирования классов Б1 или Б2.

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

Работа выполнена при государственной финансовой поддержке ведущих университетов РФ (субсидия 074-Ш1).

СПИСОК ЛИТЕРАТУРЫ

1. Зыль С. Проектирование, разработка и анализ программного обеспечения систем реального времени. СПб: БХВ-Петербург, 2010. ЗЗ6 с.

2. Liu J. W. S. Real-Time Systems. NJ: Prentice Hall, 2000. 590 p.

3. Никифоров В. В., Шкиртиль В. И. Составное блокирование взаимосвязанных задач в системах на многоядерных процессорах // Изв. вузов. Приборостроение. 2012. Т. 55, № 1. С. 25—З1.

4. Dhall S. K., Liu C. L. On a Real-Time Scheduling Problem // Operating Research. 1978. Vol. 26, N 1. P. 127—140.

5. Никифоров В. В. Выполнимость приложений реального времени на многоядерных процессорах // Тр. СПИИРАН. СПб: Наука, 2009. Вып. 8. С. 255—284.

6. Baker T. Multiprocessors EDF and Deadline Monotonic Schedulability Analysis // Proc. of the 24th IEEE Real-Time Systems Symposium. 200З. P. 120—129.

7. Никифоров В. В., Шкиртиль В. И. Спецификация средствами языка XML системы интерфейсов в приложениях реального времени // Тр. СПИИРАН. СПб: Наука, 2009. Вып. 11. С. 159—175.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

8. Никифоров В. В., Шкиртиль В. И. Маршрутные сети — графический формализм представления структуры программных приложений реального времени // Тр. СПИИРАН. СПб: Наука, 2010. Вып. 14. С. 7—28.

9. Никифоров В. В., Павлов В. А. Операционные системы реального времени для встроенных программных комплексов // Программные продукты и системы. 1999. № 4. С. 24—З0.

Сведения об авторе

Виктор Викентьевич Никифоров — д-р техн. наук, профессор; Санкт-Петербургский институт информатики и автоматизации РАН, лаборатория технологий и систем программирования; E-mail: [email protected]

Рекомендована СПИИРАН Поступила в редакцию

16.04.14 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.