- •Лекція №7 Паралельні обчислення: взаємовиключення і багатозадачність
- •7.1. Принципы параллельных вычислений
- •7.1.2. Взаимодействие процессов
- •7.1.3. Требования к взаимным исключениям
- •7.2. Взаимоисключения: программный подход
- •7.2.1. Алгоритм Деккера
- •Листинг 7.1. Алгоритм Деккера для двух процессов
- •7.2.2. Алгоритм Петерсона
- •Листинг 7.2. Алгоритм Петерсона для двух процессов
- •7.3. Взаимоисключения: аппаратная поддержка
- •7.3.2. Инструкция обмена
- •7.3.3. Свойства подхода, использующего машинные инструкции
7.3.3. Свойства подхода, использующего машинные инструкции
Подход, основанный на использовании специальной машинной инструкции для осуществления взаимных исключений, имеет ряд преимуществ.
Он применим к любому количеству процессов, разделяющих основную память.
Этот подход очень прост, а потому легко проверяем.
Он может использоваться для поддержки множества критических разделов, каждый из которых может быть определен при помощи своей собственной переменной.
Однако у такого подхода имеются и свои серьезные недостатки.
Используется пережидание занятости. Следовательно, если процесс находиться в ожидании доступа к критическому разделу, он продолжает потреблять процессорное время.
Возможно голодание. Если процесс покидает критический раздел, а вход в него ожидают несколько других процессов, то выбор ожидающего процесса произволен. Следовательно, может оказаться, что один из процессов будет ожидать входа в критический раздел бесконечно.
Возможна взаимоблокировка. Рассмотрим следующий сценарий в однопроцессорной системе. Процесс Р1 выполняет специальную инструкцию (т.е. TestSet или Exchenge) и входит в критический раздел. После этого процесс прерывается процессом Р2 с более высоким приоритетом. Если Р2 попытается обратиться к тому же ресурсу, что и Р1, ему будет отказано в доступе в соответствии механизмом взаимоисключений, и он войдет в цикл пережидания занятости. Однако в силу того что процесс Р1 имеет более низкий приоритет, он не получит возможности продолжить работу, так как в наличии имеется активный процесс с более высоким приоритетом.
Из-за наличия недостатков как в случае использования программных, так и аппаратных решений нам следует рассмотреть и другие механизмы обеспечения взаимоблокировок.