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

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

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

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

Так, например, в следующих двухпунктах мы обсудим протоколы, которые позволяют процессам прозрачно вызы­вать процедуры или обращаться к объектам на удаленных машинах. Существуюттакже коммуникационные службы высокого уровня для запуска и синхронизациипотоков данных в реальном времени, что характерно, например, для мультиме­дийных приложений. В качестве последнего примера приведем предоставляемыенекоторыми системами промежуточного уровня надежные службы групповойрассылки, способные поддерживать тысячи получателей, разбросанных по гло­бальной сети.Некоторые из коммуникационных протоколов промежуточного уровня могутбыть помещены и на транспортный уровень, но для их «повышения» имеютсяособые причины.

Так, например, службы надежной групповой рассылки с гаранти­рованной масштабируемостью могут быть реализованы, только если принимаютсяво внимание требования к приложению. Соответственно, системы промежуточ­ного уровня могут предоставлять те или иные протоколы (настраиваемые), каж­дый из которых реализует различные транспортные протоколы, но предоставля­ет одинаковый интерфейс.2.2.

Удаленный вызов процедур93Такой подход к подразделению на уровни приводит нас к слегка измененнойэталонной модели взаимодействия (рис. 2.5). По сравнению с моделью OSI сеан­совый уровень и уровень представления заменены одним промежуточным уров­нем, который содержит не зависящие от приложений протоколы. Как мы гово­рили, эти протоколы нельзя поместить на более низкие уровни. Истинныетранспортные службы также могут быть представлены в виде служб промежу­точного уровня.

Для этого не потребуется даже модрхфикации. Этот подход ана­логичен переносу UDP на транспортный уровень. Точно так же службы проме­жуточного уровня могут включать в себя службы пересылки сообщегп^й, схожиес теми, которые предоставляются на транспортном уровне.^^ПриложениеПромежуточный уровеньТранспортСетьПередача данныхФизическое воплощение^-^^-^~wПромежуточный протоколТранспортный протокол^-Ы--^^-^^-^tПрикладной протоколСетевой протоколКанальный протокол--WW_wW--WW--W1111wФизический протокол_w1wСетьРис. 2.5. Измененная эталонная модель сетевого взаимодействияВ оставшейся части этой главы мы сосредоточимся на четырех высокоуров­невых коммуникационных службах промежуточного уровня: удаленном вызо­ве процедур, удаленном обращении к объектам, очередям сообщений и потокамданных.2.2. Удаленный вызов процедурОсновой множества распределенных систем является явный обмен сообщениямимежду процессами.

Однако процедуры send и receive не скрывают взаимодейст­вия, что необходимо для обеспечения прозрачности доступа. Эта проблема былаизвестна давно, но по ней мало что было сделано до появления в 1980 году статьи[62], в которой предлагался абсолютно новый способ взаимодействия. Хотя идеябыла совершенно простой (естественно, после того как кто-то все придумал), еереализация часто оказывается весьма хитроумной. В этом разделе мы рассмот­рим саму концепцию, ее реализацию, сильные и слабые стороны.Если не вдаваться в подробности, в упомянутой статье было предложено по­зволить программам вызывать процедуры, находяицтеся на других машинах.

Когдапроцесс, запущенный на машине Л, вызывает процедуру с машины Б, вызываю-94Глава 2. Связьщий процесс на машине Л приостанавливается, а выполнение вызванной проце­дуры происходит на машине В. Информация может быть передана от вызываю­щего процесса к вызываемой процедуре через параметры и возвращена процессув виде результата выполнения процедуры.

Программист абсолютно ничего не за­метит. Этот метод известен под названием удаленный вызов процедур {RemoteProcedure Call, RPC).Базовая идея проста и элегантна, сложности возникают при реализации. Дляначала, поскольку вызывающий процесс и вызываемая процедура находятся наразных машинах, они выполняются в различных адресных пространствах, что тутже рождает проблемы. Параметры и результаты также передаются от машинык машине, что может вызвать свои затруднения, особенно если машины не оди­наковы. Наконец, обе машины могут сбоить, и любой возможный сбой вызо­вет разнообразные сложности. Однако с большинством из этих проблем можносправиться, и RPC является широко распространенной технологией, на которойбазируются многие распределенные системы.2 .

2 . 1 . Базовые операции RPCМы начнем с обсуждения общепринятых вызовов процедур, а затем рассмотрим,как вызов может быть распределен между клиентской и серверной частями сис­темы, каждая из которых выполняется на различных машинах.Общепринятые вызовы процедурДля того чтобы понять, как работает RPC, важ]1о сначала разобраться, как осуще­ствляются общепринятые (в пределах одной машины) вызовы процедур. Рас­смотрим вызов в языке типа С:count = readCfd. buf. bytes):Здесь fd — целое, указывающее на файл; buf — массив символов, в которыйбудут считываться дaн^H:)Ie; bytes — другое целое, говорящее, сколько байт следуетсчитать.

Если вызов производится из главной программы, стек до вызова выгля­дит так, как показано на рис. 2.6, а. Делая вызов, вызывающая программа поме­щает параметры в стек в порядке «последний первым», как показано на рис. 2.6, б.Причина, по которой компилятор С помещает параметры в стек в обратном по­рядке, заключается в функциях типа printf. Чтобы выполняться, функция printfвсегда должна знать, где искать свой первый аргумент — строку формата. Послезавершения read система помещает возвращаемое значение в регистр, удаляетадрес возврата и возвращает управление назад, в вызвавшую программу. Затемвызвавшая программа удаляет из стека параметры, приводя его в исходное со­стояние.Следует особо отметить некоторые моменты. Во-первых, в С параметры мо­гут передаваться как по значению, так и по ссылке.

Параметр-значение, такойкак fd или bytes, просто копируется в стек, что и показано на рис. 2.6, б. Для вы­зываемой процедуры параметр-значение представляет собой просто инициали­зированную локальную переменную. Вызываемая процедура может ее изменить.2.2. Удаленный вызов процедур95но все эти изменения не могут повлиять на ее оригинальное значение на вызы­вающей стороне.Указатель стекаЛокальные переменныеглавной программыЛокальные переменныеглавной программыbytesbutfdАдрес возвратаЛокальные переменныепроцедуры readРис.

2.6. Передача параметров при локальном вызове процедуры: стек до вызовафункции read (а). Стек во время работы вызванной процедуры (б)Параметр-ссылка в С — это указатель на переменную (то есть адрес перемен­ной), а не ее значение. В вызове read второй параметр является параметромссылкой, поскольку массивы в С всегда передаются через ссылку. В стек на са­мом деле будет помещен адрес символьного массива. Если вызванная процедураиспользует этот параметр для помещения чего-либо в символьный массив, этоприведет к изменению массива в вызывающей программе.

Мы увидим, чторазница между параметрами-значениями и параметрами-ссылками крайне важ­на для RPC.Существует еще один механизм передачи параметров, не применяющийся в С.Он называется вызов через копирование/восстановление {call-by-сору/restore).В этом случае до вызова вызывающей программой производится копированиепеременной в стек, как при вызове по значению, а после завершения вызова —копирование этой переменной из стека назад, с удалением исходного значенияэтой переменной.

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

Раньше это решение зависело от типов передаваемых данных. В С, напри­мер, как мы виделР!, целые и другие скалярные типы всегда передаются по значе­нию, а массивы — по ссылке. Некоторые компиляторы языка Ада поддерживаютвызов через копирование/восстановление для изменяемых {in out) параметров,передавая остальные по ссылке.

Определение языка позволяет выбрать любойвариант, который хоть немного упрощает семантику.96Глава 2. СвязьЗаглушки для клиента и сервераИдея, стоящая за RPC, состоит в том, чтобы удаленный вызов процедур выгляделточно так же, как и локальный. Другими словами, мы ждем от RPC прозрачно­сти — вызывающая процедура не должна уведомляться о том, что вызываемаяпроцедура выполняется на другой машине, и наоборот. Предположим, программахочет считать некоторые данные из файла. Для чтения из файла необходимыхданных программист помещает в код вызов read. В традиционной (однопроцес­сорной) системе процедура read извлекается компоновщиком из библиотеки ивставляется в объектный код программы.

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

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

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