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

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

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

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

Эти и другие подобные чертыпозволяют не допускать или обнаруживать множество часто встречающихсяошибок программирования, таких как неопределенные области в памяти. Осо­бенности языка были тщательно подобраны, чтобы упростить различные вариан­ты оптимизации.Две черты Огса, важные для распределенного программирования, — это со­вместно используемые объекты данных и инструкция fork. Объекты инкапсули­руют внутренние структуры данных и пользовательские процедуры, называемыеоперациями {operations).

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

Страж{guard) — это логическое выражение без каких-либо сторонних эффектов. Пус­той страж означает то же самое, что и значение true. При вызове операции всеего стражи вычисляются в определенном порядке. Если все они равны значениюfalse, вызывающий процесс приостанавливается до того момента, пока один изстражей не получит значение true. Когда находится страж, вычисление которогодает результат true, вычисляется следующий за ним блок инструкций. В листин­ге 6.2 показан объект stack (стек) с двумя операциями, push и pop.Листинг 6 . 2 .

Упрощенный объект stack в Огса с внутренними даннымии двумя операциямиOBJECT IMPLEMENTATION stack;top: integer: # переменная, идентифицирующая вершину стекаstack: ARRAY [integer 0..N-1] OF integer; # память для стека# Эта функция ничего не возвращаетOPERATION pushCitem: i n t e g e r ) ;BEGINGUARD top < N DOs t a c k [ l o p ] : - item; # поместить элемент в стекtop := top + 1:# инкремент указателя стека0D;END;# Эта функция возвращает целоеOPERATION рорО: integer;BEGINGUARD top > О DOtop := top- 1:# приостановиться, если стек пуст# декремент указателя стека390Глава 6.

Непротиворечивость и репликацияRETURN s t a c k [ t o p ] ; # вернуть элемент с вершины стека0D:END:BEGINtop := 0:# инициализацияEND:После определения объекта stack могут быть созданы переменные этого типа:S. t : stack:В данном случае создаются два объекта стека, и в каждом из них переменнаяtop инициализируется нулем. Целая переменная к может быть помещена в стек sс помощью следующей инструкции:s$push(k):Операция изъятия из стека имеет стража, который при попытке достать пере­менную из пустого стека приостанавливает работу вызвавшего процедуру про­цесса до тех пор, пока другой процесс не поместит в стек какое-нибудь целоечисло.Для создания нового процесса на заданном пользователем процессоре в Огсапредусмотрена инструкция fork. Новый процесс запускает процедуру, имя кото­рой указано в инструкции fork.

В новый процесс можно передавать параметры,включая объекты. Именно таким образом объекты распределяются по машинам.Например, следующая инструкция создает по одному новому процессу foobar накаждой из машин, от 1 по п:FOR 1 IN 1 .. п DO FORK foobar(s) ON 1: OD:Поскольку эти n процессов (включая родительский) выполняются парал­лельно, все они могут добавлять элементы в общий стек s и извлекать их оттуда,как если бы они работали на мультипроцессорной CPICTCMC С общей памятью.Поддерживать иллюзию совместно используемой памяти, хотя на самом деле еене существует, — это работа исполняющей системы.Операции над общими объектами атомарны и последовательно непротиворе­чивы. Система гарантирует, что если несколько процессов почти одновременносовершают операции с одним и тем же совместно используемым объектом, сете­вой эффект проявится в том, что операции будут выглядеть происходящимистрого последовательно (в некотором неопределенном порядке), при этом ни од­на операция не начнется до завершения предыдущей.Операции представляются для всех процессов в одном и тот же порядке.

Так,например, предположим, что мы добавим в объект stack из листинга 6.2 новуюоперацию, реек, проверяющую элемент на вершине стека. Тогда в случае, еслидва независимых процесса одновременно поместят в стек значения 3 и 4 и всепроцессы позже используют операцию реек для исследования вершины стека,система гарантирует, что каждый из процессов увидит там либо 3, либо 4. Ситуа­ция, когда часть процессов видит 3, а остальные — 4, в мультипроцессорной сис­теме с совместно используемой памятью невозможна. Точно так же невозможнаона и в Огса. Если поддерживается только одна копия стека, этого эффекта до-6.6. Примеры391биться легко, но если стек реплицируется на всех машинах, необходимо, как по­казано ниже, затратить чуть больше усилий.Огса объединяет синхронизацию и совместно используемые данные пример­но так же, как при поэлементной непротиворечивости.

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

В Огса условную синхронизацию обеспечивают стражи. В нашем при­мере на листинге 6.2 процесс, пытающийся извлечь элемент из пустого списка,будет приостановлен до того момента, когда стек перестанет быть пустым.Управление совместно используемыми объектами в ОгсаУправление объектами в Огса возложено на исполняющую систему. Оно поддер­живается как в сетях с широковещательной (и групповой) рассылкой, так и в се­тях со сквозной (от точки к точке) передачей. Исполняющая система выполняетрепликацию объектов, их пересылку, поддержание непротиворечивости и обра­щения к операциям.Каждый объект может быть в одном состоянии из двух — либо в виде единст­венной копии, либо в виде реплики. Объект в состоянии единственной копииимеется только на одной машине. Реплицированный объект представлен на всехмашинах, на которых имеются использующие его процессы.

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

Прииспользовании единственной копии одновременно может производиться толькоодна операция, что замедляет выполнение. Принципиальный недостаток репли­кации — затраты на поддержание непротиворечивости всех копий.Когда программа выполняет операцию над объектом, компилятор вызываетпроцедуру 1nvoke_op исполняющей системы, задающую объект, операцию, пара­метры и флаг, уведомляющий, будет ли объект при этом модифицироваться (этоназывается записью) или нет (это называется чтением). Действие, вызываемое392Глава 6. Непротиворечивость и репликацияисполнением процедуры 1nvoke_op, зависит от того, реплицирован ли объект,имеется ли в наличии его локальная копия, должна ли производиться запись иличтение, поддерживает ли платформа надежную, полностью упорядоченную широ­ковещательную рассылку.

Различают четыре варианта, как показано на рис. 6.27.Единственная локальная копияй>@РРеплицированный объект,выполняется чтенией>@IЕдинственная удаленная копия0вРеплицированный объект,выполняется запись@IгРис. 6.27. Четыре варианта процесса Р, выполняющего операцию над объектом О в ОгсаНа рис. 6.27, а процесс собирается выполнить операцию над нереплицированным объектом, который расположен на одной машине с процессом. Это требуеттолько блокирования объекта, вызова операции и разблокирования объекта.Смысл блокировки в том, чтобы избежать любых удаленных обращений во вре­мя выполнения локальной операции.На рис.

6.27, б мы также имеем дело с единственной копией объекта, но име­ется и кое-что еще. Исполняющая система, используя вызов RPC, просит уда­ленную машину выполнить нужную операцию, возможно, с небольшой задерж­кой, если объект в момент прихода запроса блокирован. Ни в одном из этих двухслучаев между чтением и записью разницы нет (исключая тот факт, что запись,если изменит используемые стражами переменные, может активизировать бло­кированные процессы).Если объект реплицирован, как показано на рис.

6.27, в и г, в нашем распоря­жении всегда имеется его локальная копия, однако теперь имеет значение, какуюоперацию мы хотим осуществить — чтения или записи. Чтение можно проделатьлокально, без использования сети и без дополнительных затрат.Запись в реплицируемые объекты — более хитрое дело. Если базовая системаподдерживает надежные, полностью упорядоченные широковещательные рас­сылки, исполняющая система рассылает имя объекта, операцию и ее параметры,а затем блокируется до завершения широковещательной рассылки. Все машины,включая данную, вычисляют новое значение.Отметим, что примитивы широковещательной рассылки должны быть на­дежны, то есть нижележащие уровни должны автоматически обнаруживать и ис­правлять потерю сообщений. Система Amoeba, на основе которой разрабатыва-6.6.

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

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

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