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

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

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

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

Реализованный в программе способ гарантирует взаимоисключение, однако такому решению присущи два существенных недостатка:

-       ресурс используется процессами строго последовательно (по очереди) и, как результат, при разном темпе развития процессов общая скорость выполнения программы будет определяться наиболее медленным процессом;

-       при завершении работы какого-либо процесса другой процесс не сможет воспользоваться ресурсом и может оказаться в постоянно блокированном состоянии.

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

Попытка 2

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

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

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

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

-      успешность однократного выполнения не может служить доказательством правильности функционирования параллельной программы даже при неизменных параметрах решаемой задачи;

-      для выявления ошибочных ситуаций необходима проверка разных временных траекторий выполнения параллельных процессов.

Наряду с расширением области применения, по мере совершенствования МВС происходит усложнение и увеличение количества задач в областях, традиционно использующих высокопроизводительную вычислительную технику. В настоящее время выделен круг фундаментальных и прикладных проблем, объединенный понятием "Grand challenges", эффективное решение которых возможно только с использованием сверхмощной вычислительных ресурсов.

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