4817
правок
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) мНет описания правки |
||
Строка 25: | Строка 25: | ||
== Формулировка задачи == | == Формулировка задачи == | ||
Простейшим вариантом синхронизации часов является внешняя синхронизация, при которой у одного из процессоров, называемого источником, имеются часы без дрейфа, и задачей всех процессоров является поддержка как можно более точной оценки текущего показания часов источника. Эта формулировка соответствует ньютоновской модели, в которой процессоры находятся в четко определенной системе временных координат, а часы источника отсчитывают стандартное время. Говоря формально, при внешней синхронизации каждый процессор v имеет две выходные переменные | Простейшим вариантом синхронизации часов является ''внешняя синхронизация'', при которой у одного из процессоров, называемого источником, имеются часы без дрейфа, и задачей всех процессоров является поддержка как можно более точной оценки текущего показания часов источника. Эта формулировка соответствует ньютоновской модели, в которой процессоры находятся в четко определенной системе временных координат, а часы источника отсчитывают стандартное время. Говоря формально, при внешней синхронизации каждый процессор <math>v</math> имеет две выходные переменные <math>\Delta_v</math> и <math>\varepsilon_v</math>; оценка <math>v</math> времени источника в заданном состоянии равна LTv + Av, где LTv – текущее локальное время в v. От алгоритма требуется, чтобы разница между временем источника и его оценкой была не более Ѵв (заметим, что Av, как и Ѵв, может динамически меняться в процессе выполнения). О производительности алгоритма судят по значению переменных Ѵв: чем они меньше, тем лучше. | ||
В другом варианте задачи, называемом внутренней синхронизацией, нет выделенного процессора, а требование сводится к тому, чтобы все часы имели значения, близкие друг к другу. Определение этого варианта не так уж просто, поскольку тривиальные решения (например, «установить на всех часах значение 0 на все время») должны быть исключены. | В другом варианте задачи, называемом внутренней синхронизацией, нет выделенного процессора, а требование сводится к тому, чтобы все часы имели значения, близкие друг к другу. Определение этого варианта не так уж просто, поскольку тривиальные решения (например, «установить на всех часах значение 0 на все время») должны быть исключены. | ||
Строка 32: | Строка 32: | ||
Определение 1. Пусть f$ – | Определение 1. Пусть f$ – ракурс выполнения системы, а H – спецификация реального времени для f$. Граф синхронизации, порожденный f$ и H, является ориентированным взвешенным графом Грц = (V;E;w), где V – множество событий в /}, и для каждой упорядоченной пары событий p q в /}, такой, что H(p; q) < 1, существует ориентированное ребро (p; q) 2 E. | ||
Строка 38: | Строка 38: | ||
Естественное понятие расстояния от события p до события q в графе синхронизации Г, обозначаемое drip, Ф> определяется длиной кратчайшего взвешенного пути от p до q, или бесконечностью, если q недостижимо из p. Поскольку веса могут быть отрицательными, необходимо доказать, что понятие точно определено: действительно, было показано, что если Грн получен из выполнения с | Естественное понятие расстояния от события p до события q в графе синхронизации Г, обозначаемое drip, Ф> определяется длиной кратчайшего взвешенного пути от p до q, или бесконечностью, если q недостижимо из p. Поскольку веса могут быть отрицательными, необходимо доказать, что понятие точно определено: действительно, было показано, что если Грн получен из выполнения с ракурсом f$, удовлетворяющего спецификации реального времени H, то Грн не содержит ориентированных циклов с отрицательным весом. | ||
Строка 44: | Строка 44: | ||
Теорема 1. Пусть a – выполнение с | Теорема 1. Пусть a – выполнение с ракурсом f$. Тогда a удовлетворяет спецификации реального времени H тогда и только тогда, когда RT(p) - RT(q) < dr(p, q) + LT(p) - LT(q) для любых двух событий p и q в Грн. | ||
Строка 50: | Строка 50: | ||
Теорема 2. Пусть Грн = (V, E, w) – граф синхронизации, полученный из | Теорема 2. Пусть Грн = (V, E, w) – граф синхронизации, полученный из ракурса f$, удовлетворяющего спецификации реального времени H. Тогда для любого заданного события p0 2 V и для любого конечного числа N > 0 существуют исполнения ao и a\ с ракурсом f$, удовлетворяющие спецификации H, такие, что выполняются следующие присваивания реального времени. | ||
В aQ для всех q 2 V с dpiq,po) < 1, RTao((j) = LT(q) + dp(q,po)> и для всех q 2 V с dp(q,po) = | В aQ для всех q 2 V с dpiq,po) < 1, RTao((j) = LT(q) + dp(q,po)> и для всех q 2 V с dp(q,po) = | ||
Строка 56: | Строка 56: | ||
С алгоритмической точки зрения важным недостатком результатов теорем 1 и 2 является то, что они зависят от | С алгоритмической точки зрения важным недостатком результатов теорем 1 и 2 является то, что они зависят от ракурса выполнения, которое может неограниченно расти. Так ли оно необходимо? Последний общий результат в работе [10] отвечает на этот вопрос утвердительно. В частности, было показано, что в некотором варианте вычислительной модели ветвящейся программы пространственная сложность любого алгоритма синхронизации, работающего с произвольными спецификациями реального времени, не может быть ограничена функцией от размера системы. Результат доказывается путем рассмотрения нескольких сценариев на простой системе из четырех процессоров на одной линии. | ||
Строка 73: | Строка 73: | ||
== Применение == | == Применение == | ||
Теорема 1 сразу же дает алгоритм синхронизации часов: каждый процессор поддерживает известное ему представление | Теорема 1 сразу же дает алгоритм синхронизации часов: каждый процессор поддерживает известное ему представление части графа синхронизации. Это можно сделать с помощью протокола полной информации: этот граф отправляется в каждом исходящем сообщении, и всякий раз, когда приходит сообщение, граф расширяется, чтобы включить новую информацию из графа в пришедшем сообщении. Согласно Теореме 2, полученный таким образом граф синхронизации представляет в любой момент времени всю доступную информацию, необходимую для оптимальной синхронизации. Для примера рассмотрим внешнюю синхронизацию. Непосредственно из определений следует, что все события, связанные с часами без дрейфа (например, события в узле-источнике), находятся на расстоянии 0 друг от друга в графе синхронизации и поэтому могут рассматриваться при вычислении расстояния как один узел s. Теперь, предполагая, что часы источника действительно показывают реальное время, легко увидеть, что для любого события p, | ||
RT(p) 2 [LT(p) - d(s; p); LT(p) + d(p; s)] ; | RT(p) 2 [LT(p) - d(s; p); LT(p) + d(p; s)] ; | ||
и, более того, никаким корректным алгоритмом нельзя получить лучшие границы. | и, более того, никаким корректным алгоритмом нельзя получить лучшие границы. | ||
Строка 87: | Строка 87: | ||
== Открытые вопросы == | == Открытые вопросы == | ||
Одной из центральных проблем при синхронизации часов являются ошибочные выполнения, при которых нарушается спецификация реального времени. Графы синхронизации выявляют любую обнаруживаемую ошибку: | Одной из центральных проблем при синхронизации часов являются ошибочные выполнения, при которых нарушается спецификация реального времени. Графы синхронизации выявляют любую обнаруживаемую ошибку: ракурсы, не имеющие выполнения, соответствующего спецификации реального времени, приводят к графам синхронизации с отрицательными циклами. Однако желательно преодолеть такие ошибки – например, удалив из графа синхронизации некоторые ребра, чтобы разорвать все циклы с отрицательным весом. Естественной целью в этом случае является удаление наименьшего числа ребер. Эта задача является APX-трудной, поскольку она обобщает задачу о множестве обратных дуг. К сожалению, нетривиальные приближенные алгоритмы для ее решения неизвестны. | ||
== См. также == | == См. также == |
правок