Вычислительная математика Учебно-практическая задача Пути достижения параллелизма Моделирование и анализ параллельных вычислений Каскадная схема суммирования

Процессы и ресурсы Учебно-практическая задача

Модели функционирования параллельных программ

Взаимодействие и взаимоисключение процессов

Алгоритм Деккера

В алгоритме Деккера предлагается объединение предложений вариантов 1 и 4 решения проблемы взаимоисключения.

 
int ProcessNum=1; // номер процесса для доступа к ресурсу int ResourceProc1 = 
0; // = 1 – ресурс занят процессом 1 int ResourceProc2 = 0; // = 1 – ресурс занят 
процессом 2 Process_1() { while (1) { ResourceProc1 = 1; // процесс 1 пытается 
занять ресурс /* цикл ожидания доступа к ресурсу */ while ( ResourceProc2 == 1 
) { if ( ProcessNum == 2 ) { ResourceProc1 = 0; // повторять, пока ресурс занят 
процессом 2 while ( ProcessNum == 2 ); ResourceProc1 = 1; } } < Использование 
общего ресурса > ProcessNum = 2; ResourceProc1 = 0; } } Process_2() { while 
(1) { ResourceProc2 = 1; // процесс 2 пытается занять ресурс /* цикл ожидания 
доступа к ресурсу */ while ( ResourceProc1 == 1 ) { if ( ProcessNum == 1 ) { ResourceProc2 
= 0; // повторять, пока ресурс используется процессом 1 while ( ProcessNum == 
1 ); ResourceProc2 = 1; } } < Использование общего ресурса > ProcessNum 
= 1; ResourceProc2 = 0; } } 

Алгоритм Деккера гарантирует корректное решение проблемы взаимоисключения для двух процессов. Управляющие переменные ResourceProc1, ResourceProc1 обеспечивают взаимоисключение, переменная ProcessNum исключает возможность бесконечного откладывания. Если оба процесса пытаются получить доступ к ресурсу, то процесс, номер которого указан в ProcessNum, продолжает проверку возможности доступа к ресурсу (внешний цикл ожидания ресурса). Другой же процесс в этом случае снимает свой запрос на ресурс, ожидает своей очереди доступа к ресурсу (внутренний цикл ожидания) и возобновляет свой запрос на ресурс.

Алгоритм Деккера может быть обобщен на случай произвольного количества процессов (см. [16]), однако, такое обобщение приводит к заметному усложнению выполняемых действий. Кроме того, программное решение проблемы взаимоисключения процессов приводит к нерациональному использованию процессорного времени ЭВМ (процессу, ожидающему освобождения ресурса, постоянно требуется процессор для проверки возможности продолжения – активное ожидание (busy wait)).

Главной отличительной особенностью многопроцессорной вычислительной системы является ее производительность, т.е. количество операций, производимых системой за единицу времени. Различают пиковую и реальную производительность. Под пиковой понимают величину, равную произведению пиковой производительности одного процессора на число таких процессоров в данной машине. При этом предполагается, что все устройства компьютера работают в максимально производительном режиме.

Информатика, черчение, математика