Слайд 1 - Кафедра 36 Информационные системы и технологии

advertisement
«Автоматизация процесса поиска
потенциальных взаимных блокировок
в моделях многопоточного
программного обеспечения»
Аспирант кафедры «Информационные системы и технологии» Парфилов И.В.
Научный руководитель: д.т.н., профессор Шумилов Ю.Ю.
ПРОБЛЕМА ВЗАИМНЫХ БЛОКИРОВОК
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
Download