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

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

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

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

Эти девять комбинаций иллюстрируеттабл. 3.2. Используются следующие сокращения:4 GR — организовать глобальную ссылку;"¥ MV — перенести ресурс;4- СР — копировать значение ресурса;-¥ RB — выполнить новую привязку процесса к локальному ресурсу.Таблица 3 . 2 . Варианты переноса кода на другую машинуПривязка ресурса к машинеПривязкаресурсак процессуПривязкапо идеитификаторуПривязкапо значениюПривязкапо типуНеприсоединенный ресурсСвязанныйресурсФиксированныйресурсМ\/(илиОР)GR (или MV)GRСР(илиМ\/, GR)ОЯ(илиСР)GRRB (или MV, СР)RB (или GR, СР)RB (или GR)Рассмотрим сначала возможности, возникающие при привязке процесса к ре­сурсу по идентификатору.

Если ресурс неприсоединенный, лучше всего перене-196Глава 3. Процессысти его на другую машину вместе с кодом. Однако если этот ресурс используетсяпереносимым процессом совместно с другими, следует организовать на него гло­бальную ссылку — ссылку, которая в состоянии будет преодолеть границу меж­ду машинами. Примером такой ссылки может быть URL. Если ресурс связанныйили фиксированный, организация глобальной ссылки также является наилуч­шим решением проблемы.Важно, что реалргзация системы глобальных ссылок может быть сложнее про­стого использования URL и иногда оказывается слишком дорогостоящей. Рас­смотрим, например, программу обработки высококачественных изображений наотдельной рабочей станции. Создание в реальном времени высококачественныхизображений — это задача, требующая интенсивных вычислений, поэтому про­грамма может быть перенесена на высокопроизводительный вычислительныйсервер. Организация глобальных ссылок на рабочую станцию будет означать ор­ганизацию связи между сервером и рабочей станцией.

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

Од­но из них состоит в том, чтобы позволить процессу после переноса установитьсоединение с исходной машиноР!, создав там отдельный поток выполнения, кото­рый просто будет перенаправлять все приходящие сообщения на новое «местожительства» процесса. Основным недостатком такого подхода является то, чтопри сбоях или повреждении исходной машины связь с перенесенным процессомбудет прервана.

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

Организация глобальных ссылок в этомслучае может потребовать от нас реализации распределенной разделяемой памя­ти, о которой мы говорили в главе 1. Однако чаще всего подобное решение не­приемлемо.Связанные ресурсы, ссылка на которые производится по значению, — это ча­ще всего библиотеки времени исполнения. Обычно допускается копированиеэтих ресурсов на другую машину, причем это копирование может быть осущест­влено до переноса кода. Организация глобальных ссылок может оказаться хоро­шей альтернативой копированию в том случае, если нужно скопировать боль­шой объем данных, например словари и тезаурусы текстового редактора.3.4.

Перенос кода197Наиболее простой случай — неприсоединенные ресурсы. Наилучшее решениепри этом — скопировать (или переместить) ресурсы в новое место, исключая ва­рианты, когда они совместно используются несколькими процессами. В послед­нем случае единственным выходом будет создание глобальных ссылок.Последний вариант — привязка по типу. Независимо от способа привязки ре­сурса к машине решение состоит в новой привязке процесса к локальным ресур­сам того же типа. Только в том случае, если ресурсы данного типа на локальноймашине отсутствуют, мы можем скопировать или переместить оригинальные ре­сурсы на новое место или организовать глобальные ссылки на них.3.4.3.

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

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

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

Стек обычно содержит временные данные, такие как зна­чения локальных переменных, но может также содержать и информацию, зави­сящую от платформы, например значения регистров. Важно отметить, что еслибы нам удалось избавиться от данных, зависящих от платформы, то перенестисегмент на другую машину и продолжить исполнение там было бы значительнопроще.Решение, работающее в случае процедурных языков, таких как С или Java,показано на рис. 3.10. Перенос кода ограничен несколькими конкретными мо­ментами выполнения программы.

Точнее, перенос возможен только в моментвызова очередной подпрограммы. Под подпрограммой имеется в виду функцияв С, метод в Java и т. п. Исполняющая система создает собственную копию про-198Глава 3. Процессыграммного стека, причем машинно-независимую. Мы будем называть эту копиюстеком переноса {migration stack). Стек переноса обновляется при вызове под­программы или возвращении управления из подпрограммы.При вызове подпрограммы исполняющая система выполняет маршалинг дан­ных, которые были помещены в стек во время предыдущего вызова. Эти данныепредставляют собой значения локальных переменных, а также значения пара­метров текущего вызова процедуры.

Данные после маршалинга помещаютсяв стек переноса вместе с идентификатором вызванной подпрограммы. Кроме того,в стек переноса помещается адрес (в форме метки перехода), с которого должнопродолжаться исполнение после возвращения из подпрограммы.ЛокальныеПомещение параметровоперации вызова после их маршалингастека Вв стек переносаЛокальныепеременныепроцедуры ВМетка возврата(перехода)в процедуру Аиз процедуры ВВызов _В из А "Значенияпараметровпроцедуры ВИдентификацияпроцедуры ВЛокальныепеременныепроцедуры АМетка возвратав процедуру,вызвавшуюпроцедуру АЗначенияпараметровпроцедуры АПрограммныйстекИдентификацияпроцедуры АСтек переноса(данные толькопосле маршалинга)Рис.

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

Перенос кода199ся соответствующий сегмент кода, содержащий подходящие для ее архитектурыи операционной системы код. На машине-приемнике выполняется демаршалингполученных данных сегмента исполнения, и из стека переноса формируется но­вый стек исполнения. После этого исполнение может быть продолжено простымвходом в подпрограмму, которая была вызвана на исходном сайте.Ясно, что подобный подход возможен только в том случае, если компиляторгенерирует код для обновления стека переноса при каждом входе в подпрограм­му или выходе из нее. Компилятор должен также генерировать в вызывающемкоде метки, позволяющие реализовать выход из подпрограммы в виде переходов(машинно-независимых). Кроме того, мы нуждаемся в подходящей исполняю­щей системе.

Тем не менее существует множество систем, успешно использую­щих подобную технологию. Так, в [127] показано, как можно обеспечить переноспрограмм, написанных на C/C++, в гетерогенных системах путем небольших из­менений в языках, используя для добавления кода поддержки стека переноса ис­ключительно директивы препроцессора.Проблемы переноса кода, вызванные гетерогенностью, во многих случаяхсходны с проблемами переносимости.

Не будет неожиданностью то, что такжесходны и методы их решения. Так, например, в конце 70-х годов было предложе­но простое решение, позволившее решить множество проблем с переносом языкаPascal на различные машины. Таким решением стала генерация промежуточногомашинно-независимого кода для абстрактной виртуальной машины [40]. Эта ма­шина, разумеется, требовала реализации на множестве различных платформ,благодаря которой программы на языке Pascal могли работать на них всех.

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

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

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