«Автоматизация процесса поиска потенциальных взаимных блокировок в моделях многопоточного программного обеспечения» Аспирант кафедры «Информационные системы и технологии» Парфилов И.В. Научный руководитель: д.т.н., профессор Шумилов Ю.Ю. ПРОБЛЕМА ВЗАИМНЫХ БЛОКИРОВОК 3 Поток 1 1 4 Поток 2 2 Пример взаимной блокировки потоков Многопоточная программа ПО Строк кода Потоков Операций синхронизации JDK 419000 Нет данных 1458 MS Singularity 174601 14 167924 MS Dryad 18093 25 4892 2 ЗАДАЧА ПОИСКА ВЗАИМНЫХ БЛОКИРОВОК Разработка эффективного алгоритма поиска взаимных блокировок Разработка графического интерфейса программного средства анализа моделей Проектирование и разработка программного средства анализа моделей многопоточного ПО Проведение исследования быстродействия предложенных подходов к поиску взаимных блокировок 3 ОСОБЕННОСТИ ВЕРИФИКАЦИИ МНОГОПОТОЧНОГО ПО 4 ПРОВЕРКА МОДЕЛЕЙ Многопоточная программа Модель многопоточной программы Проверка модели Отсутствие потенциальных ситуаций взаимных блокировок Последовательность выполнения потоков, приводящая к их взаимной блокировке 5 ПРИМИТИВЫ СИНХРОНИЗАЦИИ Примитив синхронизации Исключающий семафор (мьютекс) Сигнальная переменная без памяти Сигнальная переменная с памятью Операции над примитивом LOCK, L UNLOCK, U WAIT, W EMIT, E BROADCAST, B WAIT, A POST, P Пример модели многопоточной программы 6 ПРИМЕР МОДЕЛИРОВАНИЯ void function1() { pthread_mutex_lock(&Mutex1); pthread_mutex_lock(&Mutex2); … pthread_mutex_lock(&Mutex2); pthread_mutex_unlock(&Mutex1); } void function2() { pthread_mutex_lock(&Mutex2); pthread_mutex_lock(&Mutex1); … pthread_mutex_lock(&Mutex1); pthread_mutex_unlock(&Mutex2); } int main(int argc, char *argv[]) { pthread_create(&Thread1,NULL, function1,NULL); pthread_create(&Thread2,NULL, function2,NULL); } Модель многопоточной программы, составленная по исходному коду 7 ДОСТАТОЧНОЕ УСЛОВИЕ ОТСУТСТВИЯ ВЗАИМНЫХ БЛОКИРОВОК Пусть имеется система субъектов S = {S1,..., Sn} с точками ветвления и точками зацикливания. Проделаем для субъектов данной системы линеаризацию по точкам зацикливания. Получившуюся систему обозначим S0. Рассмотрим все различные системы субъектов, составленные по следующему принципу: на i-ом месте в системе стоит субъект из декомпозиции Si0. Предположим, что для каждой системы S00 из этого множества выполнены два условия: • для любого исключающего семафора (например, j-го) не выполняются соотношения вида t(Sk00, Lj) ◄L t(Sm00, Lj)), • система S00 слабо локально упорядочена относительно сигнальных переменных. Тогда в основной системе S нет потенциальных ситуаций взаимной блокировки. 8 АЛГОРИТМ ПРОВЕРКИ ДОСТАТОЧНОГО УСЛОВИЯ Система субъектов Построение частного и общего ориентированного графа системы Выделение сильно связных компонент (ССК) в частном орграфе с помощью алгоритма Тарьяна Выделение связных компонент (СК) в общем орграфе с помощью поиска в глубину Выделение сильно связных компонент в полученных связных компонентах Проверка полученных ССК на предмет ложного срабатывания Остались ли ССК? Да Достаточное условие отсутствия взаимных блокировок не выполнено Нет Достаточное условие отсутствия взаимных блокировок выполнено 9 ПРОГРАММНОЕ СРЕДСТВО АНАЛИЗА МОДЕЛЕЙ 10 РЕЗУЛЬТАТ ПРОВЕРКИ ДОСТАТОЧНОГО УСЛОВИЯ 11 РЕЗУЛЬТАТ АНАЛИЗА МОДЕЛИ 12 ИССЛЕДОВАНИЕ БЫСТРОДЕЙСТВИЯ РАЗЛИЧНЫХ ПОДХОДОВ Тестовая модель Количество субъектов Количество разных субъектов Количество различных средств синхронизации Всего операций над средствами синхронизации Модель 1 2 2 2 8 Модель 2 6 2 2 24 Модель 3 3 3 3 16 Модель 4 3 2 3 16 Модель 5 4 3 3 16 Модель 6 8 6 5 32 Модель 7 4 4 5 18 Модель 8 5 4 3 16 Модель 9 5 5 7 26 Модель 10 10 10 7 49 Модель 11 10 10 8 49 Модель 12 10 10 10 56 13 ИССЛЕДОВАНИЕ БЫСТРОДЕЙСТВИЯ РАЗЛИЧНЫХ ПОДХОДОВ № модели Режим Deadlock Analyzer 1 2 3 4 5 7 8 9 10 11 12 Поиск первой взаимной блокировки Кол-во дедлоков Время, с 1 0.083 1 0.125 1 0.110 0 0.121 1 0.182 1 1.747 0 4.875 Не завершен Не завершен Не завершен Не завершен Поиск всех взаимных блокировок Кол-во дедлоков Время, с 4 0.108 36 0.150 504 28.3 0 0.124 96 1.253 Не завершен 0 4.876 Не завершен Не завершен Не завершен Не завершен SPIN Проверка достаточного условия отсутствия взаимных блокировок Возможны Время, ли дедлоки с + + + + + + + + 0.063 0.071 0.089 0.072 0.109 0.103 0.094 0.112 0.109 0.126 0.114 Поиск первой взаимной блокировки Кол-во дедлоков Время, с 1 0.096 1 0.100 1 0.120 0 0.098 1 0.214 1 0.267 0 0.348 Не завершен Не завершен Не завершен Не завершен Поиск всех взаимных блокировок Кол-во дедлоков Время, с 4 0.106 144 0.147 6 0.121 0 0.104 4 0.404 Не завершен 0 0.352 Не завершен Не завершен Не завершен Не завершен 14 ЗАКЛЮЧЕНИЕ 1. Разработан алгоритм проверки выполнения достаточного условия отсутствия потенциальных взаимных блокировок. 2. Разработано программное средство анализа моделей многопоточного программного обеспечения, реализующее метод проверки выполнения достаточного условия отсутствия потенциальных взаимных блокировок. 3. Разработаны программные модули, реализующие методы, основанные на исчерпывающем переборе всех состояний модели. 4. Разработан графический интерфейс пользователя программного средства анализа моделей многопоточного программного обеспечения. 5. Проведено исследование быстродействия всех предложенных подходов к задаче поиска взаимных блокировок в моделях многопоточного программного обеспечения. Показано, что для моделей с большим количеством потоков предложенный метод поиска является единственным применимым на практике. 15