Научная статья на тему 'Асимметричный протокол приоритетных порогов'

Асимметричный протокол приоритетных порогов Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Текст научной работы на тему «Асимметричный протокол приоритетных порогов»

Накладные расходы (%)

4800 9600 19200 38400 76800 153600

* известная техника реализации протоколаТТР/А (обработка 4-х прерываний на слот)

_о_ реализация техники приема без таймаутов (обработка 2-х прерываний на слот)

и подавление избыточных прерываний (обработка одного прерывания на слот)

Рис. 4. Результаты экспериментов по оценке эффективности различных методов реализации протокола ТТР/А

для передающего узла прерывание RDI является избыточным. Отказ от генерации такого избыточного прерывания также обеспечивает дополнительное снижение накладных расходов на реализацию протокола TTP/A.

Результаты измерений эффективности методов реализации протокола TTP/A. Авторами проведены эксперименты по оценке эффективности рассмотренных методов реализации протокола TTP/A. Эксперименты были выполнены с упрощенной версией протокола (фиксированный ведущий узел, фиксированный режим). Такая упрощенная версия протокола TTP/A была реализована для микроконтроллера MC68HC12D60 фирмы Motorola (тактовая частота 8МГц) тремя методами: приведенным в [4] (обработка четырех прерываний на слот); методом приема без обрамления окна приема тайм-аутами (обработка двух прерываний на слот); методом подавления избыточных прерываний (обработка одного

прерывания на слот). Результаты экспериментов приведены на рисунке 4.

Расширение практики применения встроенных компьютерных систем реального времени сопровождается повышением требований к их надежности и отказоустойчивости. Одним из эффективных подходов, ориентированных на удовлетворение таких требований, является построение систем с синхронным выполнением компонент программной системы - синхронных систем. Построение распределенных систем синхронного типа требует использования специальных сетевых протоколов. Такими протоколами являются протоколы семейства TTP, в частности протокол TTP/A. Предложенные авторами методы позволяют повысить эффективность реализации протокола TTP/A в 2-4 раза. Варианты упрощения протокола TTP/A также позволяют минимизировать объемы памяти и процессорного времени, расходуемые на реализацию протокола, повысить прозрачность организации протокола и простоту его реализации.

Список литературы

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

2. Kopetz H. TTP - A Protocol for Fault-Tolerant Real-Time Systems. // Computer, v.27, no.1, Jan 1994.

3. Kopetz H., etc. A Prototype Implementation of a TTP/C Controller. Institute for Technical Informatics < Technical University, Vienna, Austria.

4. Ebner C. Implementation of a TTP/A Prototype. Research Report no. 2/95. Institute for Technical Informatics < Technical University, Vienna, Austria. February, 1995, 34 p.

5. Kopetz H. A Comparition of CAN and TTP. A paper for 15th IFAC Workshop on Distributed Computer Control Systems, Como, Italy, 1998.

6. Kopetz H. Real-Time Systems. Design prinnciples for Distributed Embedded Applications. Kluweer Academic Publisher, Boston.

АСИММЕТРИЧНЫЙ ПРОТОКОЛ ПРИОРИТЕТНЫХ ПОРОГОВ

М.В. Данилов

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

* См. стр.13-19 настоящего номера журнала

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

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

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

33

Работа синхронизирующих механизмов, реализующих П3, характеризуется следующими положениями.

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

ceilr = max prii

{ilrsused _ by (i)}

Задача, захватывая ресурс, тем самым устанавливает соответствующий приоритетный порог.

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

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

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

Таким образом, в качестве средства контроля над инверсией приоритетов П3 реализует идею наследования приоритетов.

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

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

Bi = max csk r

{k,rlkelp(i)^r£used _ by (k)^ceil(r)>pri(i)} '

Что означает: время блокирования г'-й задачи равно наибольшей длине критической секции (cs) k-й задачи и ресурса r, где k и r удовлетворяют следующим условиям: (а) k-я задача имеет приоритет меньший, чем г-я задача; (б) k-я задача использует ресурс r; (в) приоритетный порог ресурса r выше либо равен приоритетному уровню г-й задачи.

Итак, П3 обеспечивает высокую степень предсказуемости и ограниченное время ожидания высо-

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

Сумма инверсий. Важной характеристикой системы реального времени (СРВ) является степень пессимизма механизма защиты разделяемых ресурсов, контролирующего инверсию приоритетов. При переходе от одного протокола к другому степень пессимизма меняется. Изучение этих изменений количественными методами требует, чтобы пессимизм был измеримой величиной. Соответствующую характеристику назовем суммой инверсий и определим ее как сумму времени блокирования по всем задачам, выполнение которых было отложено по причине инверсии приоритетов, вызванной захватом г-й задачей ресурса r.

Тогда сумма инверсий для П3 будет вычисляться по формуле: St= csir х (ceilr - prit).

Сумма инверсий для протокола приоритетных порогов равна произведению длинны критической секции г'-й задачи по отношению к ресурсу r и разности между высотой приоритетного порога ресурса r и приоритетным уровнем г'-й задачи (см. рис. 1). Длина критической секции служит оценкой времени блокирования. Разность между высотой приоритетного порога ресурса и приоритетом захватившей его задачи ха-выполнение которых отло-

ceilr Ap prii

Рис. 1. Графическая интерпретация суммы инверсии для П3

рактеризует число задач, жено по причине инверсии приоритетов (традиционно в СРВ каждой задаче выделяется свой приоритетный уровень).

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

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

Читатели и писатели. Под разделяемым ресурсом обычно понимают набор данных, совместно используемый несколькими задачами, вследствие чего возникает опасность нарушения их целостности [2].

34

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

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

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

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

Асимметричный П3. В основе разработанной автором статьи модификации П3 - асимметричного П3 (АП3 ) - лежит идея разделения обращений к разделяемому ресурсу на обращение для чтения и обращение для изменения разделяемых данных.

В соответствии с этим положением первое свойство оригинального П3 изменяется следующим образом.

Каждому ресурсу ставится в соответствие два приоритетных порога: читателей и писателей. Порог читателей устанавливается при удовлетворении запроса задачи-читателя и численно равен приоритету задачи с наибольшим приоритетом из числа тех задач, что могут произвести захват данного ресурса для записи: ceil_readr= max prit.

{i\remod ified _by(i)}

Порог писателей устанавливается при удовлетворении запроса задачи-писателя и численно равен приоритету задачи с наибольшим приоритетом из числа задач, производящих любое обращение к данному ресурсу: ceil_writer= max prit.

{^reused _by(i)}

При этом формула для нахождения максимального времени ожидания задачей освобождения ресурса приобретет вид:

B=

max

{k,r,tikeip(i)n(r ,t)eused_ by(k)~ ceii(r,t)> pri(i)}

cs,

k,r,t

Что означает: время блокирования г-й задачи равно наибольшей длине критической секции (с«) к-й задачи и ресурса г по обращению типа (, где к, г и (

удовлетворяют следующим условиям: (а) k-я задача имеет приоритет меньший, чем i-я задача; (б) k-я задача производит обращение типа t к ресурсу r; (в) приоритетный порог ресурса r по обращению типа t выше либо равен приоритетному уровню г-й задачи.

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

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

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

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

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

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

Сумма инверсий для АП3 при простом захвате ресурса будет вычисляться по формуле:

Si= csw х max(ceilrt- prit, 0).

Для вычисления суммы инверсий вложенных обращений к разделяемым данным будет использоваться формула: Si = (csirrd - csirwr ) X (ceilr,rd - prii )+ +csi,r,wr X (ceilr,wr - prii ).

35

Сформулируем необходимое и достаточное условие снижения пессимизма механизма защиты ресурса г при переходе от оригинального П3 к АП3.

Переход от П3 к АП3 будет сопровождаться уменьшением суммы инверсий при обращениях к ресурсу г тогда и только тогда, когда выполняются следующие два условия:

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

- существуют как минимум две задачи-читателя.

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

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

Рассмотрим, как переход к АП3 позволяет добиться выполнимости приложения, невыполнимого в случае использования оригинального П3.

Три задачи: т1 с высшим приоритетом, т2 со средним и т3 с низшим могут производить обращение к разделяемым данным (ресурс г) для чтения, записи и чтения соответственно. Причем работа задачи-писателя т2 с данными представима цепочкой действий чтение-обработка-запись, на протяжении выполнения которой данные не должны изменяться другими задачами. Согласно П3 приоритетный порог ресурса г устанавливается на уровне приоритета задачи т, то есть любое обращение задачи к разделяемым данным будет производиться в режиме взаимного исключения.

На рисунке 2 показано поведение системы в этом случае. Задача со средним приоритетом т2 захватывает ресурс г и в тот же момент ((2) вытесняется высокоприоритетной т1. Задача т1 запрашивает доступ к разделяемому ресурсу, но так как ресурс уже занят задачей т2, приостанавливается до момента

его освобождения. После возобновления (момент (4) задача т1 завершает выполнение ((5) с опозданием, не уложившись в установленные сроки ((¡¡). Выполнение следующего экземпляра задачи т1 блокируется низкоприоритетной задачей-читателем т3 на протяжении интервала 19-110. Как видно из рисунка, длина критической секции задачи т3 достаточно велика, поэтому т1 и в этом случае нарушает установленные сроки выполнения ((12>^2). Таким образом, приложение невыполнимо.

В случае применения АП3 ресурсу г ставится в соответствие два приоритетных порога, высота порога для чтения устанавливается на уровне задачи-писателя (т2), уровень порога для записи совпадает с приоритетом задачи т1. Таким образом разрешается перекрытие во времени критических секций задач-читателей (т1 и т3). Однако остается проблема длительного блокирования задачей-писателем (т2) задачи-читателя (т1). Решить ее позволяет использование того факта, что работа задачи-писателя с разделяемыми данными производится по схеме чтение-обработка-запись. Работу задачи т1 к разделяемым данным следует построить в виде обращения к ресурсу г для чтения с вложенным в него обращением для записи (см. рис. 3).

Как видно из рисунка 3, использование АП3 позволяет добиться выполнимости набора задач, невыполнимого в случае П3. Действительно, выполнение высокоприоритетной задачи т не блокируется больше задачами т2 и т3 на время чтения разделяемых данных, продолжительность интервала, на протяжении которого т2 работает в режиме взаимного исключения с остальными задачами, достаточно мала и не приводит к нарушению установленных для т1 сроков выполнения.

Список литературы

1. Tindell K., Hansson H. Real Time Systems by Fixed Priority Scheduling. DoCS, Uppsala University, 1997.

2. Audsley N.C. Resource Control For Hard Real-Time Systems. University of York, UK, 1991.

3. Дейтел Г. Введение в операционные системы. - М.: Мир. -1987. - Т.1. - С.137-140.

т <3 <4 d1 <8 <9 d2|

г1 — T2 <2 <5 <6

<7 _

-4-; г)-

Задача ожидает освобождения ресурса Задача является текущей

4TL

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

Задача готова стать текущей

Задача захватила ресурс г для записи

Задача захватила ресурс г для чтения

Рис. 3. Гибкость асимметричного П

36

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