Теория распараллеливания и синхронизация. Демьянович Ю.К - 24 стр.

UptoLike

Если выражение x = y + z реализовано загрузкой значения y в ре-
гистр с последующим прибавлением значения z, то окончательным
значением x могут быть числа 0, 1, 2, 3.
Этот эффект происходит из-за того, что в качестве y могут
фигурировать числа 0, 1, а в качестве z числа 0, 2; все зависит
от взаимной скорости выполнения первого и второго процессов.
Предположим, что ВС имеет следующие свойства:
1) Значения базовых типов (int и др.) хранятся в элементах
памяти (например, в словах), которые считываются и зап исывают-
ся неделимыми операциями.
2) Значения обрабатываются по схеме:
помещаются в регистры;
к ним применяются операции;
результаты помещаются обратно в память.
3) Каждый процесс имеет собственный набор регистров; это
реализуется или путем предоставления каждому процессу отдель-
ного набора физических регистров или виртуально: сохранением и
восстановлением значений регистров при выполнении различных
процессов (это называется переключением контекста, ибо реги-
стры образуют контекст выполнения процесса).
4) Любые промежуточные результаты, появляющиеся в вы-
числениях, сохраняются в областях, принадлежащих исполняемо-
му процессу регистрах или в стеке процесса).
Благодаря этому, те операции процесса, промежуточные зна-
чения которых не видны другим процессам, также могут рассмат-
риваться как неделимые.
Ссылка на переменную, изменяемую другим процессом, назы-
вается критической ссылкой данного процесса.
Если оператор присваивания содержи т не более одной крити-
ческой ссылки, то говорят, что он удовлетворяет условию “не боль-
ше одного”.
С точки зрения других процессов, оператор присваивания, удо-
влетворяющий условию “не больше одного”, может рассматривать-
ся как неделимый оператор, ибо упомянутые процессы не могут
детализировать картину вычисления этого оператора.
Рассмотрим пр ограм му
int x = 0, y = 0;
25