Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Слабая непротиворечивость

Читайте также:
  1. Линеаризуемость и последовательная непротиворечивость
  2. Поэлементная непротиворечивость
  3. Причинная непротиворечивость
  4. Свободная непротиворечивость
  5. Сильная и слабая культура.
  6. Слабая связь

Непротиворечивость FIFO требует, чтобы операции записи одною процесса ото­всюду наблюдались в одном и том же порядке. Не все приложения нуждаются да­же в том, чтобы наблюдать все операции записи, не говоря уже об их порядке. Рассмотрим случай, когда процесс внутри критической области заносит записи в реплицируемую базу данных. Хотя другие процессы даже не предполагают рабо­тать с новыми записями до выхода этого процесса из критической области, СУБД не имеет никаких средств, чтобы узнать, находится процесс в критической области или нет, и может распространить изменения на все копии базы данных.

Наилучшим решением в этом случае было бы позволить процессу покинуть критическую область и затем убедиться, что окончательные результаты разосланы туда, куда нужно, и не обращать внимания на то, разосланы всем копиям промежуточные результаты или нет. Это можно сделать, введя так называемую переменную синхронизации. Переменная синхронизация имеет только одну ассоциированную с ней операцию, synchronize(S), которая синхронизирует все локальные копии хранилища данных. Напомним, что процесс P осуществляет операции только с локальной копией хранилища. В ходе синхронизации хранилища данных все локальные операции записи процесса Р распространяются на остальные копии, а операции записи других процессов — на копию данных Р.

Модель слабой непротиворечивости имеет три свойства.

Доступ к переменным синхронизации, ассоциированным с хранилищем данных, производится на условиях последовательной непротиворечивости

С переменной синхронизации не может быть произведена ни одна операция до полного и повсеместного завершения предшествующих ей опера­ций записи.

С элементами данных не может быть произведена ни одна операция до полного завершения всех операций с переменными синхронизации.

Первый пункт гласит, что все процессы могут наблюдать за всеми операциями над переменными синхронизации, которые с точки зрения этих процессов исходят в одинаковом порядке. Другими словами, если процесс Р1 вызывает операцию synchronize(Sl) в то же самое время, когда процесс Р2 вызывает операцию synchronize(S2), результат будет точно таким же, как если бы операция synchronize(Sl) была вызвана раньше операции synchronize(S2), или наоборот.

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

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

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

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

Рассмотрим пример. Процесс Р1 осуществляет две записи значений элементов данных, после чего синхронизируется (показано буквой S). Если Р2 и РЗ к этому моменту еще не были синхронизированы, мы не можем дать никаких гарантий но поводу того, что они увидят. Таким образом, последовательность событий (а) допустима.

 

Р1: W(x)a W(x)b S P1: W(x)a W(x)b S _

P2: R(x)a R(x)b S P2: S R(x)a

P3: R(x)b R(x)a S

а б

Ситуация на схеме (б) иная. Здесь процесс Р2 синхронизирован. Это означает актуальность его локальной копии хранилища данных. Когда он будет считывать значение х, он получит значение b. Получение а при слабой непротиворечивости невозможно.

 


Дата добавления: 2015-08-18; просмотров: 143 | Нарушение авторских прав


Читайте в этой же книге: Прозрачность | Масштабируемость | Разделение приложений по уровням | Строгая непротиворечивость | Линеаризуемость и последовательная непротиворечивость | Поэлементная непротиворечивость |
<== предыдущая страница | следующая страница ==>
Причинная непротиворечивость| Свободная непротиворечивость

mybiblioteka.su - 2015-2024 год. (0.007 сек.)