ГЛАВА 13. РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
В предыдущей главе нами были
рассмотрены сильносвязанные
многопроцессорные системы с общей
памятью, общими структурами данных
ядра и общим пулом, из которого
процессы вызываются на выполнение.
Часто, однако, бывает желательно в
целях обеспечения совместного
использования ресурсов
распределять процессоры таким
образом, чтобы они были автономны
от операционной среды и условий
эксплуатации. Пусть, например,
пользователю персональной ЭВМ
нужно обратиться к файлам,
находящимся на более крупной
машине, но сохранить при этом
контроль над персональной ЭВМ.
Несмотря на то, что отдельные
программы, такие как uucp,
поддерживают передачу файлов по
сети и другие сетевые функции, их
использование не будет скрыто от
пользователя, поскольку
пользователь знает о том, что он
работает в сети. Кроме того, надо
заметить, что программы, подобные
текстовым редакторам, с удаленными
файлами, как с обычными, не
работают. Пользователи должны
располагать стандартным набором
функций системы UNIX и, за
исключением возможной потери в
быстродействии, не должны ощущать
пересечения машинных границ. Так,
например, работа системных функций
open и read с файлами на удаленных
машинах не должна отличаться от их
работы с файлами, принадлежащими
локальным системам.
Архитектура
распределенной системы
представлена на Рисунке 13.1.
Каждый компьютер, показанный на
рисунке, является автономным
модулем, состоящим из ЦП, памяти и
периферийных устройств.
Соответствие модели не нарушается
даже несмотря на то, что компьютер
не располагает локальной файловой
системой: он должен иметь
периферийные устройства для связи
с другими машинами, а все
принадлежащие ему файлы могут
располагаться и на ином компьютере.
Физическая память, доступная
каждой машине, не зависит от
процессов, выполняемых на других
машинах. Этой особенностью
распределенные системы отличаются
от сильносвязанных
многопроцессорных систем,
рассмотренных в предыдущей главе.
Соответственно, и ядро
Рисунок 13.1. Модель
системы с распределенной
архитектурой
системы на каждой машине
функционирует независимо от
внешних условий эксплуатации
распределенной среды.
Распределенные системы, хорошо
описанные в литературе,
традиционно делятся на следующие
категории:
- периферийные системы,
представляющие собой группы
машин, отличающихся
ярковыраженной общностью и
связанных с одной (обычно более
крупной) машиной. Периферийные
процессоры делят свою нагрузку
с центральным процессором и
переадресовывают ему все
обращения к операционной
системе. Цель периферийной
системы состоит в увеличении
общей производительности сети
и в предоставлении возможности
выделения процессора одному
процессу в операционной среде
UNIX. Система запускается как
отдельный модуль; в отличие от
других моделей распределенных
систем, периферийные системы
не обладают реальной
автономией, за исключением
случаев, связанных с
диспетчеризацией процессов и
распределением локальной
памяти.
- распределенные системы типа
"Newcastle", позволяющие
осуществлять дистанционную
связь по именам удаленных
файлов в библиотеке (название
взято из статьи "The Newcastle
Connection" - см. [Brownbridge 82]).
Удаленные файлы имеют
спецификацию (составное имя),
которая в указании пути поиска
содержит специальные символы
или дополнительную компоненту
имени, предшествующую корню
файловой системы. Реализация
этого метода не предполагает
внесения изменений в ядро
системы, вследствие этого он
более прост, чем другие методы,
рассматриваемые в этой главе,
но менее гибок.
- абсолютно "прозрачные"
распределенные системы, в
которых для обращения к файлам,
расположенным на других
машинах, достаточно указания
их стандартных составных имен;
распознавание этих файлов как
удаленных входит в обязанности
ядра. Маршруты поиска файлов,
указанные в их составных
именах, пересекают машинные
границы в точках монтирования,
сколько бы таких точек ни было
сформировано при монтировании
файловых систем на дисках.
В настоящей главе мы рассмотрим
архитектуру каждой модели; все
приводимые сведения базируются не
на результатах конкретных
разработок, а на информации,
публиковавшейся в различных
технических статьях. При этом
предполагается, что забота об
адресации, маршрутизации,
управлении потоками, обнаружении и
исправлении ошибок возлагается на
модули протоколов и драйверы
устройств, другими словами, что
каждая модель не зависит от
используемой сети. Примеры
использования системных функций,
приводимые в следующем разделе для
периферийных систем, работают
аналогичным образом и для систем
типа Newcastle и для абсолютно
"прозрачных" систем, о которых
пойдет речь позже; поэтому в
деталях мы их рассмотрим один раз, а
в разделах, посвященных другим
типам систем, остановимся в
основном на особенностях,
отличающих эти модели от всех
остальных.
Предыдущая
глава || Оглавление
|| Следующая глава
|