Tanenbaum (модели конситентности) (1162628), страница 4
Текст из файла (страница 4)
ьт(л Р(: агля РК л Рз: й(л)а йф4Ь й(л)с Рма. влч эта щюледтегвльнощьлечстлье дал лрлмиллща с ч:ечнннса несрагласреьесагью. но недспгс глез дал лаалнлаще гю строгал или посщаазатальнса месаоглзсаемыюгъю Рассмотрим теперь второй пример. На рис.
6.6, а мм видим, что И(2(х)Ь потенциально зависит ат Иг((х)а, посхалъку Ь ьюжет быль результатом змчислений, в которые входит значение, прочгпаиное операцией 62(х)а. Две операции записи связаны причинно-следственной связью, а значмт, все процессы должны наблюдаю нх а ааииаковам порядке. Таким образом, рвс. 6.6, а некорректен. С лругой старснм. на рис. 66, б операция пения из процесса Р2 убрана, и теперь 344 Глава 6. Непротиворечивость н реаликацня й«У(к)а и й'2(х)б стали параллельными операциями записи.
Хранияище с при- чинной непротиворсчивастью не требует, чтобы параллельные операции записи обладали глобальной'упорядоченностью, и потому рис. 6.8, б корректен. нг: ш(» «)е Ф(х)Ь ЪУ х)Ь Н(х х)а Н(Х)е Н(х)Ь н(х йэ: И(х)а Н(к)Ь РЕ: в а иис. вль нарушение ври»инной инфра»имран«вести хав»»лхша (в). Орван«ь»ч» нос«едсзате«»»ость ссаьн»й е хривввщв с атгтшой ивгаоттеае чмккгмо йй 6.2.4. Непротиворечивость ЯРО В случае причинно-следственной непротиворечивости допустимо, чтобы на различных машинах параллельные опера«))ги записи наблюдались в разном порядке, ио операции записи, связанные причинно-слеЖгаеннай связью, должны иметь одинаковый порядок выполнения, с какой бы машины ни велось наблюдение Следующим шагом в ослаблении непротиворечивости будет освобождение ат последнего требования.
Это'приведет нас к иенроншворечивссти РУРО (РГРО оиииГенсу), которая подчиняется следуюп(ему условию: операции записи, асущесзмляемые единичяым процессам, наблюдаютсл всеми остапы«мн п)юцессами в том порядке, в к«нюрам они асри(ествляютсл, но операции записи, н)хшсшдяи~ие в различных процессал, моют набмадатьсл разними прайессаии в разном порядке. Пепрстиворечивость Р)РО в случае распрелеленных систем с совместно используемой памятью называют татке нвлртгявюречивостью РВАМ (РВАМ сонжтшти). Она описана в (268]. Сокращение РКАМ происходит ст Ирейпед ЙАМ (конвейерная оперативная память), потому что зюгись, производимая одним процессом, мажет быть конвейернэована, а там смыгле, что процесс не должен терять скорость, ожидал окон шния одной операции загпши, чтобы начать другую.
Сравнение непротиворечивости Р)РО с причинной непротиворечивостью иллюстрирует рис. 6.9. Приведенная последовательность событий допустима для хранилища данных с иепротиворечишклъю Р)РО, но запрещена для любой более строгой модели из тех, ксторме мм рассматривали. Пепрппиоречнвссть ЛРО интересна иам из-за нросгсгы ее реичизации. В действительности она не лает никаких гэрантий того, в каком порядке операции записи будут. наблюдаться в различных процессак, исключая порядок прохожде- Реалюадия причинно-следственной непршиворечивости требует отслеживать, какие процессы какие записи випели.
Это можно успешно проделать, создав и гюдаержижгл граф аависимастей, иэ котором будет указана взаимная за анси мосп, операций друг ат друга. Один из способов сделать зто — воспользоваться векторными отменами времени, которые мы обсуждалн в прнплзупшй главе. Позже мы еще вернемся к испояьзаванию векторнмх отметок вреМени для определения причинно-следственной связи.
6 2. Модели непротиворечивости, о(х(ыпнраванные на данные Зчб ния двух или более операций записи, принадлежащих одному процессу. Если изложить ато другими станами, в этой модели все операции записи ва всех процессах являются параллельнымн Эта модель манят быль реалюавана просто путем именования каждой операшщ ларой (щюцесс. очередной номер) н осуществлением операций записи каждого из процессов в порядке их намеров. х)к нщ к щк рэ." рк: и(к)з н(х)ь прас вне.в.в.днчюн л т оюнвплы мпр щн мюс про Рассмотрим вновь три процесса из табл.
6Л, опираясыщ этот раз на непротиворечивость НРО вместо последовательной нытротнварсчивасти. При условии непротиворечивости НРО различные процессы могут наблюдать выполнение инструкций в раз)шинам порядке (табл. 6.3). Так, например, в варианте 1 показано, как выглядит последователытоать событий с тачки зрения пропьтса Р1, в варианте 2 — с точки зрения процесса Р2. а'в варканЮ 3 -с точки арения процесса РУ (наблюдаемые резудьтаты создают инструкции, вьщрленные жирным шрифтам).
В условинх последовательной непротиворечивости три раздичных предщавления бмли бы недопустимы. Таблица 6.6. Очавидность вькюлнвнин инструкций с точки эрвина трех процесаов, предспииюнных в табл. 6.1 Инструкции Если мы объедияим результаты трех процессов, то получим итон)вый резуль тат 001001. что. как мы пжарили раньше, в усжаясп( пасзеловатальпой непротиворечивости пещмможно.
Основное различна мг)клу последовательной нещютиворечиносп ю и непративорещцдхтью'НРО состоит в там, что н нервом случае„ хотя порядок выполнения инструкций не регламентирован, все процессы, па крайней мере, с ним согласны. Ва втором же случае им мет нужам ни с чем саглашатьгл. Разные процессы могут набщалать операции в разном порядке. Иногда иещнпнварсчивость НРО мажет прищщить к результатам, пратнперечащим здравому смыслу.
В примере, эюпом мэ (174], предполащсюя, чю целые переменные к и у иняциализируются нулщщ. Клинтон, что в ситуации, «ц )з'(Щ(г,х); у1: ргиык.м: г.1: Июг(х.у); Ю х1:' у"1т рг)щ(х.к)) рг(пт(у.г): г-1: ргтщ(х.у): 1а' у"1: рг)пт(хл)- «1: ьтт с(х.у); х-1: ИЦМ(г.к); 01 346 Глава 6.
Непротиворечивость и репликецил представленной в табл. 6А, возможны трн результата: будет прерван процвел Р1, будет прерван процесс Р2, ии олин из процессов не будет прерван (еслн пераыпи произойдут обе операции присваивания). Однако в случае цепрстизоречизосщ г! РО могут быть прерваны оба процесса Такой результат получится в случае, если Р1 осушеспшт чтение Я1(п)0 до обнаружения выполненной процессии Р2 записи %2(у)1, а Р2 осуществит чтение й2(х)О до обнаружения выполненной процессом Р1 записи йх1(х) 1. При последовательной непротиворечивости суше стзует шесть допустимых вариантов чередования выражений, и ни сдан из ннх не ведет к прерыванию обоих процессов.
Таблица 6.4. Деа плрзллельиьи прощюса Процесс Р1 х1: 11: 11 11 О] 11111эг): гтгх 0]З!1ЦР1): 6.2Л. Слабая непротиворечивость Хотя непротиворечивость ЯРО и дает большую производительноеть, чем более строгие модели непротиворппгэости, длл миопгх приложений она остается изливне строгой, поскольку требует, чтобы операции записи одного процесса отовсюлу наблюдались в одном и том же порядке. Не все приложения нужлаются даже в том, чтобы наблюдать все операции записи. це говоря уже об их порядзп рассмотрим случай, когда процесс внутри критической области заносит записи в реплицируемую базу данных. Хотя другие процессы даже це предполагают работать с новыми записями до выхода этого процесса из критической области, система управления базой данных не имеет никаких средств, пабы узнать, находится процесс в критической области илн вет, и может распространить изменения на все копии базы данных.
Е)аилучвим решеннпч в этом глуше было бы позволить процессу покину)ь критическую область и затем убедиться, что окончзтельиые результаты разослзны туда, куда нужно, и не обращать внимания на то, разосланы всем каппам промежуточные результаты или нет. Зта можно сделать, введя так называемую переменную сияхроипппргп (Елсьошгадоп валлляз). Переменная сюшроиизации Ю имеет только одну ассоцинрозаепую с ней операцию, зглса сап)хе15 ), которая синхронизирует асс дркальные копии хранилища данных.
Напомним, что процесс Р осущеспияет операции только с локальной копией Хранилища. В ходе снихро- ! ниэации хранилища данных все локальные операции ааписн процесса Р раслространлютсл иа остальные копии, а операции записи других процессов — на ко. пню данных Р. Используя переменные синхронизации для частичного определения непротаворечивостн, мы приходим к так называемой слабой пепрстююречиэосги (яиа)г согпптепсу) (130). Модель слабой непротиворечижктн имеет три своз)стек + Доступ к переменным синхронизации, ассе)впдкпзпным с хранилищем данных, производится на условиях последовательной непротиворечивости.