next up previous contents
Next: UDP/IP Up: DIPC - Распределенные межпроцессные Previous: Планирование разделяемой памяти   Contents

Прокси

Прокси - это рабочий процесс, который исполняется системным вызовом semop() с флагом SEM_UNDO. Когда worker исполняет такую функцию, он не прекращает свого выполнения, а записывает сетевой адрес и идентификатор процесса удаленного процесса (процесс, для которого исполняется системный вызов) и продолжает работу. Противоположные действия могут создать эффекты semop(), которые должны исчезать при выходе из worker. Теперь worker становится прокси и устанавливает доменный сокет Linux с именем PROXY_<IP_адрес_удаленного_процесса>_
<идентификатор_удаленного_процесса>
, используя приведенную выше информацию. Примером может быть: PROXY_191.72.2.0_234. Отныне он будет исполнять все операции semop() по защите исходного удаленного процесса независимо от того, указали ему флаг SEM_UNDO или нет.

Процесс front_end будет проверять присутствие подходящего прокси перед тем, как раздваивать процесс worker для обработки функции semop(). Если прокси присутствует, он подключается к нему с помощью доменного сокета Linux и ``инструктирует'' его о выполнении semop().

Прокси может исполнять любую функцию, допустимую для
worker, но в текущей разработке процесс не сообщает прокси о необходимости выполнения чего-либо, отличного от semop().

Когда исходный удаленный процесс останавливает исполнение, все его прокси информируются о завершении и ``делаются'' все необходимые ``отмены''.



2004-06-22