abstract: Рассматриваются средства организации параллельных вычислений на ЭВМ. Приводятся отличия параллельной и конвейерной обработки данных. Содержится подробное описание способов обмена данными между параллельно выполняющимися задачами. Выделяется три основных способа межзадачного обмена данными: на основе разделяемой памяти, передача сообщений, механизма обещаний. Механизм разделяемой памяти крайне прост в реализации, обладает высоким быстродействием, но не лишен определенных проблем: состояний гонок и взаимоблокировок. Приводятся описания способов синхронизации параллельно выполняющихся задач: мьютексов, семафоров и различных видов мониторов. Следует заметить, что межзадачный обмен данными в большинстве промышленно применяемых средах программирования реализован именно этим способом. Описаны различные реализации межзадачного обмена данными на основе передачи сообщений. Как утверждают ранние исследователи данного механизма, он, скорее, базируется на физике, нежели на математической логике, теории множеств, алгебре и иных математических дисциплинах Передача данных может осуществляться синхронно и асинхронно. Особое внимание уделено модели акторов как наиболее перспективному и глубоко теоретически и практически проработанному способу. Также приведено описание и других примеров организации межзадачного обмена на основе передачи сообщений: аморфные вычисления, программирование потоками данных и SОАР. Описаны два типа межзадачного обмена данными на основе механизма обещаний: явный и неявный. Для всех описываемых средств организации параллельных вычислений приведены примеры программных реализаций. Например, в pthreads – реализации многопоточной обработки для POSIX-совместимых операционных систем – используется разделяемая память, а в языке Еrlаng – модель акторов. Реализации механизма обещаний существуют для языков Jаvа, LISР и Наsкеll. Делается вывод о том, что способ, которым организуются параллельные вычисления, следует выбирать исходя из следующих критериев: решаемой задачи, используемой среды программирования, возможности или невозможности совмещения сразу нескольких способов.
keywords: параллельные вычисления, процесс, мьютекс, конвейер