Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 28

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 28 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 282019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 28)

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

Четкое разделение позволяет нам помещать интер­фейс на одну машину при том, что сам объект находится на другой. Структура,показанная на рис. 2.16, обычно и m^hiBdieTC^ распределенным объектом {distribu­ted object).Машина сервераМашина клиента^ Объект• СостояниеТот же интерфейс,что и у объектаКлиентобращается .к методуОперационнаясистемаклиентаСетьСкелетонвызываетдля объектатот же метод• МетодИнтерфейсОперационнаясистемасервераТПараметры вызова послемаршалинга передаются по сетиРис. 2 . 1 6 . Обобщенная организация удаленных объектовс использованием заместителя клиента2.3.

Обращение к удаленным объектам113Когда клиент выполняет привязку к распределенному объекту, в адресноепространство клиента загружается реализация интерфейса объекта, называемаязаместителем {рюху). Заместитель клиента аналогичен клиентской заглушкев системах RPC. Единственное, что он делает, — выполняет маршалинг парамет­ров в сообщениях при обращении к методам и демаршалинг данных из ответныхсообщений, содержащих результаты обращения к методам, передавая их клиен­ту.

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

С других ма­шин доступны только интерфейсы, реализованные в объекте. Такие объекты ещеназывают удаленными {remote object). Как мы увидим в последующих главах приобщем знакомстве с распределенными объектами, их состояние может быть фи­зически распределено по нескольким машинам, но это распределение также скры­вается от клиентов за интерфейсами объектов.Объекты времени компиляции противобъектов времени выполненияОбъекты в распределенных системах существуют в различных формах. В наибо­лее распространенном варианте они соответствуют объектам выбранного языкапрограммирования, например Java, C++ или другого объектно-ориентированногоязыка, и представляют собой объекты времени компиляции.

В этих случаях объ­ект является экземпляром класса. Класс — это описание абстрактного типа в видемодуля, содержащего элементы данных и операций над этими данными [291].Использование объектов времени компиляции в распределенных системахобычно значительно упрощает создание распределенных приложений. Так, в язы­ке Java объект может быть полностью описан в рамках своего класса и интер­фейсов, которые этот класс реализует. Компиляция определения класса порож­дает код, позволяющий создавать экземпляры объектов языка Java.

Интерфейсыможно скомпилировать в клиентские и серверные заглушки, позволяющие обра­щаться к объектам Java с удаленных машин. Разработчик программы на Java ча­ще всего может не беспокоиться по поводу распределения объектов: он занима­ется только текстом программы на языке Java.Очевидная оборотная сторона использования объектов времени компиляциисостоит в зависимости от конкретного языка программирования.

Существуети альтернативный способ создания распределенных объектов — непосредственново время выполнения. Такой подход характерен для множества объектных рас­пределенных систем, поскольку распределенные приложения, созданные в соот­ветствии с ним, не зависят от конкретного языка программирования. В част-114Глава 2. Связьности, приложение может быть создано из объектов, написанных на различныхязыках программирования.При работе с объектами времени исполнения тот способ, которым они будутреализованы, обычно остается открытым.

Так, например, разработчик может ре­шить написать на С библиотеку, содержащую набор функций, которые смогутработать с общим файлом данных. Главный вопрос состоит в том, как превра­тить эту реализацию в объект, методы которого будут доступны с удаленной ма­шины. Традиционный способ состоит в том, чтобы использовать адаптер объектов{object adapter), который послужит оболочкой {wrapper) реализации с единствен­ной задачей — придать реализации видимость объекта. Сам термин «адаптер»взят из шаблона проектирования, описанного в [157], который предоставляет ин­терфейс, преобразуемый в то, что ожидает клиент. Примером адаптера объектовможет быть некая сущность, динамически привязываемая к описанной ранеебиблиотеке на С и открывающая файл данных, соответствующий текущему со­стоянию объекта.Адаптеры объектов играют важную роль в объектных распределенных систе­мах.

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

Мы вернемся к вопросаморганизации серверов и адаптеров объектов в следующей главе.Сохранные и нерезидентные объектыПомимо деления на объекты, зависящие от языка программирования, и объектывремени выполнения существует также деление на сохранные и нерезидентныеобъекты. Сохранный объект {persistent object) — это объект, который продолжаетсуществовать, даже не находясь постоянно в адресном пространстве серверногопроцесса.

Другими словами, сохранный объект не зависит от своего текущего серве­ра. На практике это означает, что сервер, обычно управляющий таким объектом,может сохранить состояние объекта во вспомогательном запоминающем устрой­стве и завершить свою работу. Позже вновь запущенный сервер может считатьсостояние объекта из запоминающего устройства в свое адресное пространствои обработать запрос на обращение к объекту. В противоположность ему, нерези­дентный объект {transient object) — это объект, который существует, только покасервер управляет им.

Когда сервер завершает работу, этот объект прекращает су­ществовать. Использовать сохранные объекты или нет — это спорный вопрос.Некоторые полагают, что нерезидентных объектов вполне достаточно. Сейчас мыне будем вдаваться в детали и вернемся к этому вопросу, когда будем обсуждатьобъектные распределенные системы в главе 9.2.3.2. Привязка клиента к объектуИнтересная разница между традиционными системами RPC и системами, под­держивающими распределенные объекты, состоит в том, что последние обычно2.3.

Обращение к удаленным объектам115предоставляют ссылки на объекты, уникальные в пределах системы. Такие ссыл­ки могут свободно передаваться между процессами, запущенными на различныхмашинах, например как параметры обращения к методу. Путем сокрытия истин­ной реализации ссылок на объекты (то есть обеспечения их непрозрачности)и может быть даже использования их в качестве единственного средства обраще­ния к объектам прозрачность распределения по сравнению с традиционным ме­ханизмом RPC повышается.Когда процесс хранит ссылку на объект, перед обращением к любому из ме­тодов объекта процесс должен в первую очередь выполнить привязку к этому объ­екту.

Результатом привязки будет заместитель, размещаемый в адресном про­странстве процесса и реализующий интерфейс с методами, к которым обращаетсяпроцесс. Во многих случаях привязка осуществляется автоматически. Когда ба­зовая система получает ссылку на объект, ей требуется способ отыскать сервер,управляющий этим объектом, и поместить заместителя в адресное пространствоклиента.При неявной привязке {implicit binding) клиенту предоставляется простой ме­ханизм, позволяющий напрямую запрашивать методы, используя только ссылкуна объект. Так, например, в C++ можно переопределить унарный оператор выбо­ра (->) для класса так, чтобы он позволял обращаться со ссылками на объектыкак с простыми указателями (листинг 2.1). В случае неявной привязки клиентпрозрачно связывается с объектом в момент разрешения ссылки и полученияэтого объекта в действительности.

С другой стороны, в случае явной привязке{explicit binding) клиент должен до обращения к методам вызвать специальнуюфункцию для привязки к объекту. При явной привязке обычно возвращается ука­затель на локально доступный заместитель, как показано в листинге 2.2.Листинг 2.1. Пример неявной привязки с использованием только глобальныхпеременных// Определить внутрисистемную ссылку на объектD1str_object* obj_ref;// Инициализировать ссылку на распределенный объектobj_ref = . .

. :// Неявно провести привязку и обратиться к методуobj_ref->clo_someth1ng():Листинг 2.2. Пример явной привязки с использованием как глобальных,так и локальных переменных/7 Определить внутрисистемную ссылку на объектD1str_object obj_ref;// Определить указатель на локальные объектыLocal_object* obj_ptr:// Инициализировать ссылку на распределенный объектobj_ref = . . . ;// Явно провести привязку и получить указатель// на локальный заместительobj_ptr = b1ncl(obj_ref):// Обратиться к методу локального заместителяobj_ptr->clo_something();116Глава 2.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6513
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее