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

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

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

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

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

Для примерарассмотрим фрагмент программы из листинга 6.1, где все переменные инициали­зируются соответствующими значениями. Оптимизирующий компилятор можетпроизводить вычисление переменных а и b в регистрах, временно сохраняя тамрезультат и не обновляя эти переменные в памяти. Только вызов функции f за­ставляет компилятор поместить текущие значения а и b обратно в память, по­скольку f должна ими пользоваться. Это типичный пример оптимизация компи­лятора.348Глава 6. Непротиворечивость и репликацияЛистинг 6 .

1 . Хранение в регистрах некоторых переменныхInta.b.c.d.e.x.y:int '^р. *q:int f(int *р. int *q);// переменные// указатели// прототип функцииаbcdрqе//а хранится в регистре// b тоже// будет использовано позднее// будет использовано позднее// р получает адрес а// q получает адрес b// вызов функции= X * х:= у * у;= a * a * a + b * b + a*b:=a*a*c:= &а;= &Ь:= f(p. q):В данном случае неправильные значения в памяти допустимы, потому чтокомпилятор знает, что делает (а программу не волнует, что значения в памяти неактуальны). Ясно, что если будет создан второй процесс, который может читатьиз памяти без ограничений, эта схема перестанет работать.

Так, например, если входе присвоения значения d второй процесс считает а, b и с, он получит противо­речивые данные (старые значения а и b и новое значение с). Для предупрежде­ния хаоса можно представить себе специальную защиту, при которой компиля­тор сначала должен считывать специальный бит (флаг), сигнализирующий, чтопамять не актуальна. Если доступ к а хочет получить другой процесс, ему при­дется ожидать установки флага. Таким образом, мы получим почти абсолютнуюнепротиворечивость, обеспечиваемую программной синхронизацией и тем, чтовсе стороны выполняют правила.Обсудим теперь относительно менее отвлеченную ситуацию. На рис.

6.10, амы видим, что процесс Р1 осуществляет две записи значений элементов данных,после чего синхронизируется (показано буквой S). Если Р2 и РЗ к этому моментуеще не были синхронизированы, мы не можем дать никаких гарантий по поводутого, что они увидят. Таким образом, эта последовательность событий допустима.P1:W(x)aP2:P3:W(x)bSR(x)aR(x)bR(x)bR(x)aSSP1:W(x)aP2:W(x)bSS R(x)aРис. 6.10.

Допустимая при слабой непротиворечивости последовательность событий (а).Недопустимая при слабой непротиворечивости последовательность событий (б)Ситуация на рис. 6.10, б иная. Здесь процесс Р2 синхронизирован. Это озна­чает актуальность его локальной копии хранилища данных. Когда он будет счи­тывать значение х, он получит значение Ь. Получение а, как видно из рисунка,при слабой непротиворечивости невозможно.6.2.6. Свободная непротиворечивостьСлабая непротиворечивость имеет проблему следующего рода: когда осуществ­ляется доступ к переменной синхронизации, хранилище данных не знает, то лиэто происходит потому, что процесс закончил запись совместно используемых6.2.

Модели непротиворечивости, ориентированные на данные349данных, то ли наоборот начал чтение данных. Соответственно, оно может пред­принять действия, необходимые в обоих случаях, например, убедиться, что завер­шены (то есть распространены на все копии) все локально инициированные опе­рации записи и что учтены все операции записи с других копий. Если хранилищедолжно распознавать разницу между входом в критическую область и выходомиз нее, может потребоваться более эффективная реализация. Для предоставле­ния этой информации необходимо два типа переменных или два типа операцийсинхронизации, а не один.Свободная непротиворечивость {release consistency) предоставляет эти два ти­па [165].

Операция захвата {acquire) используется для сообщения хранилищуданных о входе в критическую область, а операция освобождения {release) гово­рит о том, что критическая область была покинута. Эти операции могут бытьреализованы одним из двух способов: во-первых, обычными операциями надспециальными переменными; во-вторых, специальными операциями. В любомслучае программист отвечает за вставку в программу соответствующего допол­нительного кода, реализующего, например, вызов библиотечных процедур acquireи release или процедур enter_cr1tical_reg1on и leave_crit1cal_reg1on.В случае свободной непротиворечивости, кроме того, независимо от критиче­ских областей можно использовать барьеры.

Барьер {barrier) — это механизмсинхронизации, который предваряет любой процесс в начале фазы программыпод номером п+1 до того, как все процессы окончат фазу п. Когда процесс по­дойдет к барьеру, он должен дождаться, пока к нему не «подтянутся» и все ос­тальные процессы. Когда последний из процессов подойдет к барьеру, все совме­стно используемые данные синхронизируются, и процессы продолжают своюработу. Отправление от барьера выполняется по захвату, а приход к барьеру —по освобождению.Вдобавок к этим операциям синхронизации также возможны чтение и записьсовместно используемых данных.

Захват и освобождение не могут применятьсяко всем данным хранилища. Они могут охранять только отдельные совместноиспользуемые данные, в этом случае только эти данные остаются непротиворе­чивыми. Совместно используемые данные, сохраняющие свою непротиворечи­вость, называются защищенными {protected).Хранилище данных со свободной непротиворечивостью гарантирует, что призахвате процесса хранилище сделает так, что все локальные копии защищенныхданных при необходимости будут актуализированы и станут непротиворечи­выми относительно своих удаленных копий. Когда произойдет освобождение,измененные защищенные данные будут распространены на другие локальныекопии хранилища.

Захват не гарантирует, что локальные изменения будут не­медленно разосланы другим локальным копиям. Соответственно, освобождениене обязательно приведет к импорту изменений из других копий.На рис. 6.11 показана допустимая для свободной непротиворечивости после­довательность событий. Процесс Р1 производит захват, дважды изменяет эле­мент данных, а затем производит освобождение. Процесс Р2 производит захвати считывает элемент данных. Он гарантировано получает значение, которое эле­мент данных имел в момент освобождения, а именно b (кроме случая, когда за-350Глава 6. Непротиворечивость и репликацияхват Р2 происходит раньше, чем захват Р1). Если захват произошел до того, какпроцесс Р1 произвел освобождение, захват будет ожидать совершения освобож­дения.

Поскольку процесс РЗ не сможет осуществить захват до чтения совместноиспользуемых данных, хранилище данных не будет обязано выдать ему текущеезначение х, и этому процессу будет возвращено значение а.Р1: Acq(L) W(x)a \Л/(х)Ь Rel(L)Acq(L) R(x)bР2:РЗ:Rel(L)R(x)aРис. 6.11. Допустимая последовательность событий при свободной непротиворечивостиЧтобы прояснить свободную непротиворечивость, давайте кратко определимее возможную реализацию (несложную) в контексте реплицируемой базы дан­ных. Производя захват, процесс посылает сообщение центральному менеджерусинхронизации, запрашивая захват отдельной блокировки.

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

Таким образом, произвольное число операций чтения и записисовместно используемых данных сопровождается фиксированными дополни­тельными затратами. Захваты и освобождения при разных блокировках проис­ходят независимо друг от друга.Хотя описанный централизованный алгоритм и решает проблему, это отнюдьне единственный подход. Вообще говоря, распределенное хранилище данных яв­ляется свободно непротиворечивым при условии выполнения им трех правил.> Перед выполнением операций чтения или записи совместно используе­мых данных все предыдущие захваты этого процесса должны быть полно­стью закончены."¥ Перед выполнением освобождения все предыдущие операции чтения и за­писи этого процесса должны быть полностью закончены.> Доступ к синхронизируемым переменным должен обладать непротиворе­чивостью FIFO (последовательная непротиворечивость не требуется).Если все эти условия выполнены и процессы правильно (то есть попарно) ис­пользуют захваты и освобождения, результат любого выполнения не будет отли­чаться от порядка, характерного для последовательно непротиворечивых храни­лищ.

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

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

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