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

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

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

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

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

Когда сервер закон-2.2. Удаленный вызов процедур101чит работу, оригинальное сообщение будет отослано назад, клиентской заглуш­ке, которая скопирует буфер клиенту. В результате вызов по ссылке будет под­менен копированием/восстановлением. Несмотря на то что это не одно и то же,часто такой замены вполне достаточно.Небольшая оптимизация позволяет сделать этот механизм вдвое эффектив­нее. Если обеим заглушкам известно, входящим или исходящим параметромявляется буфер для сервера, то одну из копий можно удалить. Если массив ис­пользуется сервером в качестве исходных данных (то есть при вызове write), токопировать его обратно не нужно. Если это результат, то нет необходимости из­начально передавать его серверу.В качестве последнего комментария отметим, что нет ничего особенно хоро­шего в том, что мы можем работать с указателями на простые массивы и структу­ры, если нам по-прежнему недоступна работа с более общими вариантами указате­лей — с указателями на произвольные структуры данных, например на сложныеграфы.

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

2.10, а.Она имеет три параметра: символ, число с плавающей точкой и массив из пятицелых чисел. Предполагая, что длина слова составляет четыре байта, протоколRPC может предписать передачу символа в крайнем правом байте слова (остав­ляя последующие три пустыми), числа с плавающей точкой — в целом слове,а массива — в виде последовательности слов с общей длиной, равной длине мас­сива, и предшествующим словом, содержащим длину последовательности(рис. 2.10, б). Если ввести подобные правила, то клиентская заглушка будетзнать, что для процедуры foobar необходимо использовать тот формат, которыйпредставлен на рис. 2.10, б, а серверная заглушка — что именно такой формат бу­дет иметь входящее сообщение для вызова процедуры foobar.Определение формата сообщения — это только одна сторона протокола RPC.Этого недостаточно.

Также нам необходимо, чтобы клиент и сервер пришли к до­говоренности по вопросу представления простых типов данных, таких как целыечисла, символы, логические значения и т. д. Так, протокол может предписать,чтобы целые передавались без знака, символы в 16-битной кодировке Unicode,а числа с плавающей точкой — в формате стандарта IEEE 754, и все это — в ост­роконечном формате. Только при наличии такой дополнительной информациисообщение может быть однозначно интерпретировано.102Глава 2. СвязьЛокальныепараметрыпроцедурыfoobarz[0]foobar( char х; float у; int z[5]){z[1]z[2]z[31z[4]aбРис.

2 . 1 0 . Процедура (a) и соответствующее процедуре сообщение (б)После того как все биты до последнего выстроеР1Ы в ряд по согласованнымправилам кодирования, осталось сделать только одно. Вызывающая и вызывае­мая системы должны договориться между собой об обмене реальными сообще­ниями. Например, они могут решить использовать транспортный протокол с со­единениями, такой как TCP/IP. Альтернативой ему будет ненадежная службадейтаграмм, в этом случае клиент и сервер должны включить реализацию схемыконтроля ошибок в RPC. На практике возможны различные варианты.После завершения определения протокола RPC необходимо реализовать за­глушки — клиентскую и серверную.

К счастью, заглушки, работающие по одно­му протоколу, для разных процедур различаются лишь интерфейсом с прило­жениями. Интерфейс состоит из набора процедур, которые могут быть вызваныклиентом, но реализуются на сервере. Доступ к интерфейсу осуществляетсяобычно из определенного языка программирования, одного из тех, на которыхнаписан клиент или сервер (хотя, строго говоря, это не обязательно). Для упро­щения работы интерфейсы часто опрюываются с использованием языка опреде­ления интерфейсов {Interface Definition Language, IDL). Интерфейс, определен­ный на чем-то вроде IDL, компилируется затем в заглушки клиента и сервера,а также в соответствующие интерфейсы времени компиляции и времени выпол­нения.Практика показывает, что использование языка определения интерфейсовделает приложения клиент-сервер, базирующиеся на RPC, существенно проще.Поскольку клиентская и серверная заглушки очень легко сгенерировать полно­стью автоматически, все системы промежуточного уровня, основанные на RPC,используют IDL для поддержки разработки программного обеспечения.

В неко­торых случаях применение IDL просто обязательно. Мы рассмотрим подобныеслучаи в следующих главах.2.2. Удаленный вызов процедур1032.2.3. Расширенные модели RPCУдаленные вызовы процедур стали фактическим стандартом для связи в распре­деленных системах. Популярность этой модели объясняется ее несомненной про­стотой.

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

В стандартном случае мы должны использоватьсредства локального межпроцессного взаимодействия {InterProcess Communication,IPC), которые базовая операционная система предоставляет процессам, запущен­ным на одной машине. Так, например, в UNIX соответствующие средства вклю­чают в себя совместно используемую память, каналы и очереди сообщений (де­тальное обсуждение IPC в UNIX-системах можно найти в [439]).Локальные средства IPC обычно значительно более эффективны, чем сете­вые, даже если последние используются для связи между процессами на одноймашине. Соответственно, если важна производительность, следует совмещатьразличные механизмы межпроцессного взаимодействия, руководствуясь тем, на­ходятся ли процессы, в которых мы заинтересованы, на одной машине или нет.В качестве компромисса некоторые операционные системы предоставляютпроцессам, размещенным на одной машине, эквивалент RPC под названием вхо­дов {doors).

Вход — это обобщенное имя процедур, существующих в адресномпространстве процессов сервера, которые могут вызываться процессами, разме­щенными на одной с сервером машине. Входы впервые появились в операцион­ной системе Spring [297] и были хорошо описаны в [193]. Сходный механизм,под названием упрощенный вызов RPC {lightweight RPC), описан в [49].Вызов входов требует поддержки локальной операционной системы, как по­казано на рис. 2.11. Так, для того чтобы появилась возможность вызвать вход,процесс сервера должен зарегистрировать его.

При регистрации входа возвраща­ется его идентификатор, который впоследствии можно будет использовать в ка­честве символического имени входа. Регистрация заканчивается вызовом door_create. Доступ других процессов к зарегистрированному входу может осуществ­ляться просто по тому идентификатору, который мы получили при регистрациивхода. Так, например, в Solaris каждый вход имеет файловое имя, которое можнополучить через идентификатор простым вызовом fattach. Клиент вызывает входчерез системный вызов с1оог_са11, в который идентификатор входа передаетсятак же, как и любой другой обязательный параметр. Затем операционная систе­ма производит вызов того процесса, который зарегистрировал вход. Результатомэтого вызова будет вызов входа сервера.

Результаты вызова входа будут возвра­щены в процесс клиента через системный вызов cloor_return.Главное преимущество входов состоит в том, что они позволяют использо­вать для связи в распределенных системах единый механизм — вызовы процедур.Глава 2. Связь104К сожалению, разработчики приложений часто нуждаются в сведениях о том,выполняется ли данный вызов в текущем процессе, в другом процессе на этой жемашине или в удаленном процессе.КомпьютерКлиентский процессСерверный процессserve r_door(...){door_return(...);}main(){Регистрация входаfd = open(door_name,...);door_call(fd,...);~^-fd = door_create(...);fattach(fd, door_name,...);И^)Операционная системаmain(){z:XВызов зарегистрированного Возвращение в вызывающийвхода для другого процессапроцессРис.

2 . 1 1 . Принципы использования входов в качестве механизма IPCАсинхронный вызов RPCв стандартном варианте вызова клиентом удаленной процедуры его работа при­останавливается до получения ответа. Когда ответ не нужен, этот жесткий алго­ритм «запрос-ответ» не является необходимым, приводя только к блокированиюклиента с невозможностью производить работу до получения ответа от удален­ной процедуры.

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

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

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