Спец часть (часть 1) (3 поток) (2015) (by Кибитова) (1161601), страница 18
Текст из файла (страница 18)
В этом графе существует дуга,ведущая из вершины-транзакции к вершине-объекту, если для этой транзакции существуетудовлетворенный захват объекта. В графе существует дуга из вершины-объекта к вершинетранзакции, если транзакция ожидает удовлетворения захвата объекта.Легко показать, что в системе существует ситуация тупика, если в графе ожиданиятранзакций имеется хотя бы один цикл.Для распознавание тупика периодически производится построение графа ожиданиятранзакций (как уже отмечалось, иногда граф ожидания поддерживается постоянно), и в этомграфе ищутся циклы. Традиционной техникой (для которой существует множестворазновидностей) нахождения циклов в ориентированном графе является редукция графа.Не вдаваясь в детали, редукция состоит в том, что прежде всего из графа ожидания удаляютсявсе дуги, исходящие из вершин-транзакций, в которые не входят дуги из вершин-объектов.(Это как бы соответствует той ситуации, что транзакции, не ожидающие удовлетворениязахватов, успешно завершились и освободили захваты).
Для тех вершин-объектов, длякоторых не осталось входящих дуг, но существуют исходящие, ориентация исходящих дугизменяется на противоположную (это моделирует удовлетворение захватов). После этогоснова срабатывает первый шаг и так до тех пор, пока на первом шаге не прекратится удалениедуг. Если в графе остались дуги, то они обязательно образуют цикл.Предположим, что нам удалось найти цикл в графе ожидания транзакций.
Что делать теперь?Нужно каким-то образом обеспечить возможность продолжения работы хотя бы для частитранзакций, попавших в тупик. Разрушение тупика начинается с выбора в цикле транзакцийтак называемой транзакции-жертвы, т.е. транзакции, которой решено пожертвовать, чтобыобеспечить возможность продолжения работы других транзакций.Грубо говоря, критерием выбора является стоимость транзакции; жертвой выбирается самаядешевая транзакция.
Стоимость транзакции определяется на основе многофакторная оценка, вкоторую с разными весами входят время выполнения, число накопленных захватов, приоритет.После выбора транзакции-жертвы выполняется откат этой транзакции, который может носитьполный или частичный характер. При этом, естественно, освобождаются захваты и можетбыть продолжено выполнение других транзакций.Естественно, такое насильственное устранение тупиковых ситуаций является нарушениемпринципа изолированности пользователей, которого невозможно избежать.Заметим, что в централизованных системах стоимость построения графа ожиданиясравнительно невелика, но она становится слишком большой в по-настоящемураспределенных СУБД, в которых транзакции могут выполняться в разных узлах сети.Поэтому в таких системах обычно используются другие методы сериализации транзакций.Еще одно замечание. Чтобы минимизировать число конфликтов между транзакциями, внекоторых СУБД (например, в Oracle) используется следующее развитие подхода.Монопольный захват объекта блокирует только изменяющие транзакции.
После выполненииоперации модификации предыдущая версия объекта остается доступной для чтения в другихтранзакциях. Кратковременная блокировка чтения требуется только на период фиксацииизменяющей транзакции, когда обновленные объекты становятся текущими.Альтернативный метод сериализации транзакций, хорошо работающий в условиях редкихконфликтов транзакций и не требующий построения графа ожидания транзакций.
основан наиспользовании временных меток.Основная идея метода (у которого существует множество разновидностей) состоит вследующем: если транзакция T1 началась раньше транзакции T2, то система обеспечиваеттакой режим выполнения, как если бы T1 была целиком выполнена до начала T2.Для этого каждой транзакции T предписывается временная метка t, соответствующая времениначала T. При выполнении операции над объектом r транзакция T помечает его своейвременной меткой и типом операции (чтение или изменение).Перед выполнением операции над объектом r транзакция T1 выполняет следующие действия:1.Проверяет, не закончилась ли транзакция T, пометившая этот объект.
Если T закончилась,T1 помечает объект r и выполняет свою операцию.2.Если транзакция T не завершилась, то T1 проверяет конфликтность операций. Еслиоперации неконфликтны, при объекте r остается или проставляется временная метка сменьшим значением, и транзакция T1 выполняет свою операцию.3.Если операции T1 и T конфликтуют, то если t(T) > t(T1) (т.е.
транзакция T является более"молодой", чем T), производится откат T и T1 продолжает работу.4. Если же t(T) < t(T1) (T "старше" T1), то T1 получает новую временную метку и начинаетсязаново.К недостаткам метода временных меток относятся потенциально более частые откатытранзакций, чем в случае использования синхронизационных захватов. Это связано с тем, чтоконфликтность транзакций определяется более грубо.
Кроме того, в распределенных системахне очень просто вырабатывать глобальные временные метки с отношением полного порядка(это отдельная большая наука).Но в распределенных системах эти недостатки окупаются тем, что не нужно распознаватьтупики, а как мы уже отмечали, построение графа ожидания в распределенных системах стоиточень дорого.6. Аппаратно-программные средства поддержки мультипрограммного режима – системапрерываний, защита памяти, привилегированный режим. задача 1блокировкаготовностьзадача 1задача 2 1. Необходимо наличие аппарата прерываний. Как минимум в машине должно бытьпрерывание по таймеру, что позволит избежать “зависания“ всей системы при зацикливанииодной из программ (обеспечивает саму возможность реакции на события и автоматическогопереключения с одной программы на другую, сигнализировать о том, что процесс полез не всвою память или попытался выполнить запрещенную команду)Аппарат прерываний ЭВМ - возможность аппаратуры ЭВМ стандартным образомобрабатывать возникающие в вычислительной системе события.
Данные события будемназывать прерываниями. Итак, прерывание - одно из событий в вычислительной системе, на возникновение которогопредусмотрена стандартная реакция аппаратуры ЭВМ. Количество различных типовпрерываний ограничено и определяется при разработке аппаратуры ЭВМ. Аппаратная возможность ассоциирования некоторыхобластей ОЗУ с одним из выполняющихся процессов/программ. Настройка аппарата защитыпамяти происходит аппаратно, то есть назначение программе/процессу области памятипроисходит программно (т.е., в общем случае операционная система устанавливаетсоответствующую информацию в специальных регистрах), а контроль за доступом –автоматически. При этом при попытке другим процессом/программой обратиться к этимобластям ОЗУ происходит прерывание “Защита памяти” (В привилегированном режиме центральному процессору разрешается выполнять всекоманды языка машины, а в режиме пользователя – только обычные (не привилегированные)команды.
При попытке выполнить привилегированную команду в пользовательском режимецентральным процессором вырабатывается сигнал прерывания, а сама команда, естественно,не выполняется. Привилегированными должны быть команды задания адресногопространства для программы. Привилегированными должны быть и все команды, которыеобращаются к внешним (периферийным) устройствам. Например, нельзя разрешать запись надиск в режиме пользователя, так как диск – это тоже общая память для всех программ, тольковнешняя, и одна программа может испортить на диске данные (файлы), принадлежащиедругим программам.
То же самое относится и к печатающему устройству: если разрешитьвсем программам бесконтрольно выводить свои данные на печать, то, конечно, разобраться втом, что же получится на бумаге, будет чаще всего невозможно. Как же тогда быть, еслипрограмме необходимо, например, считать данные из своего файла на диске в оперативнуюпамять? Выход один – программа пользователя должна обратиться к определённымслужебным процедурам, с просьбой выполнить для неё ту работу, которую сама программапользователя сделать не в состоянии.
Эти служебные процедуры, естественно, должныработать в привилегированном режиме. Перед выполнением запроса из программыпользователя, такая служебная процедура проверяет, имеет ли эта программа пользователяправо на запрашиваемое действие, например, что эта программа имеет необходимыеполномочия на чтение из указанного файла. Переключение в привилегированный режимпроизводится центральным процессором при вызове специальных системных процедур,которые имеют полномочия для работы в привилегированном режиме.⌧⌧⌧ ••••⌧⌧⌧⌧⌧⌧⌧⌧ ⌧⌧.