Распределенные автоматизированные системы
Лычёв А.В. © изд-во ВМИРЭ © 2007 год
161
активность данного процесса (например: 42.1.6). Метка вре-
мени, таким образом, получает кортеж (вектор) параметров.
Большинство распределенных алгоритмов требуют, чтобы
один из процессов выполнял главенствующую роль над другими.
В разных источниках такой процесс называется координатором,
инициатором, диспетчером и так далее. В настоящем пособии
процесс, выполняющий в распределенной системе главенствую-
щую роль над другими, будем называть ведущим или пилотным
процессом. Процессы, подчиненные ведущему процессу, будем
называть ведомыми процессами. Для определения ведущего про-
цесса существуют два алгоритма, построенных на наличии уни-
кальных приоритетных номеров у всех процессов, функциони-
рующих в системе:
1. Мажоритарный алгоритм. Когда один из процессов за-
мечает, что ведущий процесс перестал отвечать на запросы,
он посылает всем процессам с бóльшими, чем у себя номерами,
сообщение «голосование». Если никто не отвечает, то про-
цесс, пославший данное сообщение, становится ведущим, о чем
уведомляет все остальные процессы. Если один из процессов с
бóльшим номером ответил, то процесс, пославший данное сооб-
щение, остается ведомым. В любой момент времени процесс мо-
жет получить сообщение «голосование» от другого процесса с
меньшим номером. При получении такого сообщения процесс да-
ет квитанцию о готовности стать ведущим и сам, в свою оче-
редь, организует отправку сообщения «голосование». ведущим
процессом в мажоритарном алгоритме всегда является самый
приоритетный процесс;
2. Кольцевой алгоритм. Этот алгоритм работает при на-
личии физического или логического упорядочивания процессов,
то есть когда каждый процесс имеет информацию о том, какой
процесс является его преемником. Когда один из процессов
замечает, что ведущий процесс перестал отвечать на запросы,
он посылает своему преемнику сообщение «голосование», со-
держащее свой уникальный в системе приоритетный номер. Про-
цесс, получивший сообщение «голосование», добавляет к со-
держащемуся там номеру свой приоритетный номер и посылает
сообщение дальше своему преемнику. Получение процессом со-
общения «голосование», содержащее его собственный приори-
тетный номер означает, что кольцо голосования замкнулось,
все активные процессы приняли участие в голосовании. При
этом процесс, инициировавший голосование, получает сообще-
ние «голосование», содержащее номера всех активных процес-
сов, принявших участие в голосовании.
Получив сообщение «голосование» с номерами всех актив-
ных процессов в системе, процесс, инициировавший голосова-
ние, формирует сообщение «ведущий», содержащее номера всех
активных процессов в системе, и вновь отправляет его по