КАМАК-СЕРВЕР ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ LINUX

advertisement
КАМАК-СЕРВЕР ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ LINUX
С.Е.Гаврилов, Е.Д.Жиганов, С.А.Кипрушкин, С.Ю.Курсков
Петрозаводский государственный университет, Петрозаводск
Тел./факс: (8142) 71-10-21, e-mail: dfe@mainpgu.karelia.ru
В настоящее время технология клиент-сервер получила широкое распространение. В основе этой
технологии лежит разделение процесса обработки данных между программой-клиентом и программой-сервером,
которые могут выполняться на разных компьютерах, соединенных сетью. Технология клиент-сервер позволяет
организовать эффективное управление физическим экспериментом.
В данной работе рассмотрен разработанный авторами протокол обмена данными между КАМАК-клиентом и
КАМАК-сервером и построенная на его основе программа-сервер, функционирующая в сетях на основе
транспортного протокола TCP и обеспечивающая одновременный доступ удаленных пользователей к крейтам
КАМАК.
Доступ к физическому оборудованию на основе технологии клиент-сервер реализован следующим образом.
Для управления устройствами экспериментальной установки, связанной с крейтами КАМАК, используется
специально выделенный для этой цели компьютер под управлением операционной системы Linux. КАМАКсервер, запущенный на этом компьютере, обеспечивает совместный доступ к модулям КАМАК. Логика
управления экспериментом определяется клиентом. По его запросам сервер передает команды контроллеру
крейта и возвращает клиенту полученные данные и информацию о состоянии магистрали КАМАК. Обработка
ответов сервера осуществляется программой-клиентом.
КАМАК-сервер реализован на языке Си с использованием технологии сокетов TCP. Основой построения
сервера стал разработанный протокол обмена данными между сервером и клиентом (КАМАК-протокол).
Согласно этому протоколу сервер является пассивной стороной, а обмен инициирует клиент. После
установления соединения сервер высылает строку-приветствие, по которой клиент может идентифицировать
сервер. Далее осуществляется обмен данными между клиентом и сервером в режиме запрос-ответ. Запрос
клиента и ответ сервера имеют фиксированную длину. Первый содержит номер крейта, номер станции,
субадрес, номер функции и данные; второй включает содержимое РУС контроллера крейта, код ошибки и
возвращаемые данные. Первая команда, ожидаемая сервером – команда согласования версии КАМАКпротокола; при несовпадении версий, поддерживаемых клиентом и сервером, а также если первая команда не
была командой согласования, сервер закрывает соединение. Протокол также содержит следующие команды:
захватить станцию, отпустить станцию, выполнить стандартную КАМАК-команду, завершить работу. Типичный
сеанс работы с сервером включает следующие шаги: после установления соединения клиент резервирует
необходимые ему станции, осуществляет управление экспериментом, сбор данных и, наконец, при окончании
измерений посылает команду завершения работы, в ответ на которую сервер закрывает соединение.
Для одновременного обслуживания нескольких клиентов сервер сделан параллельным. Это обеспечивается
следующим образом. Основной серверный процесс ожидает соединения с клиентом. После установления
соединения он порождает дочерний процесс посредством системного вызова fork(), после чего опять переходит
в ждущий режим. Дочерний процесс (обработчик) обслуживает клиента. Обработчики клиентов взаимодействуют
между собой при помощи механизма совместно используемой памяти (shared memory). Доступ к крейтам КАМАК
на физическом уровне сервер осуществляет посредством обращений к специально разработанному драйверу
платы сопряжения компьютера с аппаратурой КАМАК.
Для тестирования работы сервера были написаны несколько клиентов. При помощи одного из них была
оценена скорость обмена данными между сервером и клиентом в локальной сети ПетрГУ. Оценка проводилась
следующим образом. В цикле с одной из станций непрерывно считывались данные, и по прошествии
определенного количества времени определялось, сколько обращений клиент успел сделать к серверу (одно
обращение – это цикл запрос-ответ). Полученное число умножалось на три (количество байт данных на шине
КАМАК). В ходе теста была получена скорость около 2 Кб/с для случая, когда и клиент, и сервер выполнялись на
одном компьютере и около 1,5 Кб/с для случая, когда клиент и сервер выполнялись на разных компьютерах.
Отметим также, что поскольку КАМАК-сервер обеспечивает одновременный доступ к аппаратуре КАМАК не
одному, а ряду пользователей, то на его основе можно создавать не только системы дистанционного
управления физическим экспериментом, но и многопользовательские системы дистанционного обучения.
Download