Отключение виртуальных каналов
Существует несколько причин, по которым процесс не может осуществлять связь по установленным виртуальным каналам, а именно:
- произошло отключение питания компьютера, на котором выполняется процесс;
- был отсоединен кабель сети от компьютера;
- был завершен удаленный процесс, с которым установлена связь.
Любая из этих причин может препятствовать передаче сообщений по виртуальному каналу. Необходимо фиксировать эти ситуации для выполнения приложением необходимых действий с целью корректного завершения работы, в противном случае, отдельные ресурсы могут оказаться постоянно занятыми.
На каждом узле Администратор процессов проверяет целостность виртуального канала. Это делается следующим образом:
- Каждый раз при успешной передаче по виртуальному каналу, обновляется временная метка, связанная с данным виртуальным каналом, для фиксации времени последней активности;
- Через интервалы времени, устанавливаемые при инсталляции, Администратор процессов просматривает каждый виртуальный канал. В том случае, если в виртуальном канале нет активности, Администратор процессов посылает сетевой пакет проверки целостности канала Администратору процессов другого узла;
- В том случае, если ответ не получен, или зафиксирован сбой, виртуальный канал помечается, как сбойный. Далее предпринимается ряд действий, определенных при инсталляции для восстановления связи;
- Если попытки восстановления закончились безуспешно, виртуальный канал "отключается". Все процессы, блокированные на данном канале, переходят в состояние ГOTOB (READY). (Процессы анализируют возвращаемый код сбоя виртуального канала.)
Для управления параметрами, связанными с проверкой целостности виртуального канала, используется утилита netpoll.