next up previous contents
Next: Как работает dipcd Up: DIPC - Распределенные межпроцессные Previous: Сбои работы при использовании   Contents

Ключи DIPC

Процессы в кластере могут использовать один и тот же ключ для получения доступа к структуре DIPC. Эта структура должна быть создана первой. Это делается одним из системных вызовов xxxget (shmget(), semget() или msgget()). После создания и инициализации другие процессы, возможно, на других машинах, могут получить доступ к этой структуре. В данном случае ключ имеет одинаковый смысл для всех компьютеров в пределах кластера. Другими словами, компьютеры в кластере имеют общее ключевое пространство DIPC.

Много наработанного программного обеспечения с закрытыми исходными текстами может использовать IPC System V в процессе функционирования, а некоторое - использовать ключи. Поскольку эти программы могут нуждаться в наличии ряда машин в составе кластера, важно обеспечить их работу без конфликтов - с помощью DIPC. Поэтому необходимо ввести в кластер два типа отличающихся друг от друга ключей IPC:

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

Таким образом, для предоставления возможности запуска старых программ, соответствующие структуры IPC с набором локальных ключей должны находиться в группе компьютеров. И наконец, локальные ключи имеют тип по умолчанию, поэтому создание распределенного ключа требует от программиста явного добавления IPC_DIPC к другим пользовательским флагам в процессе создания структуры IPC или получения доступа к ней с помощью системного вызова xxxget().

Если не обращать внимания на приведенное выше требование, то структура DIPC может использоваться полностью прозрачно. Даже при написании современных программ, единственная вещь, которую программист должен сделать - это указать флаг
DIPC_IPC.



2004-06-22