Tanenbaum (модели конситентности) (1162628), страница 2
Текст из файла (страница 2)
ес и, ваяет юамхо ел имать е заемвпом давних Геряэеятаэь«ая ось — гремя. Х«ааигшла со шрхзж «мЧюпппи+.иаесп,о (а). хв яишва еп «и р р а ~ем(щ Итак, когда хранилище данных строго нещютиворечиво, все операции записи мгновенно замечюотся всеми процессами. Выдерживается абсолютный глобальный порядок по времени. Если элемент ланимх изменяется, все последующие операции чтения, совернпемме с данньази, возвращают новое значение, прн зтсм невюКно, как скоро после изменения производится чтение, и не имеет значения, юкой процесс производит чтение и ше ои расположен.
Соответственно. если производится чтение, оно возвращает зто текущее значение, и неважно, как быстра шкле этого производится слепующая запись. 333 Глава 6. Напротиварвчиаоать и рвпликация В следующем пункте мы ослабим требования этой модели, заменив абсолютное время временными интервалами, и точно определим приемлемое поведение лля кОнФликт) юших шюрацийг. 6.2.2. Линеаризуемость и последовательная непротиворечивость Хаги строгэн непратиэоречижкть и представляет собой идеальную ышель непротиворечивости, реализовать ее в распргделенньш систсмах невазМпжно. Кроме того, опыт показал, что щюгрзммисты часто могут ттЧительно лучше управлять не столь сгрогцми ьюделямн.
Так, например, все книги по операционным системам содержат Обсуждение проблем критических областей и ктимных исключений. При этом, как правило, имеется предупреждение о том, что празильмо написанные параллельные праграммм (такие, как программа пгранзводитель — потребительь) не должны делать никаких предпопоженнй Об сеносительных скоростях прапессов или об очередности выполнения инструкций. Обработка двух сабьпий в одном процессе происходит так быстро, что другой процесс не в состоянии сделать что-нибудь, если между ними обнаружат проблему.
Вместо этого читателя учат программировать так, чтобы точный порядок выполнения инструкций (на самом деле, ссылок на память) не имел викакога значения. Если важна очередносп. событий, следует испольэовать семаФоры или другие онерацни синхронизации. Принятие этого аргумента означает согласие на можль с.шбой непративорьчизОстн. Паниг)оетпвппея нтдютипуюш вость (тйиеп~Ы сопгцшвгр) — это ыенее строгэя модель непротизоречююсти. Впервые она была определена в [250[ в контексге совместно испгшьауемай памяти мультштроцессарньш систем.
В общем, хра. нилище данных считаежя последовшельно непротиворечивым, если сто удовлетворяет следующему усложню: результат люб но действия такай же, как если бы операции (чвюал и затгси) всех щюцессае е хракилии~в данных еьеиыиялись бы в некотором гюстдоеательном порядке, причем тгерации зпждого отдельного щюцесса вьтапиыись бы е порядке, апредееяемом ею программой. Это определение означает, что когда пропессы выполняются параллельно на различных (возможно) мювииах, любое правильное чередование операций чтении и записи является допустимым, но все гйюцессм видят одно и то же чередование оперений.
Отметим, что о времени никто не вспоминает, то есть никто не ссылается па есамую последнююь операцию записи обьекта Отметим, что в данном контексте процесс евидить записи всех процессов, но только свои собспгенные чтения. Итак, время роли не играет, что мы и видим на рип 6.6. Рассмотрим работу четырех процессов с одним влементом данных х На рис. 6.6, а сначала процесс )ь(. Осуществляет запись й'(х)а в элемент х. Позднее (по абсащатному времени) щюцесс РУ также осуществляет запись, устанавливая значение х в Ь.
Однако аба процесса, РЗ н Р4. скотта читюат значение Ь и лишь затем — значение а. Другими словами, операция записи процесса РУ прелставляется им происходюпей раньше записи процесса Рг. бдй Модели непротиворечитюти, ориентированные нв данны 339 еи х Рт; чцхуг пк ьтх п(хв Ш >ь л а р .в.в.хп н д э д ц ч т а н в(е). Хаенигище денньк аез тщгедсеэнньнои нгоаотншае~ивоотн (а) В противополажношь происходящему на рис. 6.6, а, на рис.
6.6, 6 последовательная нтгротнворечивосп нарушается, поскольху не все процессы видят апипаксвое чередование операний записи. В частности, для процесса РЭ дело выглядит тах, что элемент давних сначала принимжт Значение Ь, а затем — и. С другой стороны, Р4 полщэет, что итоговое значение элемента данньш — Ь. Модель непротиворечивости, более слабая, чем строгая иепротнаоречивошь, но более силыюя, чем последонательная — зто лгттцнггувискпв (йпгапгабййу). Согласно этой модели операции получают отметку времени, иглольэуя глобальные часы, имеющие конечную точность. Такие чаем могут быль реалитианм в распределенной системе из предположения, что у процессов имеются слабо синхронизированные часы, которые обсужаались в предыдущей главе.
Пусть шаг(х)— это отметка времеви, назначенная операции ОР, каторал работмт с элементом данных х, причем ОР— зчо операция чтения (й) или записи (иг). храниливш данных называется линеариэуемым, если каждая ояершщя имеет отметку време. ни и соблюдается следующее условие ]199]: ргэушпэап Есттго дейстеил талой же, как если бьг есе операции (чтения и записи) всех процессов с хранилищем доплыл емнолпштсь бы э незаперты вквгдоеатгльиам порядке, иричгм аисраци и каждого отдглмшго процесса еьтолнялись бм е мной носгедоеатгльности и порядке, д Пр ...м(х) (х), ОР((х) е втой пастдомгтгльнотгт йлжна прм)игтнмаэать шиующш Оруда.
Отметим, что линеариэутэое хранилище данных обладает шце и последовательной непротиворечивостью. Разница между ними состоит в том, что при учете упорядоченности во внимание приншеаютгя также установки синхронизированных часов. На практике линеариэуемость используется в первую очередь для содействик в формальном подтверждении параллельных алгоритмов ]199]. Лопалнительнме ограничения, такие как сохранение упорядоченности в соответствии с отменами времени. делает затраты на реалиаацию линеэризации выше, чем на реализацию последонательной иепротизоречишютн, как показано в ]20].
Последовательная непротивормшвосп напоминает сериализуемость в транзакциях, о которой мы говорили в предыдущей главе. Напомним, что набор параллельно выполняющихся транэаэций считается сериализувыым, если итоговый результат может быть получен путем выполнения этих трапюхций пгкледовательно с опрелелснной очередностью. Основная разница заключается в степени деталиэациш последшш(ельная непротиворечивость опрелшвктся в пгшатинх операций записи и чтения, а сериаяизуемость — в понятиях транаавпий, кото(вге объединяют эти аперйции в сщно целое. 640 Глава 6. Непротивш]ечиаоап и репликация Чтобы получить более конкретное представление о последовательной непротиворечивости, рассмотрим три параллельно вмполншошихся процесса, Р(, Р2 и РУ, привеленнме в табл. 62 (130) Элементы данных в атом примере предсшалены тремя целыми переменлмми — х, у и г, которые храпятсл в паследсиательно непротиворечивом хранилище данных (возможно, распределенном), предназначенном для сонме«тпого доступа.
Предположим, чта кажлая из переменных ииициализироваиа нулем. В атом примере присвоение соответствуег операции записи, а инструкция рг\пг — одновременным операциям чтения обоих аргументов. Все инструкции считаются неделимыми Таблица 6.1. Три гюраллельио еьзюлияющихся процесса Працзсс Рл Працеас Рт г1: рпга(х.у): х-1; рг(ацу.г]: 3' ргмых,г); При выполнении возможны,различнме варианты чередования. Имея шесть незазисиыых выражений, мы получаем 720 (Б() потегщиально возможных последовательностей выполнение, хотя некоторые из них нарушают поряяпк, ааланный в программат, Рассмотрим 120 (5() последовательностей, которме начинаются с х-1.
В половине из них инструкция рппщх.г) вююю[яетгл раньше инструкции у-1, а потому нарушают порядок выполнения ишчрукций программы. Вще у половииь[ инструкция рг] Ш (х „у) выполняется раньше инструкции г-1 н такжц нйрушают порядок выполнения инструкций программы. Только 1/4 из 120 последавхгельносзтй являются допустимыми (всего 30). Еще 30 допустимых ласледователыюстей мо(ут начинзться с инструкции у 1 и еще 30 — с ин(хру]ь цин г-1, лазая в сумме 90 допустимых последовательностей выполнения инструкций. Четыре.из ннх приведены в табл.
6.2. Таблица 6.2. четыре варианта допустимых гюгледовательиостей выполнения процессов В варна]пе 1 три щюпесса аапусхазпся в смнуюшем порядка сначала Р(, паоле што Р2, зхгсм РР.'В трех прутик варизнтах демонстрируются различные, но также х-1. рп а( (у. 1) ( у1: рг!га(х,г):; г.1: ргзсшх у) 001011 001Я] х1: у ц рг(сг(х г): рпгг[у.г): г-1; рпс((х у) 10!011 .ННО11 у-1: -1. рг(ацх,у). рг(аг(х,г); х-1; рпег(у г) 010УП 110101 у-1: х1: г1: рпгг(х.г]: рг]с[[у.г)( (хих(х.у]: 111ЬВ 111111 6.2.