Лекция № 4. Процессы УЧЕБНЫЕ ВОПРСЫ 1. Серверы 2. Перенос кода 3. Программные агенты Вопрос №1 Основная задача большинства клиентов — служить передаточным звеном между пользователем и удаленным сервером. Основная функция большинства клиентов - поддержка пользовательского интерфейса. Вопрос №1 Сервер — это процесс, реализующий некоторую службу, требующуюся группе клиентов. Все серверы работают схожим образом: они ожидают входящего сообщения, посылаемого клиентом, затем проверяют это сообщение на правильность, выполняют предопределенные действия, после чего ожидают следующего сообщения. Вопрос №1 Способы организации серверов: 1. Итеративный сервер (iterative server) сервер сам обрабатывает запрос и при необходимости возвращает клиенту ответное сообщение. 2. Параллельный сервер (concurrent server) не обрабатывает сообщение сам, а передает его в отдельный поток выполнения или другой процесс, после чего сразу же переходит в состояние ожидания следующего входящего сообщения. Вопрос №1 Способы обращения клиента к серверу: 1. С предварительно назначенной конечной точкой Клиент всегда посылает запросы в конечную точку (endpoint), также именуемую портом (port), той машины, на которой работает сервер. Каждый сервер просматривает указанную ему конечную точку. 2. Без предварительного назначения конечной точки а) Привязка клиента к серверу с использованием «демона» б) привязка клиента к серверу с использованием суперсервера. Вопрос №1 Рисунок 1. Привязка клиента к серверу с использованием «демона» в среде DCE (а). Привязка клиента к серверу с использованием суперсервера в UNIX (б) Вопрос №1 Способы хранения информации о состоянии клиентов: 1. Сервер без фиксации состояния (stateless server) не сохраняет информацию о состоянии своих клиентов и может менять свое собственное состояние, не информируя об этом своих клиентов (Web-сервер). 2. Сервер с фиксацией состояния (stateful server) хранит и обрабатывает информацию о своих клиентах (файловый сервер, позволяющий клиенту создавать локальные копии файлов). Вопрос №1 Сервер объектов (object sewer) — это сервер, ориентированный на поддержку распределенных объектов. Важная разница между стандартным сервером объектов и другими (более традиционными) серверами состоит в том, что сам по себе сервер объектов не предоставляет конкретной службы. Конкретные службы реализуются объектами, расположенными на сервере. Сервер предоставляет только средства обращения к локальным объектам на основе запросов от удаленных клиентов. Таким образом, можно относительно легко изменить набор служб, просто добавляя или удаляя объекты. Вопрос №1 Альтернативы обращению к объектам: 1. Обращение к объектам может производиться единообразно или поддерживаться различные правила обработки объектов. 2. Выделять каждому из своих объектов отдельный сегмент памяти или позволить объектам совместно использовать код. 3. С единственным управляющим потоком выполнения или поддерживать несколько потоков выполнения — по одному на каждый объект. Вопрос №1 Правила обращения к объекту обычно называют политикой активизации (activation policies). Существует механизм группирования объектов в соответствии с политикой активизации каждого из них, который называют адаптером объектов (object adapter), или упаковщиком объектов (object wrapper). Вопрос №1 Адаптер объектов контролирует один или несколько объектов. Поскольку сервер должен одновременно поддерживать объекты с различной политикой активизации, на одном сервере может одновременно работать несколько адаптеров объектов. При получении сервером запроса с обращением к объекту этот запрос сначала передается соответствующему адаптеру объектов, как показано на рис. 2. Существует специальный компонент, который занимается распределением поступивших запросов соответствующим адаптерам (демультиплексор), он не обязателен Вопрос №1 Рис. 2. Организация сервера объектов с разной политикой активизации Вопрос №2 Причины для переноса кода: 1. Оптимизация вычислительной мощности 2. Снижение коммуникационного трафика 3. Повышение производительности на основе параллелизма 4. Гибкость - становится возможным конфигурировать распределенные системы динамически Вопрос №2 Перенос кода в широком смысле связан с переносом программ с машины на машину с целью исполнения этих программ в нужном месте. Вопрос №2 Процесс состоит из трех сегментов. 1. Сегмент кода — это часть, содержащая набор инструкций, которые выполняются в ходе исполнения программы. 2. Сегмент ресурсов содержит ссылки на внешние ресурсы, необходимые процессу, такие как файлы, принтеры, устройства, другие процессы и т. п. 3. Сегмент исполнения используется для хранения текущего состояния процесса, включая закрытые данные, стек и счетчик программы. Вопрос №2 Модель слабой мобильности (weak mobility). Согласно этой модели допускается перенос только сегмента кода, возможно вместе с некоторыми данными инициализации. Характерной чертой слабой мобильности является то, что перенесенная программа всегда запускается из своего исходного состояния. Вопрос №2 Модель сильной мобильности (strong mobility) переносится также и сегмент исполнения. Характерная черта сильной мобильности — то, что работающий процесс может быть приостановлен, перенесен на другую машину и его выполнение продолжено с того места, на котором оно было приостановлено. Вопрос №2 При переносе, инициированном отправителем, перенос инициируется машиной, на которой переносимый код постоянно размещен или выполняется. При переносе, инициированном получателем, инициатива в переносе кода принадлежит машинеполучателю. Пример такого подхода — Java-апплеты. Вопрос №2 Рис. 3. Варианты переноса кода Вопрос №2 Типы связи процесса с ресурсами: 1. привязки по идентификатору (binding by identifier) процесс требует в точности тот ресурс, на который ссылается. 2. привязки по значению (binding by value) процессу необходимо только значение ресурса. В этом случае выполнение процесса ничуть не изменится, если такое же значение ему предоставит другой ресурс. 3. привязка по типу (binding by type) процесс указывает на необходимость использования ресурса определенного типа. Вопрос №2 Типы связи ресурсов с машиной: 1. Неприсоединенные ресурсы (unattached resources) могут быть с легкостью перенесены с машины на машину. Файлы (данных) в этом случае обычно связаны только с переносимой программой. 2. Связанные ресурсы (fastened resources) копирование возможно лишь с относительно большими затратами. Типичными примерами связанных ресурсов могут быть локальные базы данных или web- сайты целиком. 3. Фиксированные ресурсы (fixed resources) изначально привязаны к конкретной машине или среде и не могут быть перенесены на другую. Фиксированными ресурсами часто бывают локальные устройства. Вопрос №2 Привязка ресурса к машине Привязка по Привязка идентификато ресурса к ру процессу Привязка по значению Привязка по типу Неприсоедине нный ресурс Связанный ресурс Фиксированн ый ресурс MV (или GR) GR (или MV) GR СР (или MV, GR) GR (или СР) GR RB (или MV, СР) RB (или GR, СР) RB (или GR) GR — организовать глобальную ссылку; MV — перенести ресурс; СР — копировать значение ресурса; RB — выполнить новую привязку процесса к локальному ресурсу. Вопрос №2 Решения для переноса кода в гетерогенных системах, в общем, основаны на виртуальной машине, которая интерпретирует либо непосредственно исходные тексты программ (в случае языков сценариев), либо промежуточный код, выдаваемый компилятором (для Java). Недостаток - приходится ограничиваться конкретным языком. Вопрос №3 Программный агент (software agent) - это автономный процесс, способный реагировать на среду исполнения и вызывать изменения в среде исполнения, возможно, в кооперации с пользователями или с другими агентами. Свойство, которое делает агента чем-то большим, чем процесс, — это способность функционировать автономно и, в частности, проявлять при необходимости инициативу. Вопрос №3 Кооперативный агент (collaborative agent) — это агент, составляющий часть мультиагентной системы, то есть системы, в которой агенты, кооперируясь, выполняют некие общие задачи. Типичное приложение, использующее кооперативные агенты, — это электронная конференция. Вопрос №3 Мобильный агент (mobile agent) — это просто агент, у которого имеется способность перемещаться с машины на машину. Пример - использование мобильных агентов для получения информации, распределенной по большой гетерогенной сети, такой как Интернет. Вопрос №3 Интерфейсный агент (interface agent) — это агент, помогающий конечному пользователю работать с одним или несколькими приложениями. Среди традиционно имеющихся у интерфейсного агента свойств можно считать способность к обучению Например, создаются специальные интерфейсные агенты для взаимодействия продавцов с покупателями. Правильно поняв, что хочет увидеть или что может предложить его владелец, интерфейсный агент может помочь предложить нужную группу товаров. Вопрос №3 Информационный агент (information agent). Основная функция подобных агентов — управление информацией из множества различных источников. Управление информацией включает в себя упорядочение, фильтрацию, сравнение и т. п. Например, почтовый агент может применяться для фильтрации в почтовом ящике непрошеной корреспонденции, ее владельца или автоматического перенаправления входящей почты в соответствующие теме почтовые ящики. Вопрос №3 Организация FIPA (Foundation for Intelligent Physical Agents) разработала обобщенную модель программных агентов. Вопрос №3 Агенты регистрируются и работают под управлением платформы агентов. Платформа агентов предоставляет основные службы, необходимые любой мультиагентной системе. Компонент управления агентами отслеживает агентов на соответствующей платформе. Он предоставляет механизмы создания и уничтожения агентов, а также для просмотра текущей конечной точки на предмет наличия конкретного агента. Вопрос №3 Существует отдельная локальная служба каталогов, при помощи которой агенты могут узнать, какие еще агенты имеются на этой платформе. Канал связи между агентами (Agent Communication Channel, ACC). В большинстве моделей мультиагентных систем агенты связываются друг с другом, пересылая сообщения. Вопрос №3 Сообщения ACL состоят из заголовка и реального содержания. Заголовок содержит поле цели сообщения, а также поля отправителя и получателя. Кроме того, как и во многих других коммуникационных протоколах, содержимое письма отделено и независимо от остальной его части. Необходимо, чтобы принимающему агенту была предоставлена вся необходимая информация для правильной интерпретации содержания. Для этого заголовок сообщения ACL должен также определять язык или схему декодирования содержания.