Сервисы распределенных операционных систем.



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

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

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

Пример службы имен – это система доменных имен (DNS), используемая в сети Internet.

2) Связывание клиентов и серверов. Термин связывание относится к ассоциации между клиентом и сервером. Статическое связывание выполняется на этапе компиляции и означает, что все обращения клиента к серверу жестко «зашиты» в код.

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

3) Сервисы распределенного обмена сообщениями. Прозрачный обмен сообщениями между распределенными задачами можно реализовать с помощью распределенного ядра распределенной операционной системы.

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

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

4) Сервисы сокетов. Сокеты – это интерфейс прикладных программ (API), предоставляемый многими операционными системами. Он определяет набор операций, доступных приложению для организации обмена данными по сети с другим приложением (например, между клиентом и сервером) по заданному протоколу, например TCP/IP. Сокеты – низкоуровневый механизм коммуникаций, поэтому впоследствии были разработаны более абстрактные интерфейсы, снимающие с приложения заботу о низкоуровневых деталях.

К их числу относятся RPC (Remote Procedure Call – вызов удаленных процедур) и различные технологии ПО промежуточного слоя.

5) Обмен сообщениями через порты. В некоторых распределенных системах обмен сообщениями между удаленными узлами реализован с помощью портов, что позволяет максимально ослабить связанность. Компонент (процесс или поток) в одном узле посылает сообщение, не указывая явно имя получателя, а задавая выходной порт. Компонент-получатель забирает сообщения из своего входного порта. На стадии конфигурации системы выходной порт одного компонента подключается к входному порту другого компонента (это называется связыванием). Подобная организация повышает гибкость и имеет больше шансов на повторное использование, поскольку на этапе проектирования компонент не должен явно знать, с кем он будет соединен. Такие решения принимаются позднее, поэтому экземпляры одного и того же компонента могут исполняться в различных средах и приложениях. Механизм обмена сообщениями через порты реализован в нескольких операционных системах, в том числе V, Mach, CHORUS и Amoeba. В качестве примеров распределенных сред программирования, предоставляющих порты и средства гибкой конфигурации, можно назвать Conic и Regis.

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

 


Дата добавления: 2018-08-06; просмотров: 318; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!