Я читаю лекцию по параллельному и распределенному программированию в рамках своего путешествия по программе Erasmus+. В конце лекции будет заключительный экзамен, в основном объясняющий некоторые обозначения, касающиеся параллельного и распределенного программирования. Поэтому я решил написать всю нотацию в этой лекции здесь.

Процесс — это экземпляр компьютерной программы, который выполняется. Содержит код программы и ее текущую активность

Поток – это наименьшая последовательность запрограммированных инструкций, которой может независимо управлять планировщик, который обычно является частью операционной системы.

Параллельные ↔ процессы перекрываются во времени (выполняются на разных процессорах)

Параллельные ↔ процессы могут перекрываться во времени, но не обязательно (они выполняются на одном или нескольких процессорах).

Распределенные ↔ процессы перекрываются во времени (выполняются на распределенных процессорах, например, в компьютерных кластерах).

  • распределенная система → компьютеры в сети (Интернет)
  • параллельная система → многоядерные процессоры

Таксономия Флинна для классификации компьютерных архитектур

  • SISD (Единый поток инструкций — единый поток данных) Архитектура фон Неймана.
  • MIMD (Multiple Instruction Stream — Multiple Data Stream) Многопроцессорные системы.
  • SIMD (Single Instruction Stream — Multiple Data Stream) Векторные процессоры.
  • MISD (множественный поток инструкций — единый поток данных) Распределенные системы.

Критическая секция. В параллельном программировании критическая секция — это часть многопроцессорной (многопоточной) программы, которая не может выполняться одновременно более чем одним из процессов (потоков) программы. Другими словами, это кусок программы, требующий взаимного исключения доступа.

Взаимное исключение: свойство управления параллелизмом, которое устанавливается с целью предотвращения условий гонки; это требование, чтобы один поток выполнения никогда не входил в свою критическую секцию в то же время, когда другой параллельный поток выполнения входит в свою критическую секцию.

Взаимоблокировка. В параллельном программировании тупик – это ситуация, в которой два или более конкурирующих действия ожидают завершения другого, и поэтому ни одно из них никогда не завершается.

Семафор: абстрактный тип данных, который используется для управления доступом нескольких процессов к общему ресурсу в параллельной системе.

Циклический барьер. Класс, который используется для реализации сценария, в котором один поток ожидает, пока один или несколько потоков завершат свою работу, прежде чем начать обработку.

Обозначения: Критическая секция, Удаленный, Группы ORB: Многопоточное программирование, RMI, CORBA

3 задачи: многопоточная программа, программа на основе сокетов, программа JSP.

Вы можете узнать больше из моего личного блога erkanceylan.com.