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

UptoLike

//{x == 0 x == 1}
< x = x + 2; >
{x == 2 x == 3}
oc
{x == 3}
В этой программе предусловия и постусловия для каждого процес-
са слабее, чем могли бы быть при изолированном их выполнении.
Например, для процесса x = x + 1; можно было бы записать
{x == 0}
x = x + 1;
{x == 1}
Аналогично для второго процесса.
Рассмотрим часто встречающуюся задачу.
Пусть процесс планирует операции диска с перемещаемыми го-
ловками, а другие процессы добавляют операции в очередь. Когда
диск не занят, он выбирает (по некоторому критерию) наилучшую
операцию и начинает ее выполнение. На самом деле здесь реали-
зуется ослабленная ситуация: диспетчер не всегда выполняет наи-
лучшуют операцию, ибо в процессе выполнения может в очереди
появиться еще одна, лучшая операция, после того, как был сделан
выбор. Итак, здесь происходит естественное ослабление условий.
Аналогичным образом можно рассмотреть параллельный ал-
горитм, часто встречающийся п ри приближенном решении д иффе-
ренциальных уравнени й (например, методом сеток).
Пространство задач аппроксимируется конечной сеткой точек
grid[n, n]. Каждой точке (ил и блоку точек) сетки назначается про-
цесс
double grid[n, n];
process PDE[i = 1 to n 1, j = 1 to n 1] {
while ([не сошлось]) {
grid[i, j] = f([окружение точки (i, j)])
}
}
36