Параллельное программирование: Учебное пособие, страница 7

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

Распределенное программирование (distributed programming) — это совокупность языковых средств и методов программирования систем распределенной обработки данных в сетях ЭВМ и многомашинных комплексах. Одновременность функционирования разных компонент распределенной системы играет важную роль в этом определении.

Программа — это статический объект, представленный текстом с определенной заранее лексикой, синтаксисом и семантикой на физическом носителе любого вида (бумага, магнитный диск, запоминающее устройство вычислительной машины и тому подобное). Перенос текста программы с одного физического носителя на другой не изменяет текста программы, а формирует лишь очередную ее копию.

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

Процесс — это динамическая категория, представляющая последовательность инициируемых тактовым генератором процессора протяженных во времени физических действий над различными объектами, которые изменяют свое состояние. Таким образом, в каждый момент своего развития процесс обладает совокупностью состояний, достигнутых им к некоторому моменту времени. В вычислительных процессах отображением этих состояний в любой текущий момент служат значения переменных (объектов), которые упоминались в тексте программы к этому моменту. Каждому вычислительному процессу присущ свой набор переменных. Часть из них может принадлежать и другим процессам. На оси естественного времени любой процесс имеет точку начала и точку конца. Разность этих моментов определяет время существования процесса.

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

·  порождение процесса, которое задает точку начала процесса ;

·  остановку процесса, при котором вычислительный процесс с момента  продолжает существовать, но состояния своего не изменяет;

·  запуск процесса, в результате которого с момента  вычислительный процесс продолжает изменять свое состояние;

·  завершение процесса, которое определяет точку конца процесса .

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

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