Я читаю лекцию по параллельному и распределенному программированию в рамках своего путешествия по программе Erasmus+. В конце лекции будет заключительный экзамен, в основном объясняющий некоторые обозначения, касающиеся параллельного и распределенного программирования. Поэтому я решил написать всю нотацию в этой лекции здесь.
Процесс — это экземпляр компьютерной программы, который выполняется. Содержит код программы и ее текущую активность
Поток – это наименьшая последовательность запрограммированных инструкций, которой может независимо управлять планировщик, который обычно является частью операционной системы.
Параллельные ↔ процессы перекрываются во времени (выполняются на разных процессорах)
Параллельные ↔ процессы могут перекрываться во времени, но не обязательно (они выполняются на одном или нескольких процессорах).
Распределенные ↔ процессы перекрываются во времени (выполняются на распределенных процессорах, например, в компьютерных кластерах).
- распределенная система → компьютеры в сети (Интернет)
- параллельная система → многоядерные процессоры
Таксономия Флинна для классификации компьютерных архитектур
- SISD (Единый поток инструкций — единый поток данных) Архитектура фон Неймана.
- MIMD (Multiple Instruction Stream — Multiple Data Stream) Многопроцессорные системы.
- SIMD (Single Instruction Stream — Multiple Data Stream) Векторные процессоры.
- MISD (множественный поток инструкций — единый поток данных) Распределенные системы.
Критическая секция. В параллельном программировании критическая секция — это часть многопроцессорной (многопоточной) программы, которая не может выполняться одновременно более чем одним из процессов (потоков) программы. Другими словами, это кусок программы, требующий взаимного исключения доступа.
Взаимное исключение: свойство управления параллелизмом, которое устанавливается с целью предотвращения условий гонки; это требование, чтобы один поток выполнения никогда не входил в свою критическую секцию в то же время, когда другой параллельный поток выполнения входит в свою критическую секцию.
Взаимоблокировка. В параллельном программировании тупик – это ситуация, в которой два или более конкурирующих действия ожидают завершения другого, и поэтому ни одно из них никогда не завершается.
Семафор: абстрактный тип данных, который используется для управления доступом нескольких процессов к общему ресурсу в параллельной системе.
Циклический барьер. Класс, который используется для реализации сценария, в котором один поток ожидает, пока один или несколько потоков завершат свою работу, прежде чем начать обработку.
Обозначения: Критическая секция, Удаленный, Группы ORB: Многопоточное программирование, RMI, CORBA
3 задачи: многопоточная программа, программа на основе сокетов, программа JSP.
Вы можете узнать больше из моего личного блога erkanceylan.com.