ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
23
МОДЕЛЬ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В ВИДЕ ГРАФА
ПРОЦЕСС-РЕСУРС
Параллельные программы всецело зависят от разделяемых компонентов,
поскольку процессоры могут работать над одной задачей, только взаимодействуя.
А единственный способ взаимодействия – возможность для одного процесса запи-
сать во что-то, откуда другой процесс читает. Этим чем-то может быть разделяемая
переменная или разделяемый канал связи. Процессам часто нужно взаимодейство-
вать друг с другом, например, один процесс может передавать данные другому про-
цессу, или несколько процессов могут обрабатывать данные из общего файла. Во
всех этих случаях возникает проблема синхронизации процессов, которая может
решаться приостановкой и активизацией процессов, организацией очередей, блоки-
рованием и освобождением ресурсов. Введем некоторые определения и понятия.
Процессы называются
параллельными,
если они существуют одновременно.
Параллельные процессы можно разделить на следующие две группы:
независимые
(не нуждающиеся во взаимодействии друг с другом)
процессы:
асинхронные
(взаимодействующие и нуждающиеся в периодической
синхронизации) процессы.
Синхронизация процессов —
использование специальных атомических опера-
ций для осуществления взаимодействия между процессами.
Критический ресурс —
ресурс, допускающий обслуживание только одного
процесса за один раз. Если несколько процессов хотят использовать критический
ресурс в режиме разделения, то им следует синхронизировать свои действия, чтобы
ресурс всегда находился в распоряжении не более чем одного из них.
Критические участки —
участки процесса, где происходит обращение к
критическому ресурсу. Критические участки должны быть
взаимоисключаемыми,
т.e. в каждый момент времени не более чем один процесс может быть занят выпол-
нением своего критического относительно некоторого ресурса участка. Обеспечение
(поддержка механизма) взаимоисключения — ключевая задача параллельного про-
граммирования.
Блокировка
— предотвращение выполнения кем-либо чего-либо. Процесс
должен устанавливать блокировку перед входом в критический участок и снимать
ее после выхода. Естественно, если участок заблокирован, то другой процесс
должен ждать снятия блокировки.
При управлении асинхронными параллельными процессами возникает две
проблемы:
1...,15,16,17,18,19,20,21,22,23,24 26,27,28,29,30,31,32,33,34,35,...180