Асинхронные параллельные процессы и способы их синхронизации
Процессы называются параллельными, если они существуют одновременно. Параллельные процессы могут работать совершенно независимо друг от друга или они могут быть асинхронными— это значит, что им необходимо периодически синхронизироваться и взаимодействовать. Параллельное выполнение нескольких программ заманчиво, как один из вариантов повышения быстродействия, и как следствие – производительности ОС.В отличие от программирования последовательных вычислений, концептуальную основу которого составляет понятие алгоритма, реализуемого по шагам строго последовательно во времени, в параллельном программировании программа порождает совокупность параллельно протекающих процессов обработки информации, полностью независимых. Относительная простота алгоритмов распараллеливания выражений позволяет реализовать их автоматически в ЭВМ с помощью специальных программ или аппаратными средствами.Большее ускорение может быть получено за счет распараллеливания обработки структурных данных. Наиболее известными и простыми программными механизмами синхронизации являются семафоры и события. Семафор - это специальная управляющая переменная, принимающая целочисленные значения. Семафор обычно связан с некоторым конфликтным ресурсом.Механизм семафоров широко используется в языках управления процессами в операционных системах ЭВМ и в ряде универсальных языков программирования. Механизм событий включает управляющие переменные, текущие значения которых отмечают наступление каких-либо программных или системных событий и специальные операторы ожиданиясобытий. Стремление повысить надежность программирования приводит к появлению более сложных механизмов синхронизации: "почтовые ящики" - особые структуры для обмена сообщениями, для которых фиксированы правила работы с ними параллельных процессов; мониторы - наборы процедур и данных, к к-рым процессы могут обращаться только поочередно и к-рые содержат заданные программистом правила организации взаимодействий.Чисто асинхронное П. п. используется для организации вычислений в распределенных вычислительных системах, в которых полностью исключены конфликты по ресурсам. Стремление упростить организацию взаимодействий между процессами с общими ресурсами привлекает внимание к асинхронным методам вычислений, в к-рых разрешен нерегламентированный доступ параллельных процессов к общим ресурсам.Напр., разрабатываются асинхронные алгоритмы, в к-рых параллельные процессы обмениваются данными собщей памятью, причем неупорядоченный доступ к памяти не мешает достижению однозначного результата.