Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Деревянко_БС ЭВМ

.pdf
Скачиваний:
66
Добавлен:
31.05.2015
Размер:
3.6 Mб
Скачать

единение, устанавливает соединение, вызывая функцию connect вместо bind. После установления соединения передача данных происходит при помощи функций write и read. Кроме них клиент и сервер могут использовать send и recv, а также любую другую функцию, предназначенную для работы с ориентированным на соединение протоколом.

Рис. 1.11 иллюстрирует вызовы функций, для не ориентированных на соединение протоколов.

Не ориентированный на соединение сервер на рис. 1.11 вызывает функции socket и bind так же, как и сервер, ориентированный на соединение. Но поскольку сокет не соединен, для чтения данных клиент использует функцию recvfrom вместо обычных recv или read. Программа-клиент, изображенная на рис. 1.11, вызывает функцию bind, но не вызывает connect. Не ориентированные на соединение протоколы не устанавливают никакого предварительного соединения между конечными точками сети. Вместо этого для передачи данных используется функция sendto, требующая от программы указать адрес назначения сообщения в качестве одного из аргументов.

Рис. 1.11. Сокеты в не ориентированном на соединение протоколе

81

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

Рассмотрим программирование механизма сокетов для организации обмена сообщениями между двумя узлами.

Для обмена короткими сообщениями, не требующими надежной доставки и упорядоченности, целесообразно воспользоваться системными вызовами, не нуждающимися в установлении соединения. Фрагмент программы процессаотправителя может выглядеть так:

s = socket(AF_INET, SOCK_DGRAM,0); bind(s, sender_addr, sender_addrlen); sendto(s, message, receiver_addr); close(s);

Соответственно, фрагмент программы для процессаполучателя:

s = socket(AF_INET, SOCK_DGRAM,0); bind(s, receiver_addr, receiver_addrlen);

amount = recvfrom(s, message, sender_addr); close(s);

Константа AF_INET определяет, что обмен ведется в коммуникационном домене Интернета, а константа SOCK_DGRAM задает дейтаграммный режим обмена без установления соединения. Выбор транспортного протокола оставлен на усмотрение системы.

82

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

Для процесса-клиента:

s = socket(AF_INET, SOCK_STREAM, 0); connect(s, server_addr, server_addrlen); write(s, message, msg_len);

write(s, message, msg_len); close(s);

Для процесса-сервера:

s = socket(AF_INET, SOCK_STREAM, 0); bind(s, server_addr, server_addrlen); listen(s, backlog);

snew = accept(s, client_addr, client_addrlen); nbytes = read(snew, buffer, amount);

nbytes = read(snew, buffer, amount); close(s);

83

2.ОСНОВЫ ПОСТРОЕНИЯ КОМПЬЮТЕРНЫХ СЕТЕЙ

2.1.Сетевые и распределенные ОС

Сетевая ОС – это ОС, предоставляющая пользователю сервисы для работы с сетевой аппаратурой. Эти сервисы упрощают работу с сетью и в совокупности составляют виртуальную вычислительную систему, обеспечивающую доступ к ресурсам сети.

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

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

Если ОС отдельного компьютера позволяет ему работать в сети, то есть предоставлять пользователю ресурсы сети, то такая ОС отдельного компьютера тоже называется сетевой ОС.

Таким образом, термин «сетевая операционная система» используется в трех смыслах:

1)совокупность ОС всех компьютеров сети;

2)операционная система отдельного компьютера, способного работать в сети;

3)набор сетевых служб, способных согласованно работать в общей операционной среде.

84

2.1.1. Сетевые службы и сетевые сервисы

Под «службой» будем понимать сетевой компонент, который реализует некоторый набор услуг, а под «сервисом» - описание набора услуг, который предоставляется данной службой. То есть «сервис» - это интерфейс между потребителем услуг и поставщиком услуг (службой).

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

Сетевые службы могут быть следующих видов:

1)файловая служба (доступ через сеть к файловой системе другого компьютера);

2)служба печати (доступ через сеть к общим принтерам сети, сервис печати);

3)почтовая служба (доступ к информационному ресурсу сети – электронным письмам);

4)служба удаленного доступа (доступ к ресурсам сети через коммутируемые каналы);

5)служба каталогов (ведение базы данных о пользователях, а также о программных и аппаратных компонентах сети);

6)служба мониторинга сети (анализ сетевого трафика);

7)служба резервного копирования и архивирования;

8)служба безопасности (идентификация пользователей

иразграничение доступа к ресурсам сети).

Наиболее важными для пользователей являются файло-

вая служба и служба печати. Конкретная ОС может содержать и другие наборы услуг.

85

Встроенные сетевые службы и сетевые оболочки

На практике сложилось несколько подходов к построению сетевых операционных систем, различающихся глубиной внедрения сетевых служб в операционную систему:

сетевые службы глубоко встроены в ОС;

сетевые службы объединены в виде некоторого набора — оболочки;

сетевые службы производятся и поставляются в виде отдельного продукта.

Например, встроенная файловая служба Windows NT реализует протокол SMB, используемый во всех ОС компании Microsoft, а дополнительная файловая служба, входящая в со-

став оболочки File and Print Services for NetWare для той же

Windows NT, работает по протоколу NCP, «родному» для се-

тей NetWare.

Первые сетевые ОС представляли собой совокупность уже существующей локальной ОС и надстроенной над ней сетевой оболочки.

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

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

86

обходимые для управления аппаратурой компьютера, и в среде которой выполнялись бы сетевые службы, составляющие эту оболочку.

Сетевые оболочки часто подразделяются на клиентские и серверные. Оболочка, которая преимущественно содержит клиентские части сетевых служб, называется клиентской. Например, типичным набором программного обеспечения рабочей станции в сети NetWare является система MS-DOS с клиентской оболочкой NetWare, состоящей из клиентских частей файловой службы и службы печати, а также компонента, поддерживающего пользовательский интерфейс.

Сеть может быть построена по одной из трех схем:

сеть на основе одноранговых узлов — одноранговая сеть;

сеть на основе клиентов и серверов — сеть с выделенными серверами;

сеть, включающая узлы всех типов — гибридная сеть.

Каждая из этих схем обладает своими достоинствами и недостатками, определяющими их области применения.

Водноранговых сетях на всех компьютерах устанавливается такая операционная система, которая предоставляет всем компьютерам в сети потенциально равные возможности, поэтому одноранговые ОС должны включать как серверные, так и клиентские компоненты сетевых служб. Одноранговые сети проще в организации и эксплуатации, по этой схеме организуется работа в небольших сетях, в которых количество компьютеров не превышает 10-20.

Всетях с выделенными серверами используются специальные варианты сетевых ОС, которые оптимизированы для работы в роли серверов и называются серверными ОС. Пользовательские компьютеры в этих сетях работают под управлением клиентских ОС.

Для оптимизации серверных операций разработчики ОС ущемляют другие ее функции, иногда вплоть до полного

87

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

К основным отличиям серверных ОС от клиентских можно отнести:

поддержку мощных аппаратных платформ;

поддержку большого числа одновременно выполняемых процессов и сетевых соединений;

включение в состав ОС компонентов централизованного администрирования сети (например, справочной службы или службы аутентификации);

более широкий набор сетевых служб.

Многие компании, разрабатывающие сетевые ОС, выпускают два варианта одной и той же операционной системы: серверный и клиентский.

2.1.2. Концепции распределенной обработки в сетевых ОС

Целесообразно выделить три основных группы способов организации работы приложений в сети:

разделение приложения на части, выполняющиеся на разных компьютерах сети;

выделение специализированных серверов в сети, на которых выполняются некоторые общие для всех приложений функции;

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

88

Приложение можно разделить, например, на шесть функциональных частей:

средства представления данных на экране, например, средства графического пользовательского интерфейса;

логика представления данных на экране (правила и возможные сценарии взаимодействия пользователя с приложением: выбор из системы меню, выбор элемента из списка и т. п.);

прикладная логика — набор правил для принятия решений, вычислительные процедуры и операции;

логика данных — операции с данными для реализации прикладной логики;

внутренние операции базы данных — действия СУБД,

вызываемые в ответ на выполнение запросов логики данных, такие как поиск записи по определенным признакам;

файловые операции — стандартные операции над файлами и файловой системой, которые обычно являются функциями операционной системы.

Можно построить несколько схем распределения частей приложения между компьютерами сети.

Двухзвенные схемы

Распределение приложения между компьютерами сети существенно усложняет организацию самого приложения. Поэтому на практике приложение обычно разделяют на две или три части и достаточно редко — на большее число частей.

Наиболее распространенной является двухзвенная схема распределения приложения между двумя компьютерами. Перечисленные выше типовые функциональные части приложения можно разделить между двумя компьютерами различными способами.

В централизованной схеме (рис. 2.1) компьютер пользова-

89

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

Этот подход достаточно распространен и называется терминальным доступом. Его преимущества: высокая безопасность (на рабочей станции устанавливается только операционная система и клиентская часть приложения и не устанавливаются средства доступа к СУБД), невысокие требования к аппаратному обеспечению рабочих станций, низкие затраты на сопровождение рабочих станций.

Компьютер 1

 

Компьютер 2

 

 

 

 

 

 

 

Эмуляция

 

Логика

 

Операции

Файловые

 

приложения и

базы дан-

операции

терминала

 

 

обращения

к

ных

 

сервера

 

 

 

базе данных

 

 

 

 

 

 

 

 

 

 

 

 

Клиент

 

Сервер

 

Рис. 2.1. Централизованная схема распределения приложения

В схеме «файловый сервер» (рис. 2.2) на клиентской машине выполняются все части приложения, кроме файловых операций. В сети имеется достаточно мощный компьютер, имеющий дисковую подсистему большого объема, который хранит файлы, доступ к которым необходим большому числу пользователей. Распределенное приложение в этой схеме мало отличается от полностью локального приложения. Един-

90

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]