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

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

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

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

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

Все эти решения,в общем, основаны на виртуальной машине, которая интерпретирует либо непо­средственно исходные тексты программ (в случае языков сценариев), либо про­межуточный код, выдаваемый компилятором (для Java). Предложить свой товарв нужном месте в правильное время оказывается важно и для разработчиковязыков программирования.Единственный серьезный недостаток переносимости, реализуемой при помо­щи виртуальных машин, состоит в том, что приходится ограничиваться конкрет­ным языком, да еще таким, которого частенько никто не знает.

По этой причиневажно, чтобы языки, предназначенные для переноса, имели интерфейс с сущест­вующими языками.3.4.4. Пример — D'AgentЧтобы проиллюстрировать перенос кода, рассмотрим теперь платформу проме­жуточного уровня, поддерживающую различные формы переноса кода. D'Agent,или полностью Agent TCL, — это система, построенная на основе концепции200Глава 3. Процессыагента. Агентом в системе D'Agent называется программа, которая в гетерогеннойсистеме способна перемещаться с одной машины на другую. Сейчас мы сосредо­точимся на возможностях переноса кода в системе D'Agent, а к более общему об­суждению программных агентов вернемся в следующем пункте.

Мы также проиг­норируем вопросы безопасности, о них мы поговорим в главе 8. Дополнительнуюинформацию по D'Agent можно найти в [180, 242].Обзор переноса кода в D'AgentАгент в системе D'Agent — это программа, которая может перемещаться с одноймашины на другую. В принципе программы могут быть написаны на разных язы­ках, главное, чтобы машина, на которую переносится код, могла выполнить его.На практике это означает, что программы в D'Agent пишутся на интерпретируе­мых языках, а конкретнее, на командном языке утилит (Tool Command Language,Tel), Java или Scheme [336, 375].

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

На этой же машине выполняется сценарий. Сценарий — это не что иное, какпоследовательность инструкций. Сценарий переносится на машину-получательвместе со всеми описаниями процедур и копиями переменных, которые необхо­димы для его выполнения на этой машине. На машине-получателе процесс за­пускает подходящий интерпретатор, который и выполняет сценарий. В понятияхвариантов переноса кода (см. рис. 3.9), D'Agent обеспечивает инициированнуюотправителем слабую мобильность, когда перенесенный код выполняется в от­дельном процессе.В качестве примера слабой мобильности в D'Agent рассмотрим листинг 3.4.В нем представлена часть простого агента на языке Тс1, которая посылает сцена­рий на удаленную машину.

В этом агенте процедура factorial получает единст­венный параметр и рекурсивно вычисляет факториал для значения параметра.Переменные numbers и machine должны быть правильно инициализированы (пу­тем запроса значения у пользователя), после чего агент вызывает команду agent_submit. На целевую машину, определяемую значением переменной machine, вследза определением процедуры factorial и исходным значением переменной numberпересылается следующий сценарий:factorial $numberD'Agent автоматически вычисляет результат и возвращает его отправителю.Вызов agent_receive приводит к блокированию агента, инициировавшего пере­нос, до момента возвращения ему результата.3.4.

Перенос кода201Листинг 3.4. Простой пример агента D'Agent на языке Тс1, пересылающего сценарий наудаленную машину (адаптация сценария из [179])ргос factorial п {i f {$п <= 1} {return 1;}expr $n * [factorial [ expr $n - 1 ] ]}set number ...set machine ...#fac(l) = 1#fac(n) = n * fac(n-l)# указать, какой факториал вычислять# идентифицировать целевую машинуagent^submit $machine -procs factorial -vars number -script { factorial $number }agent_receive ...# получить результатТакже поддерживается инициируемая отправителем сильная мобильность,как в форме миграции, так и в форме клонирования процессов. Для переноса ра­ботающего агента агент вызывает команду agentjump с указанием целевой машины,на которую он должен быть перенесен.

При вызове команды agentjump исполнениеагента на исходной машине приостанавливается и его сегмент ресурсов, сегменткода и сегмент исполнения подвергаются маршалингу, укладываясь в сообще­ние, которое затем пересылается на целевую машину. После доставки сообщениязапускается новый процесс, в котором исполняется соответствующий интер­претатор. Этот процесс выполняет демаршалинг пришедшего сообщения и про­должает выполнение с инструкции, следующей за последним вызовом agent_jump. Процесс, в котором агент выполнялся на исходной машине, прекращаетсвою работу.Пример переноса агентов, приведенный в листинге 3.5, иллюстрирует упро­щенную версию агента, который обнаруживает только что вошедшего в системупользователя, выполняя команду who UNIX-системы на каждом из хостов.

Пове­дение агента определяется процедурой all_users. Она поддерживает список поль­зователей, который изначально пуст. Набор хостов, которые будут посещатьсяагентом, определяется параметром mashines. Агент переходит с хоста на хост, по­мещая результат выполнения команды who в переменную users и добавляя егок списку. В основной программе на текущей машрп1е создается агент для рассылкис использованием рассмотренного ранее механизма слабой мобильности. В дан­ном случае команда agent_submit будет вызвана для выполнения следующего сце­нария:dll_users SmachinesКоманде передается процедура и набор хостов в качестве дополнительных па­раметров.Листинг 3.5.

Пример агента D'Agent на языке Тс1, перемещающегося с машинына MaujHHy, исполняя команду who UNIX-системы (адаптация сценария из [73])ргос all_users machines {set l i s t ""foreach m Smachines {agentjump $mset users [exec who]####создать изначально пустой списокдля всех хостов из заданных машинпереместиться на следующий хоствыполнить команду who202Глава 3. Процессыappend list $users}return $11 St# добавить результаты к списку# no окончании вернуть список# инициализировать набор машин# задать хост для старта агентаset machines ...set this machine# Создать агент переноса для переноса сценария на ту машину.# с которой агент начнет просматривать остальные машины.# указанные в $mach1nesagent_subm1t $th1s_mach1ne -procs all^users -vars machines \-script (an_users $mach1nes}agent_receive ...# получить результатИ, наконец, поддерживается клонирование процессов посредством командыagent_fork. Эта команда работает почти так же, как и agentjump, за исключениемтого, что процесс, запустивший агента на исходной машине, просто продолжаетработу с инструкции, следующей за вызовом agent^fork.

Подобно операцрш forkв UNIX-системах, команда agent^fork возвращает значение, по которому вызвав­ший ее процесс может определить, что перед ним — клонированная версия(в UNIX именуемая «дочерней») или оригинальный процесс («родитель»).Вопросы реализацииЧтобы рассмотреть некоторые детали внутренней реализации, рассмотрим напи­санные на Тс1 агенты. Изнутри система D'Agent состоит из пяти уровней, как по­казано на рис. 3.11. Самый нижний уровень сравним с сокетами Беркли, в томсмысле, что он реализует единый интерфейс механизмов взаимодействия базо­вой сети. В D'Agent предполагается, что базовая сеть предоставляет механизмыдля работы с сообщениями TCP и электронной почты.5Агенты4Интерпретатор Интерпретатор ИнтерпретаторТс1ЯкSchemeJava3Обобщенный агент RTS2Сервер1TCP/IP1E-mailРис.

3 . 1 1 . Архитектура системы D'AgentСледующим уровнем является сервер, работающий на каждой машине, на ко­торой выполняется D'Agent. Сервер отвечает за управление агентами, авториза­цию и управление связью между агентами. Для последнего вида деятельностисервер присваршает каждому агенту локальный уникальный идентификатор. Ес­ли использовать сетевой адрес сервера, каждый из агентов может быть обозна-3.4. Перенос кода203чен парой (адрес, локальный идентификатор). Подобное имя низкого уровня ис­пользуется для установки связи между двумя агентами.Третий уровень — сердце системы D'Agent.

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

Понятно,что операции ядра недалеко ушли от операций сервера, но в отличие от сервераядро не отвечает за управление набором агентов, размещенных на одной машине.Четвертый уровень содержит интерпретаторы, по одному на каждый поддер­живаемый в D'Agent язык. Каждый интерпретатор содержит компонент интер­претации языка, модуль безопасности, интерфейс с уровнем ядра и отдельныймодуль для перехвата состояния работающего агента. Этот последний модульнеобходим для поддержки сильной мобильности и будет детально рассмотренниже.Самый верхний уровень содержит агенты, написанные на одном из поддер­живаемых системой языков. Каждый агент D'Agent выполняется в отдельномпроцессе. Так, например, когда агент переносится на машину Л, сервер разветв­ляет процесс выполнения соответствующего интерпретатора, создавая ветку длявыполнения этого агента.

Новый процесс подхватывает состояние мигрировав­шего агента и продолжает его выполнение с той точки, на которой он был приос­тановлен. Сервер отслеживает локальные каналы созданного процесса, посредст­вом которых процесс получает предназначенные для него сообщения.Более сложная часть реализации D'Agent — это получение состояния рабо­тающего агента и передача его на другую машину. В случае Тс1 состояние агентаописывается частями, показанными в табл. 3.3. По существу, состояние агентаописывается четырьмя таблицами, содержащими глобальные определения пере­менных и сценариев, и двумя стеками, отслеживающими состояние выполнения.Таблица 3 , 3 .

Части, о п и с ы в а ю щ и е состояние агента в системе D'AgentСостояниеОписаниеГлобальные переменныеинтерпретатораПеременные, необходимые интерпретатору агентовГлобальные системныепеременныеКоды возврата, коды ошибок, строки сообщенийоб ошибках и т. д.Глобальные переменныепрограммыОпределяемые пользователем глобальные переменныепрограммыОпределения процедурОпределения сценариев, выполняемых агентомСтек командСтек выполняемых в настоящее время командСтек вызововСтек записей об активизации, по одной на каждуювыполняемую командуИнтерпретатору необходима таблица, в которой хранятся глобальные пере­менные. Так, обработчик событий может сообщать интерпретатору, какую про­цедуру следует вызывать в случае прихода сообщения от некоторого агента. Па­ры (событие, обработчик) хранятся в таблице интерпретатора.

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

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

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