RU2510977C2 - Обработка транзакций для действий с побочным эффектом в транзакционной памяти - Google Patents

Обработка транзакций для действий с побочным эффектом в транзакционной памяти Download PDF

Info

Publication number
RU2510977C2
RU2510977C2 RU2011115421/08A RU2011115421A RU2510977C2 RU 2510977 C2 RU2510977 C2 RU 2510977C2 RU 2011115421/08 A RU2011115421/08 A RU 2011115421/08A RU 2011115421 A RU2011115421 A RU 2011115421A RU 2510977 C2 RU2510977 C2 RU 2510977C2
Authority
RU
Russia
Prior art keywords
transaction
memory
action
resource
manager
Prior art date
Application number
RU2011115421/08A
Other languages
English (en)
Other versions
RU2011115421A (ru
Inventor
Дана ГРОФФ
Александр ДАДИОМОВ
Йосси ЛЕВАНОНИ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2011115421A publication Critical patent/RU2011115421A/ru
Application granted granted Critical
Publication of RU2510977C2 publication Critical patent/RU2510977C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)

Abstract

Изобретение относится к области многопроцессорных систем с совместно используемой памятью. Техническим результатом является повышение эффективности управления атомарной транзакцией, имеющей действие с побочным эффектом. Система обработки включает в себя транзакционную память, первый и второй диспетчеры ресурсов и диспетчер транзакции для параллельной программы, имеющей поток, включающий в себя атомарную транзакцию, имеющую действие с побочным эффектом. Первый диспетчер ресурса выполнен с возможностью быть внесенным в атомарную транзакцию и управлять ресурсом, относящимся к действию с побочным эффектом. Второй диспетчер ресурса выполнен с возможностью быть внесенным в атомарную транзакцию и управлять транзакционной памятью. Диспетчер транзакции связан с первым и вторым диспетчерами ресурсов, и диспетчер выполнен с возможностью принимать голоса от первого и второго диспетчеров ресурсов относительно фиксации транзакции. Действие с побочным эффектом отсрочивается до тех пор, пока транзакция не зафиксируется или пока не будет применена с компенсирующим действием для действия с побочным эффектом. 3 н. и 17 з.п. ф-лы, 3 ил.

Description

Уровень техники
Параллельное программирование для многопроцессорных систем с совместно используемой памятью может включать в себя возможность осуществления доступа множества потоков к одним и тем же данным. Множества потоков выполняются на множествах процессоров, множествах ядер процессоров или других классах параллелизма, которые присоединяются к памяти, совместно использующейся процессорами. Модель совместно используемой памяти является наиболее широко применяющимся способом многопоточной связи. Это позволяет многопоточным программам создаваться почти таким же образом, как в последовательном программировании, что является выгодным, потому что само параллельное программирование, как известно, считается сложным. Для того чтобы реализовать модель совместно используемой памяти, параллельное программирование применяет обслуживание для предотвращения параллельного доступа и использования данных, что может вызывать нежелательные ситуации, такие как гонки за данными и подобные.
Блокировки являются общеизвестным решением по предотвращению параллельного доступа к совместно использующимся данным. Значение блокировок опирается на предположении о том, что к переменным, к которым осуществляется доступ одним потоком, будет также осуществляться доступ другими потоками и, поэтому, переменные могут быть использованы только одним потоком за один раз. Блокировки позволяют одному потоку получить управление над одной переменной и предотвратить изменение переменной другими потоками, пока она не будет разблокирована. Несмотря на то что протоколы, основанные на блокировках, являются популярными, они часто признаются сложными для использования. Использование блокировок при крупнозернистом подходе защищает относительно большие объемы данных, но обычно их применение нельзя масштабировать. Потоки блокируют друг друга, даже если они не мешают друг другу, и блокировки становятся источником конфликтных ситуаций. В альтернативном варианте использование блокировок при более мелкозернистом подходе, несмотря на вопросы уменьшающего масштабирования, представляет другие проблемы по причине блокирующих соглашений по обеспечению корректности и избеганию взаимоблокировок, ставших сложными и склонными к ошибкам.
Другое решение состоит в реализации применений, использующих транзакционную память, такую как программная транзакционная память, которая предоставляет семантику в программной библиотеке периода выполнения и/или в среде периода выполнения и/или при использовании компилятора. Транзакционная память является механизмом управления взаимосовместимости для управления доступом к совместно использующейся памяти на основе предположения о том, что переменные используются одним потоком, и предполагается, что к ним не будет осуществляться доступ другими потоками, и, таким образом, переменная может быть совместно использована без жестких последствий для масштабируемости программы.
Одно значительное преимущество транзакционной памяти относительно крупнозернистых, основанных на блокировках, протоколов в увеличенной взаимосовместимости. В транзакционной памяти нет потоков, которые имеют потребность в ожидании доступа к данным, и различные потоки могут безопасно и одновременно изменять непересекающиеся части структур данных, которые обычно были бы защищены на основании одной и той же блокировки. Несмотря на накладные затраты на повторно выполняющиеся транзакции, которые неуспешно завершаются, в большинстве реальных параллельных программ конфликты возникают достаточно редко, так что существует огромный рост производительности для крупнозернистых, основанных на блокировках, протоколов даже на маленьком количестве процессоров или ядер процессоров.
Несмотря на это, при использовании транзакционной памяти могут возникнуть проблемы, если атомарный блок включает в себя действие с побочным эффектом. Вообще действие с побочным эффектом модифицирует какое-либо состояние, видимое за пределами текущего потока. Общеизвестные примеры действий с побочным эффектом включают в себя ввод/вывод, системные вызовы, действия с унаследованным кодом, действия ядра, управление устройствами, действия с другими доменами за пределами управляемой среды и т.д. Трудности возникают, если транзакцию прерывают или повторно выполняют, потому что действия с побочным эффектом являются повторно выполняемыми и могут повторно выполняться множество раз при повторяемых неуспешных завершениях. Неидемпотентные побочные эффекты представляют наиболее значительные трудности. Например, атомарный блок, включающий в себя действие увеличения переменной и действие с побочным эффектом по печати переменной, может повторно неуспешно завершаться и повторно выполняться по причине конфликта с другими потоками при обращении к памяти. Переменная печатается при каждом повторном выполнении, что является нежелательным, поскольку намерение состояло в том, чтобы распечатать переменную только один раз.
Предпринимались попытки урегулирования вопроса относительно действий с побочным эффектом, применяющихся в транзакционной памяти. Одно из популярных решений состоит в запрете использования таких действий с побочным эффектом, но многие исследователи в целом соглашаются, что ограничения к возможностям программирования и составному решению являются неприемлемыми для общего употребления. Другие предложенные решения откладывают действие, пока оно, вероятно, не должно быть зафиксировано, но многие исследователи предполагают, что переупорядочивание действий приводит к непредвиденным последствиям. Подобным образом, ассоциация компенсационного блока с действием уменьшает изоляцию и обеспечивает другие источники для ошибок. Другое предложенное решение состояло в том, чтобы не позволить транзакциям, имеющим действие с побочным эффектом, неуспешно завершаться, и разрешать все конфликты с оказанием содействия транзакции, имеющей действия с побочным эффектом. Конечно, в одно и то же время допускается не больше чем одна транзакция, имеющая действие с побочным эффектом. Еще одним решением является нарушение атомарности и изоляции транзакции. Все эти предложенные решения, так же как и другие накладывают ограничения различными способами и требуют значительных усилий от программиста. Исследователи в целом соглашаются с тем, что эта проблема остается неразрешенной.
Раскрытие изобретения
Это краткое изложение предоставлено для представления выбора концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Это краткое изложение не имеет намерения идентифицировать ключевые признаки или существенные признаки заявленного объекта изобретения, не имеет намерения быть использованным для ограничения объема заявленного объекта изобретения.
В одном из вариантов осуществления система обработки обрабатывает атомарную транзакцию, имеющую действие с побочным эффектом. Транзакция является частью потока в параллельной программе, имеющей множество потоков. Система включает в себя транзакционную память, первый и второй диспетчеры ресурсов и диспетчер транзакции. Первый диспетчер ресурса заносится в атомарную транзакцию и управляет ресурсом, соответствующим действию с побочным эффектом. Второй диспетчер ресурса заносится в атомарную транзакцию и управляет транзакционной памятью. Диспетчер транзакции связан с первым и вторым диспетчерами ресурсов и принимает голоса от первого и второго диспетчера ресурса относительно фиксации транзакции. Действие с побочным эффектом отсрочивается до тех пор, пока транзакция не зафиксируется или пока не будет применена с компенсирующим действием к действию с побочным эффектом.
Краткое описание чертежей
Прилагаемые чертежи включены, чтобы обеспечить дополнительное понимание вариантов осуществления, а также сгруппированы и составляют часть этого описания изобретения. Чертежи иллюстрируют варианты осуществления и вместе с описанием служат для разъяснения принципов вариантов осуществления. Другие варианты осуществления и многие предназначенные преимущества вариантов осуществления будут без труда приниматься во внимание, поскольку они станут более понятны путем ссылки к следующему детальному описанию. Элементы чертежей необязательно масштабированы относительно друг друга. Одинаковые ссылочные позиции обозначают соответствующие подобные части.
Фиг.1 - блок-схема, иллюстрирующая один из многих возможных примеров вычислительных устройств, реализующих признаки настоящего изобретения.
Фиг.2 - блок-схема, иллюстрирующая пример системы обработки транзакций в примерной вычислительной системе фиг.1.
Фиг.3 - блок-схема последовательности операций способа, иллюстрирующая примерную последовательность операций, использованную в системе обработки транзакций фиг.2.
Подробное описание
В следующем подробном описании приводится ссылка на прилагаемые чертежи, которые образуют его часть и в которых в качестве иллюстрации показаны отдельные варианты осуществления, которыми изобретение может быть применено на практике. Должно быть понятно, что могут быть использованы другие варианты осуществления, а структурные и логические изменения могут быть сделаны, не выходя из объема настоящего изобретения. Следующее подробное описание, следовательно, не должно восприниматься в ограничительном смысле, и объем настоящего изобретения определен прилагаемой формулой изобретения. Также должно быть понятно, что признаки различных примерных вариантов осуществления, описанные в материалах настоящей заявки, могут быть объединены друг с другом, если только специально не отмечено иным способом.
Фиг. 1 иллюстрирует примерную вычислительную систему, которая может быть применена в качестве операционной среды и которая включает в себя вычислительное устройство, такое как вычислительное устройство 100. В базовой конфигурации вычислительное устройство 100 типично включает в себя процессорную архитектуру, имеющую, по меньшей мере, два устройства обработки (т.е. процессора 102) и память 104. В зависимости от точной конфигурации и типа вычислительного устройства, память 104 может быть энергозависимой (такой как оперативное запоминающее устройство (ОЗУ, RAM)), энергонезависимой (такой как постоянное запоминающее устройство (ПЗУ, ROM), флэш-память и т.д.) или некоторым объединением обоих. Эта базовая конфигурация проиллюстрирована на фиг. 1 позицией 106. Вычислительное устройство может принимать одну или более различных форм. Такие формы включают в себя персональный компьютер, сервер, карманное устройство, абонентское электронное устройство (такое как игровая видео приставка) и другие.
Вычислительное устройство 100 также может иметь дополнительные признаки/функциональность. Например, вычислительное устройство 100 может также включать в себя дополнительное запоминающее устройство (съемное и/или несъемное), включающее в себя, но не в качестве ограничения, магнитные или оптические диски, или твердотельную память, или запоминающие флэш-устройства, такие как съемное запоминающее устройство 108 и несъемное запоминающее устройство 110. Компьютерный запоминающий носитель включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель, реализованный по любому подходящему способу или технологии хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Память 104, съемное запоминающее устройство 108 и несъемное запоминающее устройство 110 являются примерами компьютерного запоминающего носителя. Компьютерные запоминающие носители включают в себя, но не в качестве ограничения, ОЗУ (RAM), ПЗУ (ROM), ЭСППЗУ (EEPROM), флэш-память или другую технологию памяти, CD-ROM, цифровой многофункциональный диск (DVD) или другие оптические дисковые запоминающие устройства, магнитные кассеты, магнитную ленту, магнитные запоминающие диски или другие магнитные запоминающие устройства, флэш-диск универсальной последовательной шины (USB), карту флэш-памяти или любые другие запоминающие флэш-устройства, или любой другой запоминающий носитель, который может быть использован для хранения требуемой информации и к которому может быть осуществлен доступ вычислительным устройством 100. Любой такой компьютерный запоминающий носитель может быть частью вычислительного устройства 100.
Вычислительное устройство 100 включает в себя одно или более соединения 114 связи, которые позволяют вычислительному устройству поддерживать связь с другими компьютерами/приложениями/пользователями 115. Вычислительное устройство 100 также может включать в себя устройство(а) 112 ввода, такое как клавиатура, координатно-указательное устройство (например, мышь), перо, устройство голосового ввода, устройство сенсорного ввода и т.д. Вычислительное устройство 100 также может включать в себя устройство(а) 111 вывода, такое как дисплей, динамики, принтер и т.д.
Вычислительная система 100 может быть выполнена с возможностью запуска программы из программного обеспечения операционной системы и одного или более программных приложений, которые образуют системную платформу. В одном из примеров вычислительная система 100 включает в себя компонент программного обеспечения, называемый управляемой средой. Управляемая среда может быть включенной в часть операционной системы или может быть включена позже в качестве загрузки программного обеспечения. Управляемая среда типично включает в себя предварительно закодированные решения для общеизвестных задач программирования для того, чтобы оказывать содействие разработчикам в создании программ программного обеспечения, как например приложений, которые запускаются в управляемой среде, а также типично включает в себя виртуальную машину, которая позволяет программным приложениям запускаться в управляемой среде с тем, чтобы программисты не имели необходимости принимать во внимание возможности отдельно взятых процессоров 102.
Фиг. 2 иллюстрирует пример системы 200 обработки транзакций, которая может быть вызвана в управляемой среде для поддержки транзакции 202 атомарной блокировки с действием 204 транзакционной памяти и действием 206 с побочным эффектом. Система 200 включает в себя, по меньшей мере, два диспетчера ресурсов, как например диспетчер 208 ресурса памяти и диспетчер 210 ресурса побочного эффекта, занесенные в транзакцию 202 и соответствующие действиям 204 и 206 соответственно. Диспетчеры 208, 210 ресурсов каждый управляют предназначенными для действий ресурсами 212, 214, которые принимают участие в транзакции 202. Действия диспетчеров 208, 210 ресурсов скоординированы с диспетчером 216 транзакций, который работает с диспетчерами 208, 210 ресурсов, чтобы гарантировать атомарность и изоляцию транзакции 202. Диспетчер 216 транзакций реализовывает протокол 218 фиксации. Диспетчеры 208, 210 ресурсов также принимают участие в протоколе 218 фиксации.
Транзакция 202 является последовательностью связанных действий, выполняемых одним потоком. Пример связанных действий включает в себя атомарные действия. Поток завершает модификации данных в совместно использующейся памяти, не учитывая других потоков, параллельно запускающихся на других процессорах. После завершения транзакции, транзакционная память проверяет, не сделали ли другие потоки параллельно изменений в данных, к которым осуществлялся доступ. Происходит проверка на изменения, и если проверка является успешной, делается безвозвратная операция фиксации. Если проверка завершается неуспешно, тогда изменения отменяются или "откатываются", и транзакция 202 повторно выполняется, пока проверка не станет успешной.
Транзакция обладает признаками атомарности и изоляции. Транзакция является атомарной и логически выполняется мгновенно. Если одно действие завершается неуспешно, тогда вся транзакция завершается неуспешно. Также транзакция изолируется от других потоков в отношении того, что никакие переменные не подвергаются воздействию других потоков в их промежуточных состояниях. Если достигается конец блока, транзакция фиксируется, прерывается или откатывается и повторно выполняется. Соответственно, единица, которая фиксирует или завершается неуспешно, является транзакцией, а не целым процессом, и состояние возвращается к его первоначальной форме, а не показывает промежуточные величины.
Диспетчер ресурсов существует в традиционной обработке транзакций и управляет ресурсами в традиционных транзакциях. Но традиционная обработка транзакций до сих пор не была использована для того, чтобы автоматически устранять параллельный доступ к памяти, что обычно часто вызывало блокировки. Признак настоящего примера в том, что управление транзакционной памятью является частью транзакции в отличие от традиционных транзакций, которые не управляют доступом к совместно использующейся памяти. Как обсуждено выше, предложения транзакционной памяти обычно обеспечивают функциональность восстановления при помощи вручную созданных решений для ограниченного набора ошибочных ситуаций, с которыми разработчики знают, как обращаться, и как результат, страдает производительность и качество результатов. Примеры настоящего изобретения, однако, включают транзакционную память в часть основного направления обработки транзакций. Управляемая среда может предоставлять или включать в себя заранее запрограммированные подходящие диспетчеры ресурсов для ожидаемых действий также в среде транзакционной памяти. Заранее запрограммированные диспетчеры ресурсов могут быть включены в библиотеку, которая может быть вызвана в управляемой среде, когда ресурс должен быть использован.
Во многих случаях, когда подходящий диспетчер ресурса не существует в заранее запрограммированной библиотеке диспетчеров ресурсов для среды управляемой транзакционной памяти, программный разработчик может написать диспетчер ресурса для использования в программе или добавить его в библиотеку.
В одном из примеров, диспетчеры 208, 210 ресурсов реализованы как диспетчеры недолгосрочных ресурсов, а не диспетчеры долгосрочных ресурсов. Диспетчеры недолгосрочных ресурсов хранят их состояние в энергозависимой памяти и не поддерживают восстановление транзакционного состояния. В случае системы 200 обработки транзакций диспетчеры недолгосрочных ресурсов используют меньше системных ресурсов, чем диспетчеры долгосрочных ресурсов. Примером диспетчера 216 транзакций, который качественно работает с множеством диспетчеров недолгосрочных ресурсов, является доступный диспетчер облегченных транзакций, который может значительно уменьшить накладные расходы, обусловленные диспетчерами более долгосрочных транзакций. Другие примеры могут включать в себя диспетчеры долгосрочных транзакций или диспетчеры ресурсов.
Диспетчеры 208, 210 ресурсов автоматически заносятся в транзакцию 202 и фиксируют или откатывают изменения, сделанные для их состояния согласно результату транзакции. Управляемая среда может автоматизировать занесение в транзакцию и управление транзакцией по отношению к транзакционным ресурсам 212, 214. При занесении ресурса 212, 214 в транзакцию 202, транзакция информирует ресурс о том, что действие 204, 206 хочет выполнить транзакционную работу по отношению к ресурсу. Затем действие 204, 206 выполняет работу по отношению к ресурсу 212, 214, и если не происходит никакой ошибки, диспетчер 216 транзакции применяет протокол 218 фиксации для того, чтобы спросить ресурс 212, 214 через диспетчер 208, 210 ресурса о фиксации изменений, сделанных к его состоянию. Если один из диспетчеров 208, 210 ресурсов столкнется с ошибкой, диспетчер 216 транзакции вызовет откат всех изменений, сделанных в транзакции. В другом случае диспетчер 216 транзакции осуществит фиксацию транзакции. В каждом из двух случаев диспетчер 216 транзакции может информировать диспетчеры 208, 210 ресурсов о решении.
В одном из примеров диспетчер 208 ресурса памяти действует как диспетчер транзакций перед тем, как другой диспетчер ресурса будет занесен в транзакцию 202. Как только другой диспетчер ресурса будет занесен, такой как диспетчер 210 ресурса действия с побочным эффектом, система 200 обработки транзакций содействует транзакции 202 для применения диспетчера 216 транзакции, и ресурс 208 памяти становится диспетчером ресурса.
В примерной транзакции 202, включающей в себя действие с побочным эффектом в транзакционной памяти, по меньшей мере, два диспетчера 208, 210 ресурсов занесены в транзакцию. Действие 206 с побочным эффектом является хорошим примером действия, которое работает по отношению к ресурсу 214. Действие 204 транзакционной памяти также реализует диспетчер ресурса для управления изменений памяти. Если транзакция включает в себя другие действия с побочным эффектом, могут быть применены дополнительные диспетчеры ресурсов.
Диспетчер 210 ресурса отсрочивает действие с побочным эффектом до тех пор, пока диспетчер 216 транзакции не подтвердит, что все внесенные диспетчеры ресурсов решили зафиксировать транзакцию. Соответственно, действие с побочным эффектом повторно не выполняется или повторно выполняется в случае конфликтов с другими параллельно существующими потоками при обращении к памяти, которые могли бы стандартно вызывать откат транзакции, если бы это было сделано перед фазой проверки. Разработчик может реализовать отсрочку действия с побочным эффектом подходящим способом. В примере действия с побочным эффектом печати, описанным выше, диспетчер ресурса отсрочивает печать, пока транзакционная память устанавливает то, что транзакция не включает конфликты с другими потоками при обращении к памяти. Перед тем как диспетчер 216 транзакции вызовет протокол 218 фиксации, диспетчер ресурса для операции печати может записать строку в память. После того, как диспетчер 216 транзакции уведомил диспетчера ресурса о фиксации, диспетчер ресурса осуществит доступ к строке в памяти и распечатает ее. Существуют и другие подобные примеры для разработчика, реализующего отсрочку действия с побочным эффектом, способом, который является подходящим для данной ситуации, и примерным типом действия с побочным эффектом.
Для разработчика может быть предложена подходящая синтаксическая структура, чтобы сделать выражение задержанных действий диспетчера 210 ресурса проще. Например, подключенное задержанное действие может включать в себя подобную синтаксическую структуру:
Atomic {
<некоторые действия, составляющие транзакцию>
AfterCommit (<задержанное действие>);
//параметр удерживает окончание задержанного действия
<некоторые действия, составляющие транзакцию>
}
Реализация "AfterCommit" может представлять диспетчер 210 ресурса, который выполняет задержанное действие, если или когда диспетчер 216 транзакции уведомил диспетчер 210 ресурса о фиксации. В одном из вариантов осуществления для выгоды разработчика эта функциональность диспетчера 210 ресурса реализуется один раз системой через транзакцию. В этом варианте осуществления, разработчик устанавливает задержанное действие, включенное через примитив "AfterCommit".
Вместо того чтобы задерживать действие с побочным эффектом, разработчик может предпочесть его компенсацию. Если действие с побочным эффектом не отсрочивается (например, приложение генерирует некоторое назначение для того, чтобы продолжить транзакцию), приложение может выполняться, имея действие с побочным эффектом внутри транзакции, но регистрирует компенсирующее действие, которое будет вызвано при откате. Если транзакция повторно выполняется множество раз из-за повторяющихся конфликтов при обращении к памяти, компенсирующее действие регистрируется вместе с выполнением каждой операции с побочным эффектом. Соответственно каждый откат может вызывать заданное компенсирующее действие. Если компенсирующее действие является выбором, побочные действия будут видимы за пределами транзакции во время каждого повторного выполнения, но, в конечном счете, будут восполнены при откате. В одном из примеров на основании удачного повторного выполнения, компенсирующего действия не будет существовать. Концепция, допускающая неизолированные действия побочного эффекта внутри транзакции, называется "открыто-вложенными транзакциями". Разработчики свободны в решении, является ли открытое вложение подходящим в заданной ситуации. Компенсирующее действие также может быть реализовано как диспетчер 210 ресурса подобно случаю с задержанным действием. В одном из вариантов осуществления такая реализация предоставлена для надлежащей надежности активизации компенсирующего действия, где система не завершается неуспешно при вызове компенсирующего действия после того, как она выполняет определенное действие с побочным эффектом в транзакции.
Как и с задержанными действиями, разработчику может быть предложена удобная синтаксическая структура, делающая простым выражение компенсирующих действий. Например, подключаемое открыто-вложенное действие с компенсацией может включать в себя подобную синтаксическую структуру:
Atomic {
<некоторые действия, составляющие транзакцию> DoWithCompensation (
<неизолированное действие с побочным эффектом>
//завершение действия с побочным эффектом
<при откате вызывается компенсирующее действие>
//завершение действия с побочным эффектом
);
<некоторые дополнительные действия, составляющие продолжение транзакции>
}
Настоящее изобретение предполагает генерировать задержанные и компенсирующие действия из диспетчера ресурса, который может быть запрограммирован для сохранения подходящих степеней изоляции и надежности.
Фиг. 3 иллюстрирует пример транзакционной последовательности операций, указанной 300, для использования действий с побочным эффектом в транзакционной памяти на этапе 302. Действия в транзакции вызывают ресурсы и информируют их, что действие испытывает необходимость выполнить с ними работу. Последовательность операций автоматически вносит подходящие диспетчеры ресурсов для работы с ресурсом на этапе 304. В случае, когда транзакция вовлекает действие с побочным эффектом, операция побочного эффекта производится через соответствующим образом внесенный диспетчер ресурса. Изменения памяти также управляются диспетчером 210 ресурса, реализованным для транзакционной памяти. Затем на этапе 306 к ресурсам могут быть применены действия.
В или близко к концу транзакции, диспетчер 216 транзакции вызывает протокол 218 фиксации для определения, должен ли быть откат для транзакции, в случае конфликтов при обращении к памяти с другими потоками, либо на этапе 308 изменения фиксируются. Протокол 218 фиксации в одном из примеров является двухфазным протоколом фиксации, включающим в себя фазу подготовки и фазу фиксации. При приеме запроса на фиксацию от приложения, диспетчер 216 транзакции начинает фазу подготовки на этапе 310 всех внесенных участников вызовом способа на каждом внесенном диспетчере 208, 210 ресурса для того, чтобы получить соответствующий голос по транзакции. Каждый из диспетчеров 208, 210 ресурсов будет голосовать либо за фиксацию, либо за откат, вызовом способа подготовки или способа отката, соответственно. Например, диспетчер 208 ресурса действий памяти может голосовать фиксацию, если не существует конфликтов при обращении к памяти. На второй фазе протокола 218 фиксации диспетчер транзакции соответствующим образом отвечает в зависимости от того, получил ли он все готовности от диспетчеров ресурсов, или если он получил, по меньшей мере, один откат. Если диспетчер транзакции принимает голоса фиксации от всех диспетчеров ресурсов на этапе 312, которые все вызвали способ подготовки, диспетчер 216 транзакции применяет способ фиксации для каждого диспетчера 314 ресурсов. Затем диспетчеры ресурсов могут сделать устойчивые изменения и завершить фиксацию или применить отложенные действия (если существуют) и затем перейти к этапу 316 после высвобождения транзакции 202. После транзакции 202 продолжается выполнение приложения. Если любой из диспетчеров ресурсов проголосовал за отказ от фиксации на подготовительной фазе на этапе 312, последовательность операций действует на основании неуспешного завершения, как следует ниже.
Неуспешные завершения, вызванные конфликтами при обращении к памяти, идентифицированные диспетчером 208 ресурса памяти, являются отличными от неуспешных завершений, идентифицированных другими диспетчерами ресурсов, не являющимися диспетчерами ресурсов памяти, внесенными в транзакцию. Например, неуспешные завершения, вызванные конфликтами при обращении к памяти, вызывают автоматическое повторное выполнение транзакции на этапе 318. Вообще приложение, включающее в себя транзакцию 202, не обращает внимание на повторные выполнения, когда они, в конце концов, успешно завершаются. Неуспешные завершения, идентифицированные другими диспетчерами ресурсов, такими как диспетчер 210 ресурса, становятся причиной прерывания транзакции и повторного выполнения. Соответственно, если диспетчер, не являющийся диспетчером ресурса памяти, голосует против фиксации транзакции на этапе 318, транзакция неуспешно завершается на этапе 320. Если диспетчер 208 ресурса памяти голосует против фиксации транзакции на этапе 318, все диспетчеры ресурсов вызывают откат на этапе 322. В этом случае любые компенсирующие действия выполняются на этапе 322. Если каждый диспетчер ресурса голосует за фиксацию транзакции, транзакция фиксируется на этапе 314, и выполняются любые отложенные действия.
Хотя в материалах настоящей заявки были проиллюстрированы и описаны отдельные варианты осуществления, специалистам в данной области техники должно быть принято во внимание, что варианты осуществления, показанные и описанные не выходя из объема настоящего изобретения, могут быть заменены множеством альтернативных и эквивалентных реализаций. Эта заявка не подразумевает покрытие любых адаптаций и вариантов отдельных вариантов осуществления, обсужденных в материалах настоящей заявки. Следовательно, подразумевается, что это изобретение будет ограничено только формулой изобретения и ее эквивалентами.

Claims (20)

1. Машиночитаемый носитель, хранящий машинно-исполняемые инструкции для управления вычислительной системой, включающей в себя операцию по обработке параллельной программы, включающей в себя множество потоков, в которой, по меньшей мере, один из множества потоков включает в себя атомарную транзакцию 202, имеющую действие 206 с побочным эффектом, машинно-исполняемые инструкции, содержащие:
транзакционную память 212, выполненную с возможностью управлять доступом множества потоков к совместно-используемой памяти 104;
первый диспетчер 210 ресурса, выполненный с возможностью быть внесенным в атомарную транзакцию 202 и управлять ресурсом, относящимся к действию 206 с побочным эффектом;
второй диспетчер 208 ресурса, выполненный с возможностью быть внесенным в атомарную транзакцию и управлять транзакционной памятью 212; и
диспетчер 216 транзакции, связанный с первым и вторым диспетчерами 208, 210 ресурсов, в котором диспетчер 216 транзакции выполнен с возможностью принимать голос от первого и второго диспетчеров 208, 210 ресурсов относительно фиксации транзакции, и в котором действие 206 с побочным эффектом является, по меньшей мере, одним из отсроченных до тех пор, пока транзакция не зафиксирована и применена совместно с компенсирующим действием для действия с побочным эффектом.
2. Машиночитаемый носитель по п.1, в котором первый и второй диспетчеры ресурсов являются диспетчерами энергозависимых ресурсов.
3. Машиночитаемый носитель по п.2, в котором диспетчер транзакции является диспетчером облегченной транзакции.
4. Машиночитаемый носитель по п.1, в котором первый и второй диспетчеры ресурсов включены в состав библиотеки, имеющей множество выборочно доступных диспетчеров ресурсов, для того, чтобы быть внесенными в атомарные транзакции, имеющие действия с побочными эффектами.
5. Машиночитаемый носитель по п.4, в котором, по меньшей мере, один из диспетчеров ресурсов во множестве диспетчеров ресурсов заранее программируется в управляемой среде.
6. Машиночитаемый носитель по п.1, в котором диспетчер транзакции выполнен с возможностью принимать протокол фиксации для определения фиксировать ли транзакцию.
7. Машиночитаемый носитель по п.1, в котором протокол фиксации является двухфазовым протоколом фиксации, включающим в себя фазу подготовки и фазу фиксации.
8. Машиночитаемый носитель по п.1, в котором действие с побочным эффектом выбирается из группы, включающей в себя действия ввода или вывода, системные вызовы, действия с унаследованным кодом, действия ядра, управление устройствами, действия с другими доменами за пределами управляемой среды.
9. Машиночитаемый носитель по п.8, в котором действие с побочным эффектом является действием по печати.
10. Способ управления атомарной транзакцией, имеющей действие с побочным эффектом, способ, содержащий этапы, на которых:
вносят 304, по меньшей мере, один диспетчер 210, не являющийся диспетчером памяти;
вносят 304 диспетчер 208 ресурса памяти, выполненный с возможностью управлять транзакционной памятью 212;
вызывают протокол 308 фиксации, выполненный с возможностью определять, отдали ли диспетчеры, являющиеся и не являющиеся диспетчерами ресурсов памяти, голоса за фиксацию транзакции;
фиксируют 314 транзакцию, если диспетчеры, являющиеся и не являющиеся диспетчерами ресурсов памяти, голосуют за фиксацию транзакции и применяют действие с побочным эффектом, после того как транзакция фиксируется;
повторно выполняют 312 транзакцию, если диспетчер 208 ресурса памяти не голосует за фиксацию транзакции, но диспетчеры 210, не являющиеся диспетчерами ресурсов памяти, голосуют за фиксацию транзакции, при этом действие 206 с побочным эффектом является, по меньшей мере, одним из не примененных, если транзакция повторно выполняется и применяется совместно с компенсирующим действием при повторном выполнении транзакции;
прерывают 318 транзакцию, если, по меньшей мере, один из диспетчеров 210, не являющихся диспетчером ресурса памяти, не голосует за фиксацию транзакции, при этом действие 206 с побочным эффектом не применяется, если транзакция прерывается.
11. Способ по п.10, в котором атомарная транзакция включает в себя первоначальное состояние, и при этом повторное выполнение транзакции включает в себя откат к первоначальному состоянию.
12. Способ по п.11, в котором повторное исполнение транзакции включает в себя повторное исполнение транзакции, пока диспетчеры, являющиеся и не являющиеся диспетчерами ресурсов памяти, не проголосуют за фиксацию транзакции, или транзакция прерывается.
13. Способ по п.11, в котором делаются изменения к первоначальному состоянию, устанавливающиеся на основании фиксации транзакции.
14. Способ по п.10, в котором повторное выполнение транзакции включает в себя применение бессрочного компенсирующего действия для действия с побочным эффектом.
15. Способ по п.10, в котором фиксация транзакции включает в себя применение отложенного действия.
16. Способ по п.10, в котором определение, голосуют ли первый и второй диспетчеры ресурсов за фиксацию транзакции, включает в себя вызов способа для каждого внесенного диспетчера ресурса для получения соответствующего голоса для транзакции.
17. Способ по п.10, в котором диспетчер ресурса памяти голосует за фиксацию, если не существует конфликтов при обращении к памяти.
18. Управляемая среда, работающая на вычислительном устройстве и выполненная с возможностью управлять приложением, имеющим атомарную транзакцию 202, включающую в себя действие 206 с побочным эффектом, управляемая среда, включающая в себя:
транзакционную память 212;
библиотеку диспетчеров ресурсов, в которой, по меньшей мере, два диспетчера 208, 210 ресурсов выполнены с возможностью быть внесенными приложением и загруженными в энергозависимую память 104 на вычислительное устройство, в которой один из диспетчеров ресурсов является диспетчером 210 ресурса с побочным эффектом, выполненным с возможностью вносить в управление ресурс 214, относящийся к действию с побочным эффектом, а другой из диспетчеров ресурсов является диспетчером 208 ресурса памяти, выполненным с возможностью быть внесенным в управление транзакционной памятью 212; и
диспетчер 216 транзакции, загруженный в энергозависимую память 104 и связанный с внесенными диспетчерами 208, 210 ресурсов, при этом диспетчер транзакции выполнен с возможностью принимать голос от внесенных диспетчеров ресурсов относительно фиксации транзакции, в котором диспетчер 208 ресурса памяти голосует в зависимости от того, произошел ли 312 конфликт при обращении к памяти во время транзакции.
19. Управляемая среда по п.18, в которой вычислительное устройство включает в себя множество процессоров, и в котором атомарная транзакция включена в поток приложения, имеющего множество параллельных потоков.
20. Управляемая среда по п.19, в которой транзакционная память управляет доступом к совместно используемым данным на вычислительном устройстве.
RU2011115421/08A 2008-10-20 2009-10-16 Обработка транзакций для действий с побочным эффектом в транзакционной памяти RU2510977C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/254,745 US8001548B2 (en) 2008-10-20 2008-10-20 Transaction processing for side-effecting actions in transactional memory
US12/254,745 2008-10-20
PCT/US2009/060960 WO2010048043A2 (en) 2008-10-20 2009-10-16 Transaction processing for side-effecting actions in transactional memory

Publications (2)

Publication Number Publication Date
RU2011115421A RU2011115421A (ru) 2012-10-27
RU2510977C2 true RU2510977C2 (ru) 2014-04-10

Family

ID=42109643

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2011115421/08A RU2510977C2 (ru) 2008-10-20 2009-10-16 Обработка транзакций для действий с побочным эффектом в транзакционной памяти

Country Status (8)

Country Link
US (1) US8001548B2 (ru)
EP (1) EP2350831A4 (ru)
KR (1) KR101669298B1 (ru)
CN (1) CN102187321B (ru)
BR (1) BRPI0918439A2 (ru)
CA (1) CA2736095C (ru)
RU (1) RU2510977C2 (ru)
WO (1) WO2010048043A2 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2625524C2 (ru) * 2013-12-27 2017-07-14 Интел Корпорейшн Процессор, выполненный с возможностью транзакций, и схема регистрации для отчета об операциях транзакций

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166481B2 (en) * 2008-10-20 2012-04-24 Microsoft Corporation Transaction processing in transactional memory
US9417906B2 (en) * 2010-04-01 2016-08-16 Red Hat, Inc. Transaction participant registration with caveats
CN102521023B (zh) * 2011-11-21 2015-03-11 华为软件技术有限公司 一种多系统的事务集成处理方法及系统
US9201919B2 (en) * 2013-05-07 2015-12-01 Red Hat, Inc. Bandwidth optimized two-phase commit protocol for distributed transactions
US9858312B2 (en) 2014-10-14 2018-01-02 Red Hat, Inc. Transaction compensation for single phase resources
WO2016169048A1 (en) * 2015-04-24 2016-10-27 Hewlett Packard Enterprise Development Lp Transaction management and committing
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
WO2017012667A1 (en) * 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US11537437B2 (en) * 2020-05-20 2022-12-27 Sap Se Executing and re-executing a list of component handlers defined for a resource in response to detecting a creation, deletion, or modification of the resource
CN112612551A (zh) * 2020-12-31 2021-04-06 中国农业银行股份有限公司 一种分布式事务的管理方法、装置、设备、介质及产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546443B1 (en) * 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
RU2297662C2 (ru) * 2002-11-29 2007-04-20 Интернэшнл Бизнес Машинз Корпорейшн Высокоскоростное управление блокировками для мгновенного копирования в системах хранения данных с совместным использованием памяти n узлами

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2256514B (en) * 1991-05-21 1994-11-16 Digital Equipment Corp Commitment ordering for guaranteeing serializability across distributed transactions
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US6094688A (en) * 1997-01-08 2000-07-25 Crossworlds Software, Inc. Modular application collaboration including filtering at the source and proxy execution of compensating transactions to conserve server resources
US6233585B1 (en) * 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US6529932B1 (en) 1998-04-01 2003-03-04 Microsoft Corporation Method and system for distributed transaction processing with asynchronous message delivery
JP2000010810A (ja) * 1998-06-22 2000-01-14 Toshiba Corp トランザクション処理のコミット制御方法および同方法が適用される計算機システム
US6728958B1 (en) * 1998-07-31 2004-04-27 Hewlett-Packard Development Company, L.P. Volatile resource manager with pre-prepare notification
US6463456B1 (en) * 1999-09-01 2002-10-08 International Business Machines Corporation Efficient registration for distributed transaction systems
US7080119B2 (en) * 2001-07-17 2006-07-18 Bea Systems, Inc. System and method for transaction processing with delegated commit feature
US7395274B2 (en) * 2002-07-16 2008-07-01 Sun Microsystems, Inc. Space- and time-adaptive nonblocking algorithms
JP2005538460A (ja) * 2002-09-12 2005-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理システム及び方法(非同種プロセスを統合するように適合されたデータ処理システム)
US6938130B2 (en) * 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
CN100561920C (zh) * 2004-12-27 2009-11-18 北京航空航天大学 Web服务事务处理系统及处理方法
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8065499B2 (en) * 2006-02-22 2011-11-22 Oracle America, Inc. Methods and apparatus to implement parallel transactions
US7620850B2 (en) * 2006-06-09 2009-11-17 Sun Microsystems, Inc. Breakpoints in a transactional memory-based representation of code
US8010550B2 (en) * 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7949841B2 (en) * 2006-12-08 2011-05-24 Microsoft Corporation Protection of critical memory using replication
US8108631B2 (en) * 2008-07-18 2012-01-31 Oracle America, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
US20100083268A1 (en) * 2008-09-29 2010-04-01 Morris Robert P Method And System For Managing Access To A Resource By A Process Processing A Media Stream

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546443B1 (en) * 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
RU2297662C2 (ru) * 2002-11-29 2007-04-20 Интернэшнл Бизнес Машинз Корпорейшн Высокоскоростное управление блокировками для мгновенного копирования в системах хранения данных с совместным использованием памяти n узлами

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2625524C2 (ru) * 2013-12-27 2017-07-14 Интел Корпорейшн Процессор, выполненный с возможностью транзакций, и схема регистрации для отчета об операциях транзакций

Also Published As

Publication number Publication date
CN102187321A (zh) 2011-09-14
EP2350831A2 (en) 2011-08-03
US8001548B2 (en) 2011-08-16
BRPI0918439A2 (pt) 2015-11-24
KR20110085994A (ko) 2011-07-27
EP2350831A4 (en) 2015-07-08
CN102187321B (zh) 2013-01-16
WO2010048043A3 (en) 2010-06-10
US20100100885A1 (en) 2010-04-22
KR101669298B1 (ko) 2016-10-25
CA2736095C (en) 2016-11-29
CA2736095A1 (en) 2010-04-29
WO2010048043A2 (en) 2010-04-29
RU2011115421A (ru) 2012-10-27

Similar Documents

Publication Publication Date Title
RU2510977C2 (ru) Обработка транзакций для действий с побочным эффектом в транзакционной памяти
JP5501377B2 (ja) トランザクションメモリにおけるトランザクション処理
US7516365B2 (en) System and method for split hardware transactions
US7966459B2 (en) System and method for supporting phased transactional memory modes
US7793052B2 (en) System and method for implementing hybrid single-compare-single-store operations
US10268579B2 (en) Hybrid hardware and software implementation of transactional memory access
US7921407B2 (en) System and method for supporting multiple alternative methods for executing transactions
Leino et al. Verification of concurrent programs with Chalice
KR100898315B1 (ko) 인핸스드 런타임 호스팅
JP2520543B2 (ja) プログラムの実行を管理する方法及びシステム
US8140497B2 (en) System and method for implementing nonblocking zero-indirection transactional memory
US8060879B2 (en) Predictive log synchronization
US20090282386A1 (en) System and Method for Utilizing Available Best Effort Hardware Mechanisms for Supporting Transactional Memory
JP2010524133A (ja) バッファリングされた書込みおよび強制的直列化順序を使用するトランザクショナルメモリ
JP4620871B2 (ja) マルチスレッドコンピュータシステムにおけるモニタ変換
Monod et al. Looking ahead in open multithreaded transactions
Vaucouleur et al. Atomic features
Tabassum et al. Transactional Memory: A Review

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20191017