Параллелизм относится к способности системы выполнять несколько задач посредством одновременного выполнения или разделения времени (контекстного переключения), совместного использования ресурсов и управления взаимодействиями. Параллелизм улучшает отзывчивость, пропускную способность и масштабируемость в современных вычислениях, включая: [1] [2] [3] [4] [5]
Параллелизм — это более широкая концепция, которая охватывает несколько связанных идей, в том числе: [1] [2] [3] [4] [5]
Поскольку вычисления в параллельной системе могут взаимодействовать друг с другом во время выполнения, количество возможных путей выполнения в системе может быть чрезвычайно большим, а конечный результат может быть неопределенным . Параллельное использование общих ресурсов может быть источником неопределенности, приводящей к таким проблемам, как взаимоблокировки и нехватка ресурсов . [7]
Проектирование параллельных систем часто влечет за собой поиск надежных методов координации их выполнения, обмена данными, распределения памяти и планирования выполнения для минимизации времени отклика и максимизации пропускной способности . [8]
Теория параллелизма была активной областью исследований в теоретической информатике . Одним из первых предложений была основополагающая работа Карла Адама Петри по сетям Петри в начале 1960-х годов. С тех пор было разработано множество формализмов для моделирования и рассуждений о параллелизме.
Разработан ряд формализмов для моделирования и понимания параллельных систем, в том числе: [9]
Некоторые из этих моделей параллелизма в первую очередь предназначены для поддержки рассуждений и спецификации, в то время как другие могут использоваться на протяжении всего цикла разработки, включая проектирование, реализацию, доказательство, тестирование и моделирование параллельных систем. Некоторые из них основаны на передаче сообщений , в то время как другие имеют различные механизмы для параллелизма.
Распространение различных моделей параллелизма побудило некоторых исследователей разработать способы объединения этих различных теоретических моделей. Например, Ли и Санджованни-Винчентелли продемонстрировали, что так называемая модель «маркированного сигнала» может быть использована для предоставления общей структуры для определения денотационной семантики множества различных моделей параллелизма, [11] в то время как Нильсен, Сассоне и Винскел продемонстрировали, что теория категорий может быть использована для предоставления аналогичного унифицированного понимания различных моделей. [12]
Теорема о представлении параллелизма в модели акторов обеспечивает довольно общий способ представления параллельных систем, которые закрыты в том смысле, что они не получают сообщений извне. (Другие параллельные системы, например, исчисления процессов, могут быть смоделированы в модели акторов с использованием двухфазного протокола фиксации . [13] ) Математическое обозначение, обозначенное замкнутой системой S, строится с все более хорошими приближениями из начального поведения, называемого ⊥ S, с использованием аппроксимирующей поведение функциональной прогрессии S для построения обозначения (значения) для S следующим образом: [14]
Таким образом, S можно математически охарактеризовать с точки зрения всех его возможных поведений.
Различные типы темпоральной логики [15] могут использоваться для помощи в рассуждениях о параллельных системах. Некоторые из этих логик, такие как линейная темпоральная логика и логика дерева вычислений , позволяют делать утверждения о последовательностях состояний, через которые может проходить параллельная система. Другие, такие как логика дерева вычислений действий, логика Хеннесси–Милнера и темпоральная логика действий Лампорта , строят свои утверждения из последовательностей действий (изменений состояния). Основное применение этих логик — написание спецификаций для параллельных систем. [7]
Параллельное программирование охватывает языки программирования и алгоритмы, используемые для реализации параллельных систем. Параллельное программирование обычно [ кем? ] считается более общим, чем параллельное программирование, поскольку оно может включать произвольные и динамические шаблоны общения и взаимодействия, тогда как параллельные системы обычно [ по мнению кого? ] имеют предопределенный и хорошо структурированный шаблон общения. Основные цели параллельного программирования включают корректность , производительность и надежность . Параллельные системы, такие как операционные системы и системы управления базами данных, обычно разрабатываются [ кем? ] для работы в течение неограниченного времени, включая автоматическое восстановление после сбоя, и не завершаются неожиданно (см. Управление параллелизмом ). Некоторые [ нужен пример ] параллельные системы реализуют форму прозрачного параллелизма, в которой параллельные вычислительные сущности могут конкурировать за один ресурс и совместно использовать его, но сложности этой конкуренции и совместного использования скрыты от программиста.
Поскольку они используют общие ресурсы, параллельные системы в целом [ по мнению кого? ] требуют включения некоторого [ нужен пример ] вида арбитра где-то в их реализации (часто в базовом оборудовании), чтобы контролировать доступ к этим ресурсам. Использование арбитров вносит возможность неопределенности в параллельные вычисления , что имеет серьезные последствия для практики, включая корректность и производительность. Например, арбитраж вводит неограниченный недетерминизм , который вызывает проблемы с проверкой модели , поскольку он вызывает взрыв в пространстве состояний и может даже привести к тому, что модели будут иметь бесконечное количество состояний.
Некоторые модели параллельного программирования включают сопроцессы и детерминированный параллелизм . В этих моделях потоки управления явно уступают свои временные интервалы либо системе, либо другому процессу.
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )