Избегание взаимоблокировок

Содержание

Слайд 2

Взаимоблокировка? Когда несколько процессов/потоков ожидают ресурсы, занятые друг другом, и ни

Взаимоблокировка?

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

из них не может продолжать свое выполнение.
Слайд 3

Взаимоблокировка? Thread 1 Thread 2 Object 1 Object 2 DEADLOCK

Взаимоблокировка?

Thread 1

Thread 2

Object 1

Object 2

DEADLOCK

Слайд 4

Способы предотвращения тупиков основаны на “атаке” одного из условий возникновения взаимоблокировки

Способы предотвращения тупиков основаны на “атаке” одного из условий возникновения взаимоблокировки

Избегание

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

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Слайд 6

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Слайд 7

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии
Слайд 8

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии
Слайд 9

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии

P1

Слайд 10

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии

P1

Слайд 11

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии

P1

P2

Слайд 12

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии

P1

P2

Слайд 13

Алгоритм банкира (Banker's Algorithm) Allocation Max Available Need Work Finish Алгоритм:

Алгоритм банкира (Banker's Algorithm)

Allocation

Max

Available

Need

Work

Finish

Алгоритм:
Инициализировать Work значениями из Available, инициализировать Finish значениями

False, посчитать матрицу Need = Max – Allocation
Искать i, которое удовлетворяет условиям:
Finish[i] = False
Need[i] <= Work
Если таких i нет, то переходим на шаг 4
Work = Work + Allocation[i]
Finish[i] = True
Переходим на шаг 2
Если все значения Finish = True, то система в безопасном состоянии

P1

P2

P0