Синхронизация процессов что это
Русские Блоги
Механизм синхронизации процесса операционной системы
Каталог статей
Механизм синхронизации процессов
1. Основные концепции
1. Понятие механизма синхронизации процессов.
Механизм взаимосвязи между несколькими процессами (потоками) в порядке выполнения называется механизмом синхронизации процессов.
2. Зачем вводить механизм синхронизации процессов
Поскольку процессы в операционной системе являются параллельными, когда совместные процессы обращаются к общим данным, может возникнуть несогласованность данных. Для обеспечения согласованности данных нам необходим эффективный механизм, который мы называем механизмом синхронизации процессов.
3. Важные ресурсы
Критические ресурсы относятся к ресурсам, которые могут использоваться только одним процессом (потоком) за раз, например, определенной переменной i (логический ресурс), принтер (физический ресурс) и т. Д.
4. Критическая зона
Критический раздел относится к программным сегментам, которые должны выполняться взаимоисключающе для доступа к критическим ресурсам в параллельных процессах выполнения.
2. Синхронизация процессов и отношения взаимного исключения
1. Синхронизация
Когда несколько параллельных процессов (потоков) взаимодействуют для выполнения задачи из-за необходимости обмена данными, ограничения на порядок выполнения процессов (потоков) синхронизируются. Например, проблема «водитель и проводник» описывает взаимосвязь синхронизации.
2. Взаимоисключающие
Отношения взаимного ограничения, которые возникают косвенно между параллельными процессами (потоками), чтобы конкурировать за единые ресурсы, называется взаимным исключением. Например, два процесса должны выполнять задания на печать одновременно, что описывает взаимоисключающие отношения.
3. Четыре основных принципа механизма синхронизации процессов.
1. Вход свободный
Когда в критической секции нет процессов, он находится в состоянии ожидания, и любой процесс, запрашивающий критические ресурсы, может войти в критическую секцию.
2. Подождите, пока занят
Когда существующий процесс обращается к соседней области, любой другой процесс должен ждать, чтобы гарантировать монопольный доступ к критическим ресурсам.
3. Ограниченное время ожидания
Процесс должен войти в критическую зону в течение ограниченного времени, чтобы избежать длительного «голодания».
4. Пусть власть подождет
Когда процесс не может войти в свою собственную критическую область, он должен немедленно освободить ресурсы ЦП, чтобы предотвратить переход процесса в состояние занятости.
4. Программно-аппаратный метод синхронизации.
1. Программный метод
Хотя этот метод определяет, осуществляется ли доступ к критическому ресурсу, два процесса могут войти в критическую область одновременно.
2. Аппаратный метод
5. Семафорный механизм
Обзор
1. Целочисленный семафор
Целочисленный семафор определяется как целое число S, используемое для обозначения количества ресурсов. Доступ к нему могут получить только два стандартных примитива: wait (S) и signal (S), которые называются «P«Операция и»V«Операции, операции в нихАтомная операция. Его псевдокод выглядит следующим образом:
2. Записанный семафор
Его псевдокод выглядит следующим образом:
3. И введите семафор
Когда процессу необходимо получить несколько ресурсов одновременно, он должен использовать семафор типа AND
4. Набор семафоров
Когда одновременно требуются n ресурсов и ресурс Si применяется для ресурсов di, а доступное количество ресурсов этого типа меньше определенного нижнего предела ti, он не будет выделен, поэтому механизм семафоров типа AND необходимо расширить. для формирования механизма набора семафоров:
Шесть. Семафор в Linux
При использовании семафоров в Linux вам необходимо импортировать файл заголовка semaphore.h
1. Определите семафор
2. Инициализация семафора
int sem_init(sem_t *sem, int pshared, unsigned int value)
Синхронизация процессов и потоков
Процессом (process) называется экземпляр программы, загруженной в память. Этот экземпляр может создавать нити (thread), которые представляют собой последовательность инструкций на выполнение. Важно понимать, что выполняются не процессы, а именно нити.
Причем любой процесс имеет хотя бы одну нить. Эта нить называется главной (основной) нитью приложения.
Так как практически всегда нитей гораздо больше, чем физических процессоров для их выполнения, то нити на самом деле выполняются не одновременно, а по очереди (распределение процессорного времени происходит именно между нитями). Но переключение между ними происходит так часто, что кажется, будто они выполняются параллельно.
Синхронизация нитей в ОС Windows
Пример. Несинхронизированная работа нитей: если временно приостановить выполнение нити вывода на экран (пауза), фоновая нить заполнения массива будет продолжать работать.
Именно поэтому необходим механизм, позволяющий потокам согласовывать свою работу с общими ресурсами. Этот механизм получил название механизма синхронизации нитей (thread synchronization).
Любой объект синхронизации может находиться в так называемом сигнальном состоянии. Для каждого типа объектов это состояние имеет различный смысл. Нити могут проверять текущее состояние объекта и/или ждать изменения этого состояния и таким образом согласовывать свои действия. При этом гарантируется, что когда нить работает с объектами синхронизации (создает их, изменяет состояние) система не прервет ее выполнения, пока она не завершит это действие. Таким образом, все конечные операции с объектами синхронизации являются атомарными (неделимыми.
Работа с объектами синхронизации
Очень важен тот факт, что обращение к ожидающей функции блокирует текущую нить, т.е. пока нить находится в состоянии ожидания, ей не выделяется процессорного времени.
Критические секции
Объект-критическая секция помогает программисту выделить участок кода, где нить получает доступ к разделяемому ресурсу, и предотвратить одновременное использование ресурса. Перед использованием ресурса нить входит в критическую секцию (вызывает функцию EnterCriticalSection). Если после этого какая-либо другая нить попытается войти в ту же самую критическую секцию, ее выполнение приостановится, пока первая нить не покинет секцию с помощью вызова LeaveCriticalSection. Используется только для нитей одного процесса. Порядок входа в критическую секцию не определен.
Существует также функция TryEnterCriticalSection, которая проверяет, занята ли критическая секция в данный момент. С ее помощью нить в процессе ожидания доступа к ресурсу может не блокироваться, а выполнять какие-то полезные действия.
Пример. Синхронизация нитей с помощью критических секций.
Взаимоисключения
Несколько нитей могут получить дескриптор одного и того же мьютекса, что делает возможным взаимодействие между процессами. Можно использовать следующие механизмы такого подхода:
Для того чтобы объявить взаимоисключение принадлежащим текущей нити, надо вызвать одну из ожидающих функций. Нить, которой принадлежит объект, может его «захватывать» повторно сколько угодно раз (это не приведет к самоблокировке), но столько же раз она должна будет его освобождать с помощью функции ReleaseMutex.
Для синхронизации нитей одного процесса более эффективно использование критических секций.
Пример. Синхронизация нитей с помощью мьютексов.
События
Пример. Синхронизация нитей с помощью событий.
Семафоры
Пример. Синхронизация нитей с помощью семафоров.
Защищенный доступ к переменным
Существует ряд функций, позволяющих работать с глобальными переменными из всех нитей, не заботясь о синхронизации, т.к. эти функции сами за ней следят – их выполнение атомарно. Это функции InterlockedIncrement, InterlockedDecrement, InterlockedExchange, InterlockedExchangeAdd и InterlockedCompareExchange. Например, функция InterlockedIncrement атомарно увеличивает значение 32-битной переменной на единицу, что удобно использовать для различных счетчиков.
Для получения полной информации о назначении, использовании и синтаксисе всех функций WIN32 API необходимо воспользоваться системой помощи MS SDK, входящей в состав сред программирования Borland Delphi или CBuilder, а также MSDN, поставляемым в составе системы программирования Visual C.
Методы синхронизации процессов
Презентацию к данной лекции Вы можете скачать здесь.
Введение
В лекции рассматривается синхронизация процессов – одна из интереснейших и наиболее актуальных тем, в связи с широким распространением параллельных вычислительных систем и параллельных алгоритмов решения задач, требующих синхронизации параллельных процессов и потоков по общим ресурсам и событиям. В лекции рассмотрены следующие вопросы:
История синхронизации
Анализ проблемы производитель – потребитель с точки зрения синхронизации по общему буферу
Вспомним представление ограниченного буфера на языке Си (см. «Методы взаимодействия процессов» ) и расширим его переменной counter :
Операции count++ и count— могут быть реализованы на языке ассемблерного уровня следующим образом:
где register1 – регистр аппаратуры.
Проблема в том, что если и производитель, и потребитель пытаются изменить переменную counter одновременно, то указанные ассемблерные операторы тоже должны быть выполнены совместно (interleaved).
Конкретная реализация такого совместного выполнения зависит от того, каким образом происходит планирование для процессов – производителя и потребителя, а также от применения (или неприменения) в каждом из случаев аппаратных оптимизаций, например, увеличения (уменьшения) значения регистра одной командой за один такт ( increment / decrement).
Ситуация, при которой взаимодействующие процессы могут параллельно (одновременно) обращаться к общим данным, называется конкуренцией за общие данные (race condition).Для предотвращения подобных ситуаций процессы следует синхронизировать.
Синхронизация процессов по критическим секциям
Можно показать, что для решения проблемы критической секции необходимо и достаточно выполнение следующих трех условий:
При этом предполагается, что каждый процесс исполняется с ненулевой скоростью, но не делается никаких предположений о соотношении скоростей процессов.
23) Синхронизация процессов
Что такое синхронизация процессов?
Синхронизация процессов — это задача координации выполнения процессов таким образом, чтобы никакие два процесса не могли иметь доступ к одним и тем же общим данным и ресурсам.
Это особенно необходимо в многопроцессорной системе, когда несколько процессов выполняются вместе, и более чем один процесс пытается получить доступ к одному и тому же общему ресурсу или данным одновременно.
Это может привести к несогласованности общих данных. Таким образом, изменение, внесенное одним процессом, не обязательно отражается, когда другие процессы получают доступ к одним и тем же общим данным. Чтобы избежать такого несоответствия данных, процессы должны быть синхронизированы друг с другом.
Из этого руководства по операционной системе вы узнаете:
Как работает синхронизация процессов?
Например, процесс A изменяет данные в ячейке памяти, в то время как другой процесс B пытается прочитать данные из той же ячейки памяти. Существует высокая вероятность того, что данные, прочитанные вторым процессом, будут ошибочными.
Разделы программы
Вот четыре основных элемента критического раздела:
Что такое проблема критического сечения?
Критическая секция — это сегмент кода, который может быть доступен при обработке сигнала в определенный момент времени. Раздел состоит из общих ресурсов данных, которые должны быть доступны для других процессов.
В критическом разделе может быть выполнен только один процесс. Другие процессы, ожидающие выполнения своего критического раздела, должны ждать, пока текущий процесс завершит свое выполнение.
Правила для критического раздела
В критическом разделе должны соблюдаться все три правила:
Решения для критического раздела
В синхронизации процессов критическая секция играет основную роль, поэтому проблема должна быть решена.
Вот несколько широко используемых методов для решения проблемы критического сечения.
Peterson Solution
Решение Петерсона является широко используемым решением критических проблем сечения. Этот алгоритм был разработан компьютерным ученым Петерсоном, поэтому он назван решением Петерсона.
В этом решении, когда процесс выполняется в критическом состоянии, другой процесс выполняет только остальную часть кода, и может произойти обратное. Этот метод также помогает убедиться, что в определенный момент времени в критическом разделе выполняется только один процесс.
пример
Оборудование для синхронизации
Иногда проблемы критической секции также решаются аппаратно. Некоторая операционная система предлагает функциональность блокировки, при которой Процесс получает блокировку при входе в секцию Критический и снимает блокировку после выхода из нее.
Поэтому, когда другой процесс пытается войти в критическую секцию, он не сможет войти, поскольку он заблокирован. Он может сделать это только в том случае, если он свободен, получив сам замок.
Мьютекс Замки
Аппаратное обеспечение синхронизации не простой метод для реализации для всех, поэтому был также введен строгий программный метод, известный как Mutex Locks.
При таком подходе в разделе ввода кода получается LOCK для критических ресурсов, используемых внутри критического раздела. В секции выхода эта блокировка снята.
Семафорное Решение
Семафор — это просто переменная, которая неотрицательна и разделена между потоками. Это еще один алгоритм или решение проблемы критического сечения. Это механизм сигнализации и поток, ожидающий семафор, который может быть передан другим потоком.
Он использует две атомарные операции: 1) ожидание и 2) сигнал для синхронизации процесса.
Русские Блоги
Основные понятия операционной системы Глава VI_ Синхронизация процессов
Обзор
Будет много проблем с одновременным выполнением программ.Простым примером является проблема производитель-потребитель.
этоОдновременныйПроблема в том, что несколько процессов одновременноДоступ к одним и тем же данным и управление имиА такжеРезультат выполнения связан с конкретным порядком, в котором произошло посещение., НазываетсяСостояние гонкиЧтобы избежать этой проблемы, необходимо убедиться, что только один процесс может управлять переменными в течение определенного периода времени. count
Необходимо избегать этих проблем, поэтому необходимоСинхронизация процессовс участиемКоординация
Проблема критического сечения
Критический раздел
относится к разделу кода нескольких процессов, которые могут изменять общие переменные, обновлять одну и ту же таблицу и обращаться к одному и тому же файлу. Когда один процесс входит в критическую секцию, никакой другой процесс не может Войдите в критическую зону.
Проблема критического сечения
заключается в разработке протокола, позволяющего процессам взаимодействовать. Каждый процесс должен войти в критический раздел через запрос, и вызывается код, реализующий этот запрос.Раздел входа, После критического участка будетВыход из раздела (выход из раздела), Другой код называетсяОставшаяся площадь (оставшаяся часть), Его общая структура такова.
Ответить на вопросы критического раздела
В критическом разделе операционной системы черезВыгрузить ядрос участиемЯдро без вытесненияЕсть два способа справиться с этим: очевидно, что ядра без вытеснения не вызывают состояния гонки, но для ядер с вытеснением требуется тщательная разработка, чтобы избежать условий гонки.
Алгоритм Петерсона
Этот алгоритм является классическим программным решением проблемы критического раздела, но он подходит только для двух процессов, попеременно выполняющихся в критическом разделе и оставшемся разделе.
Алгоритм Петерсона разделяет два данных между двумя процессами, поворот указывает, какой процесс может войти в критическую область, а флаг указывает, какой процесс хочет войти в критическую область.
Этот алгоритм фактически «скромно» находится между двумя процессами: если другая сторона хочет войти, а очередь принадлежит другой стороне, вы входите в зону ожидания.
Если два процесса хотят войти в критическую зону одновременно, они изменят значение поворота одновременно, но в конце концов поворот останется только на одном значении, то есть конкуренция будет равной, но если они не могут конкурировать, то это не так.
Некоторые аргументы могут показать, что решение алгоритма Петерсона является правильным (то есть взаимное исключение удовлетворено, прямое требование выполнено и требование ограниченного ожидания выполнено)
Аппаратная синхронизация
Алгоритм ПетерсонаНа основе программного обеспеченияАппаратное обеспечение также может иметь некоторые механизмы для решения проблемы критической секции.
Среди них ситуация однопроцессорного и многопроцессорного отличается:
Таким образом, современные компьютерные системы предоставляют специальные аппаратные инструкции для относительно простого решения проблемы критического участка.Теперь концепция этой инструкции абстрагируется в код, который можно описать в следующей форме:
Здесь в учебнике упоминается, что два вышеупомянутых метода решают взаимное исключение, но не решают проблему ограниченного ожидания. Я был другим. После ознакомления с другими статьями, кто-то рассказал о своем понимании.Проблема ограниченного ожидания решается, когда есть два процесса, но нет способа решить проблему ограниченного ожидания, когда есть несколько процессов.。
Те, у кого есть другие идеи, могут оставить сообщение в разделе комментариев для обсуждения.
Также есть TestAndSet() Этот алгоритм удовлетворяет трем требованиям задачи критического сечения.
Классическая проблема синхронизации
Некоторые проблемы являются классическими почти для всех схем синхронизации, которые будут использовать эти вопросы для проверки, поэтому, прежде чем вводить схему синхронизации, сначала расскажите об этих проблемах заранее.
Проблема производитель-потребитель
Это также называется проблемой ограниченного буфера, о которой было кратко рассказано в начале этой статьи.
Читатель-писатель проблема
Чтобы избежать такой путаницы, писатели должны иметь монопольный доступ к общей базе данных. Эта проблема называется проблемой читателя-писателя.
У этого вопроса есть два варианта в зависимости от приоритета читателей и писателей:
Первая проблема читатель-писатель может привести к тому, что писатели голодают; вторая проблема читатель-писатель может заставить читателей голодать. Поэтому были подняты другие варианты проблем читателя-писателя без проблем с голодом, которые здесь обсуждаться не будут.
Проблема еды философа
Предположим, что пять философов сидят за круглым обеденным столом и делают только две вещи: едят или думают. Они перестают думать, когда едят, и перестают есть, когда думают. Посередине стола есть рис и палочка для еды между каждыми двумя философами. Они следуют следующим правилам:
Как правило, существуют следующие методы решения обеденной проблемы философов:
После этого есть несколько схем синхронизации.
сигнал
Аппаратные решения (Аппаратная синхронизацияУпоминается в разделе TestAndSet() с участием Swap() ) Слишком сложен для прикладных программистов. Для решения проблемы критического участка его называютСемафорИнструмент синхронизации.
Использование семафоров
Обычно существует два типа семафоров, один без диапазонаПодсчет семафоров(Целое число), одинДвоичный семафор(Только 0 и 1), операционная система может различать эти два семафора. Среди них двоичные семафоры также называют блокировками взаимного исключения, поскольку они могут обеспечивать взаимное исключение.
Семафоры используются во многих случаях, например,Решить проблему взаимного исключения,Решение проблем с приложением ресурсов,Решить проблемы синхронизации
Решить проблему взаимного исключения
Двоичный семафор используется для решения проблемы взаимного исключения, которая реализуется следующим образом:
Решение проблем с приложением ресурсов
Решить проблемы синхронизации
С помощью следующей формы кода вы можете управлять последовательностью выполнения кода двумя процессами (следующий рисунок представлен только в Обработать Законченный S1 Задний, Процесс b Может выполнить S2 ):
Семафор и связанные с ним методы, использованные выше, имеют серьезный недостаток:Занято ожиданиемВ реальном дизайне с несколькими программами эта форма является пустой тратой циклов ЦП, потому что она может эффективно использоваться другими процессами.
Этот тип семафора также называетсяSpinlock, Его недостаток очевиден (ожидание занятости), но он также имеет свои преимущества: переключение контекста не выполняется во время процесса вращения, и переключение контекста может занять относительно длительное время.
Следовательно, спиновые блокировки больше подходят для ситуаций, когда время использования блокировки относительно невелико.
Семафорная реализация
Недостатком упомянутого ранее семафора является ожидание занятости. Чтобы преодолеть этот недостаток, вы можете изменить его. wait() с участием signal() Определение состоит в том, что когда процесс ожидает, он не вращается, а блокирует себя, добавляет себя в очередь ожидания семафоров, переключается в состояние ожидания и переходит к планировщику ЦП, чтобы выбрать другой процесс для выполнения.
Тупик и голод
Когда каждый процесс в группе ожидает события, и это событие может быть выполнено только другим ожидающим процессом, говорят, что эта группа процессов находится вТупикположение дел.
Может быть получено, что когда между несколькими потоками существует более одного семафора, может возникнуть взаимоблокировка.
Проблемы, связанные с взаимоблокировкой, подробно обсуждаются в главе 7.
Другой связанный вопрос:Бесконечная блокировка,Также известный какГолодание, То есть процесс ждет неопределенное время в семафоре.
Найди отличия
Я не думаю, что приведенный выше абзац необходим.ТрубкаЭта концепция, аналогичный аргумент был приведен в начале раздела, посвященного менеджменту, в книге, но такого рода ошибки действительно могут возникать, поэтому я сохранил этот абзац и упомянул его в разделе о семафорах.
Семафорное решение классических задач
Проблема производитель-потребитель
Эта проблема может иметь общую структуру решения. Производитель добавляет элементы буфера для потребителей, а потребители сокращают элементы буфера для производителей. Конкретный код реализации выглядит следующим образом:
Читатель-писатель проблема
Вот только решение первой проблемы читателя-писателя:
Подробную информацию см. В документе «Концепция операционной системы, седьмое издание-P179».
mutex с участием wrt Инициализируется 1, readcount При инициализации 0 его цель:
Блокировки чтения-записи наиболее полезны в следующих ситуациях:
Философская обеденная проблема
Примечание: это решение может привести к тупиковой ситуации, например, когда пять философов одновременно держат палочки для еды слева.
Есть много решений, которые не вызывают взаимоблокировки, например:
Философы также должны быть уверены, что они не умрут с голоду. Решение без тупика не обязательно гарантирует, что голод не будет.
Трубопровод***
МониторЭто базовая расширенная структура синхронизации, созданная для устранения некоторых ошибок, упомянутых в конце раздела семафоров, и может лучше решить проблему критического раздела.
Функция монитора аналогична операции семафора и PV и принадлежит к взаимоисключающему инструменту синхронизации процессов, но имеет отличные атрибуты от операции семафора и PV.
Работа PV: P означает пройден, V означает выпуск. То есть wait() с участием signal()
использовать
ВидыИнкапсулирует частные данные и общедоступные методы для управления данными, иТрубкаТип
В представление типа трубки входят:
Еще одно краткое описание структуры типа монитора выглядит следующим образом:
Простая структура монитора выглядит следующим образом:
Очередь ожидания у входа в тубус
Мониторы входят во взаимоисключающие, поэтому, когда процесс пытается войти в занятый монитор, он должен ждать у входа в монитор, поэтому у входа в монитор должна быть очередь ожидания процесса, называемая ожиданием входа. очередь.
Очередь ожидания ресурса и переменные условия
Структура относительно проста. Для обработки некоторых конкретных схем синхронизации необходимы некоторые дополнительные механизмы синхронизации. Они могут быть Структура условий предоставлять.
condition содержать wait() с участием signal() метод x.wait() Означает, что процесс, вызывающий операцию, зависнет, пока другой процесс не вызовет x.signal()
Нет вызова x.wait() В случае звонка x.signal() Никакого эффекта, это разница между условной структурой и семафором
Очередь экстренного ожидания
Допустим, есть приостановленный процесс Q С условными переменными x Связано, теперь при выполнении процесса P Называется x.signal() Когда процесс Q Будет разрешено повторно выполнить, затем концептуально Q с участием P Может продолжать выполняться в процессе управления, поскольку в любой момент в процессе управления может быть только один активный процесс. Поэтому с этим нужно бороться:
Компромиссное решение также предусматривает: signal() Операция должна быть последней исполняемой операцией в процессе (эта схема принята в языке Pascak)
Управленческие решения классических проблем
Философская обеденная проблема
Этот планНет тупикаРешение требует, чтобы философ брал палочки для еды только тогда, когда обе палочки доступны.
Конкретный код и пояснения следующие:
Эта схема гарантирует отсутствие тупика, но не гарантирует, что философы не умрут от голода.
Механизм синхронизации
Атомарная транзакция
Взаимное исключение критического участка обеспечивает критический участокАтомная казнь, То есть, если две критические секции выполняются одновременно, то это эквивалентно двум критическим секциям, выполняемым в определенном порядке.
Системная модель
Группа инструкций или операций, выполняющих одну логическую функцию, называетсяСделкаОсновная проблема при обработке (атомарных) транзакций заключается в обеспечении атомарности транзакций независимо от того, не выполняется ли компьютер.
С точки зрения пользователя транзакция представляет собой серию операций чтения и записи, и, наконец, commit или abort Конец
commit Указывает, что транзакция была успешно выполнена
abort Указывает, что транзакция должна прекратить выполнение из-за различных логических ошибок.
Обеспечение атомарности транзакций требует понимания свойств каждого носителя данных, включая относительную скорость, емкость и отказоустойчивость.
В этом разделе рассматривается только атомарность транзакций в энергозависимом хранилище.
Восстановление на основе журнала
Система поддерживает структуру данных, называемую журналом, на стабильном носителе, и каждый журнал записывает одну операцию, записанную транзакцией.
Каждая запись журнала имеет следующие поля:
Кроме того, некоторые специальные записи журнала используются для записи важных событий в обработке транзакции, таких как начало транзакции и фиксация или отказ от транзакции.
Перед началом казни Записывается в журнал, в каждом Ti Соответствующие операции должны быть записаны в журнал перед операцией записи и, наконец, после отправки. Записывается в журнал.
Необходимо убедиться, что никакие реальные операции обновления не могут быть выполнены до того, как хранилище журнала будет записано в стабильное хранилище.
Алгоритм восстановления состоит из двух шагов:
Все новые и старые значения можно найти в записях журнала.
Если дела Ti Не работает, затем используйте undo(Ti) Восстановить записи. Если система выйдет из строя, вы можете восстановить ее следующим образом:
обращать внимание undo(Ti) с участием redo(Ti) изИдемпотентность, То есть эффект однократного и многократного вызова транзакции Ti Это то же самое.
контрольно-пропускной пункт
Если время записи журнала очень велико, то каждая восстановленная операция извлечения или операция повтора после сбоя системы очень велика.Дополнительные накладные расходы
Чтобы снизить дополнительные расходы, введитеКонтрольно-пропускной пунктИдея, то есть, помимо обновления журнала каждый раз, система должна периодически выполнять контрольные точки и выполнять следующие операции:
Это позволяет системе упростить восстановление. После сбоя системы Все
Объект T Нет необходимости переделывать