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