Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Олифер. Сетевые операционные системы.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
16.5 Mб
Скачать

Задачи и упражнения

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

  2. Чем отличаются взаимодействия процессов в рамках одного компьютера от их взаимодействия по сети?

  3. В каком случае работа с удаленной базой данных порождает более интенсивный трафик: при использовании модели файлового сервера или сервера базы данных?

  4. В каком случае прикладному программисту проще писать программу: с использованием синхронных или асинхронных примитивов передачи сообщений?

  5. Какая структура операционной системы соответствует понятию «порт», используемому в протоколах TCP/UDP?

  6. В каких случаях целесообразно применять ненадежные примитивы передачи сообщений?

  7. Используя интерфейс сокетов, опишите взаимодействие двух процессов, один из которых является сервером, а другой — клиентом файловой службы.

  8. В чем состоит основное назначение механизма RPC?

  9. Почему в RPC-процедурах не используются глобальные переменные?

  10. Почему в системных вызовах RPC аргументы передаются по значению (by value), а не по ссылке (by name)?

  11. Опишите процедуру автоматической генерации стабов.

Глава 11. Сетевые службы

Для работы в сети операционные системы должны быть дополнены специальными сетевыми службами, которые позволяют пользователям получать доступ не только к локальным ресурсам их собственных компьютеров, но и к ресурсам других компьютеров, подключенных к сети (конечно, только в том случае, если удаленные ресурсы объявлены разделяемыми и у пользователя есть соответствующие права на доступ к ним). Эти службы реализуют специфические функции по организации совместной работы пользователей сети, опираясь на функ­ции ОС по управлению локальными ресурсами. В этой главе рассматриваются принципы построения и реализации двух очень важных и тесно взаимосвязанных сетевых служб — сетевой файловой системы и справочной службы. Завершает главу обзор подходов и методов, связанных с интеграцией сетевых служб в неоднородных компьютерных сетях.

Сетевая файловая система

Модель клиент-сервер сетевой файловой системы

Сетевая файловая система — это сетевая служба, предоставляющая пользователям сети услуги по совместному использованию файлов, хранящихся на ком­пьютерах сети.

Как и любая сетевая служба, сетевая файловая система имеет клиент-серверную природу (подробнее об этом см. раздел «Сетевые службы и сетевые сервисы» в главе 2).

Сетевая файловая система (ФС) в общем случае включает следующие элементы (рис. 11.1):

  • клиент сетевой файловой системы;

  • сервер сетевой файловой системы;

  • интерфейс сетевой файловой системы;

  • локальная файловая система;

Рис. 11.1. Модель сетевой файловой системы

  • интерфейс локальной файловой системы;

  • протокол клиент-сервер сетевой файловой системы.

Клиенты сетевой ФС — это программы, которые работают на многочисленных компьютерах, подключенных к сети. Эти программы обслуживают запросы приложений на доступ к файлам, хранящимся на удаленном компьютере. В качестве таких приложений часто выступают графические или символьные оболочки ОС, такие как Проводник Windows (Windows Explorer) или Unix shell, а также любые другие пользовательские программы.

Клиент сетевой ФС передает по сети запросы другому программному компоненту — серверу сетевой ФС, работающему на удаленном компьютере. Сервер, получив запрос, может выполнить его либо самостоятельно, либо, что является более распространенным вариантом, передать запрос локальной файловой системе для обслуживания. После получения ответа от локальной файловой системы сервер передает его по сети клиенту, а тот, в свою очередь, — приложению, обратившемуся с запросом.

ПРИМЕЧАНИЕ Файловым сервером называют как программу, которая предоставляет совокупность услуг по доступу через сеть к файлам и каталогам, так и компьютер, на котором работает эта программа и на котором хранятся предоставляемые в совместный доступ файлы. Соответственно, файловым клиентом называют как программу, обращающуюся к файловому серверу с запросами, так и компьютер, на котором она работает. Такая неоднозначность терминов обычно не вызывает затруднений, посколь­ку из контекста обычно понятно, о каком, программном или аппарат­ном, компоненте сети идет речь.

Приложения обращаются к клиенту сетевой ФС, используя определенный программный интерфейс, который в данном случае является интерфейсом сетевой файловой системы. Этот интерфейс стараются сделать как можно более похожим на интерфейс локальной файловой системы, чтобы соблюсти принцип прозрачности. В идеале сетевая файловая система должна выглядеть для пользователя так же, как и его локальная файловая система. При полном совпадении интерфейсов приложение может обращаться к локальным и удаленным файлам и каталогам с помощью одних и тех же системных вызовов, совершенно не принимая во внимание места хранения данных. Такой эффект достигается, если, например, при использовании на сервере сети локальной файловой системы FAT интерфейс сетевой файловой системы повторяет системные вызовы FAT.

Клиент и сервер взаимодействуют друг с другом через сеть по протоколу сетевой файловой системы. Если интерфейсы локальной и сетевой файловых систем совпадают, этот протокол может быть достаточно простым — в его функции должна входить ретрансляция серверу запросов, принятых клиентом от приложений, с которыми тот затем будет обращаться к локальной ФС. Одним из механизмов, используемых для этой цели, может быть механизм RPC. Протокол сетевой файловой системы, помимо простой ретрансляции системных файловых вызовов от клиента серверу, может выполнять и более сложные функции, учитывающие природу сетевого взаимодействия, например, то, что клиент и сервер работают на разных компьютерах, которые могут отказать, или что сообщения передаются по ненадежной й вносящей порой большие задержки сетевой среде.

В качестве иллюстрации приведенной модели давайте рассмотрим сетевую файловую систему, построенную на базе локальной файловой системы FAT и использующую в качестве протокола клиент-сервер протокол SMB (Server Message Block). Этот протокол был совместно разработан компаниями Microsoft, Intel и IBM. Расширенные версии протокола SMB получили название CIFS (Common Internet File System). Протокол SMB/CIFS является основой сетевой файловой службы в операционных системах семейства Windows компании Microsoft.

Как и все протоколы сетевых служб, протокол SMB работает на прикладном уровне модели OSI. Для передачи по сети своих сообщений протокол SMB использует различные транспортные протоколы более низких уровней. SMB относится к классу протоколов, ориентированных на соединение. Работа протокола начинается с того, что клиент отправляет серверу специальное сообщение с запросом на установление соединения. В процессе установления соединения SMB-клиент и SMB-сервер обмениваются информацией о себе: они сообщают друг другу, какой диалект протокола SMB они будут использовать в этом со­единении (диалект здесь — определенное подмножество функций протокола, так как помимо файловых функций SMB поддерживает доступ к принтерам, управление внешними устройствами и некоторые другие). Если сервер готов к установлению соединения, он отвечает сообщением-подтверждением.

После установления соединения клиент может обращаться к серверу, передавая ему в SMB-сообщениях команды манипулирования файлами и каталогами. Клиент может попросить сервер создать и удалить каталог, предоставить содержимое каталога, создать и удалить файл, прочитать и записать содержимое файла, установить атрибуты файла и т. п.

Другим примером популярной сетевой файловой системы является ФС, которую компания Novell реализовала в GC NetWare, на протяжении многих лет доминировавшей в локальных сетях. Эта ОС использовала в качестве локальной файловой системы на файловых серверах собственную оригинальную ФС, также носящую имя NetWare, а для доступа к файлам по сети — протокол NCP (NetWare Control Protocol — основной протокол доступа к файлам и принтерам компании Novell).

В среде операционной системы Unix наибольшее распространение получили две сетевые файловые системы и соответственно два протокола клиент-сервер — FTP (File Transfer Protocol) и NFS (Network File System). Они первоначально разрабатывались для доступа к локальной файловой системе s5/ufs, являющейся основной для многих ОС семейства Unix.