Теория и практика программирования на Си в Unix

         

МОДЕЛЬ "КЛИЕНТ-СЕРВЕР"


Клиентом называется объект,запрашивающий доступ к службе или ресурсу. Сервер - это объект несущий службу или обладающий ресурсом.

Клиент и сервер могут находиться на одной и той же машине (использование локальных механизмов коммуникации) или на двух разных машинах (использование сетевых средств). В рамках нашего исследования, клиентом и сервером являются два процесса UNIX, связанные между собой через механизм IPC (Interprocess Communication), локальный или сетевой (рис.2.5.).


Рис2.5. Модель клиент-сервер

Клиент и сервер не играют симметричную роль. Процесс-сервер инициализируется и, затем, переходит в состояние ожидания запросов от возможных клиентов. Как правило, процесс-клиент запускается в интерактивном режиме и посылает запросы серверу. Сервер исполняет полученный запрос, причем это может подразумевать диалог с клиентом, а может и нет. Затем сервер вновь переходит в состояние ожидания других клиентов.

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

С каждым сервером связан служебный (сервисный) адрес. Клиент посылает запросы по этому адресу. В зависимости от вида осуществляемой обработки данных, раз- личают серверы без состояния (stateless) и серверы с состоянием (statefull). Сервер без состояния не сохраняет о своих клиентах никакой информации. Сервер с состоянием сохраняет информацию о состоянии своих клиентов после каждого запроса. В случае разрыва связи, повторный запуск проще у серверов без состояния, но иногда это может привести к случайным срабатываниям.


Сокеты позволяют,помимо всего прочего, конструировать распределенные прикладные программы в соответствии с моделью "клиент-сервер" (рис. 4.1.).

Рис. 4.1. Модель "клиент-сервер" и сокеты.




Подобно сокетам, TLI позволяет конструировать распределенные прикладные программы в соответствии с моделью "клиент-сервер" (рис. 5.1.).






NFS реализована в соответствии с моделью клиент-сервер. Машина, подсоединенная к сети, является сервером NFS, если она способна предоставить свою файловую систему другим машинам ; говорят, что она "экспортирует" свою файловую систему.

Машина является клиентом NFS, если она использует файловую систему, экспортируемую сервером ; говорят, что она "монтирует" или "импортирует" файловую систему (Рис. 6.1)

Система может быть :
- одновременно клиентом и сервером (станции с жестким диском)
- только клиентом (PC или станции без диска)
- только сервером (центральные IBM)

Один сервер может обслуживать несколько клиентов. Одна машина-клиент способна обращаться к нескольким серверам.

Обычно серверы "экспортируют" свои файловые системы полностью (за исключением нескольких систем,например SunOS версий 4.x,которая позволяет экспортировать отдельные каталоги). Клиенты,напротив,"монтируют" только каталоги.




RFS использует модель клиент-сервер.Машина,подсоединенная к сети, является сервером RFS, если она способна предоставить свою файловую систему другим машинам; говорят, что она "экспортирует" свою файловую систему.

Машина является клиентом RFS, если она использует файловую систему, экспортируемую сервером ; говорят, что она "монтирует" файловую систему.

Рисунок 7.1. иллюстрирует соотношения между компонентами RFS. Имя ресурса связывается с ресурсом сервером, который его экспортирует. Клиент монтирует ресурс, обозначаемый своим именем.

Рисунок 7.1 - Область RFS.
Сервер может экспортировать :
- полностью всю свою файловую систему
- каталоги (которые могут содержать специальные файлы UNIX)
- каталоги, уже смонтированные NFS или RFS (таким образом, машина без диска может быть сервером RFS).

RFS встраивается в ядро UNIX и,одновременно, включает в себя несколько отслеживающих программ. Системные вызовы, предназначенные для периферийных устройств NFS перехватываются ядром и обрабатываются отслеживающими программами.



Содержание раздела