Обнаружение тупиков на мьютексах в многопоточных приложениях
Статья посвящена разработке метода обнаружения тупиков при использовании в приложениях мьютексов, реализованных по стандарту POSIX. В рамках теории тупиков проанализирован и реализован способ получения информации о блокированных на мьютексах процессах. Показано, что обнаружение замкнутой цепи блокировок соответствует обнаружению цикла в графе запросов — распределений. Описан механизм включения в ядро средств перехвата функции ядра, которая управляет захватом и освобождением потоков на мьютексах. Предложен алгоритм обнаружения тупика на основе полученной информации.
Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
Обнаружение тупиков на мьютексах в многопоточных приложениях
УДК 681.3.066
Обнаружение тупиков на мьютексах
в многопоточных приложениях
В.С. Белоус, В.А. Крищенко, Н.Ю. Рязанова
МГТУ им. <...> Показано, что обнаружение замкнутой цепи блокировок
соответствует обнаружению цикла в графе запросов — распределений. <...> Описан механизм включения в ядро средств перехвата функции ядра, которая
управляет захватом и освобождением потоков на мьютексах. <...> Предложен алгоритм
обнаружения тупика на основе полученной информации. <...> В ОС Linux для
этого могут использоваться такие средства взаимоисключения, как
1 <...> Мьютексы и семафоры являются
средствами блокировки процессов, и процессорное время не
тратится на проверку их занятости. <...> Критическая секция кода начинается захватом мьютекса,
а заканчивается его освобождением. <...> В результате код критической
секции становится атомарным или неделимым. <...> Использование мьютексов для реализации атомарности
Если поток пытается войти в критическую секцию, захваченную
другим потоком, то он будет заблокирован до тех пор, пока другой
поток не выйдет из критической секции. <...> Использование средств взаимоисключения приводит к другим
проблемам, основной из которых является взаимоблокировка потоков,
или тупиковая ситуация, возникающая из-за многократного захвата и
освобождения мьютексов в неправильной последовательности. <...> Средства обнаружения
тупиковых ситуаций для прикладных процессов в ОС Linux отсутствуют. <...> 2
Обнаружение тупиков на мьютексах в многопоточных приложениях
Для обнаружения тупиков используется бихроматический направленный
граф Холта [2], в котором множество вершин разбито на два не
пересекающихся подмножества: вершин-процессов и вершин-ресурсов. <...> Дуги графа могут соединять только вершины из разных подмножеств. <...> Доказанная в [2] теорема утверждает, что замкнутая цепь запросов
является необходимым условием тупика. <...> Если в результате сокращения графа обнаружена
замкнутая цепь запросов <...>
** - вычисляется автоматически, возможны погрешности
Похожие документы: