Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Demkin_otvety_New.doc
Скачиваний:
13
Добавлен:
17.04.2019
Размер:
3.22 Mб
Скачать
  1. Что такое оптимистическое и пессимистическое блокирование? в каких случаях какое предпочтительнее? Какие еще виды блокирования вы знаете?

In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.

The main categories of concurrency control mechanisms are:

• Оптимистичный - Задержка проверка того, встречает ли сделка изоляцию и другие правила целостности (например, serializability и восстанавливаемость) до ее конца, не блокируя ни одного из ее (прочитанный, напишите), операции ("... и быть оптимистичным о правилах, встречаемых... "), и затем прервите сделку, чтобы предотвратить нарушение, если желаемые правила состоят в том, чтобы быть нарушены на передавать. Прерванная сделка была немедленно перезапущена и повторно выполнена, который подвергается очевидному верхнему (против выполнения ее до конца только однажды). Если не слишком много сделок прерваны, то быть оптимистичным обычно является хорошей стратегией.

• Пессимистичный - Блок операция сделки, если это может вызвать нарушение правил до возможности нарушения, исчезает. Блокирование операций типично связано с исполнительным сокращением.

• Полуоптимистичный - операции по Блоку в некоторых ситуациях, если они могут вызвать нарушение некоторых правил, и не блокировать в других ситуациях, задерживая правила, проверяющие (если нужно) к концу сделки, как покончено оптимистичному.

Различные категории обеспечивают различную работу, то есть, различные средние операционные показатели завершения (пропускная способность), в зависимости от операционного соединения типов, вычислительного уровня параллелизма, и других факторов. Если выбор и знание об обменах доступны, то категория и метод должны быть выбраны, чтобы обеспечить самую высокую работу.

Взаимное блокирование между двумя сделками (где каждый блокирует другой) или больше результатов в тупике, где вовлеченные сделки остановлены и не могут достигнуть завершения. Большинство неоптимистических механизмов (с блокированием) является склонным к тупикам, которые решены намеренным аварийным прекращением работы остановленной сделки (который выпускает другие сделки в том тупике), и его непосредственный перезапуск и перевыполнение. Вероятность тупика(deadlock) типично низка.

Both blocking, deadlocks, and aborts result in performance reduction, and hence the trade-offs between the categories.

В основном, используется мягкая блокировка, при этом предполагается что каждый поток пытается получить блокировку перед доступом к соответствующему разделяемому ресурсу. В некоторых системах предоставляется механизм обязательной блокировки, при его использовании попытка несанкционированного доступа к заблокированному ресурсу будет прервана, через создание исключения в потоке, который пытался получить доступ.

  1. Что такое программная транзакционная память (stm)? Какие качества имеют программы, которые ее используют?

Вступление. Транзакционная память (transactional memory, TM) – это новая программная конструкция, обеспечивающая высокоуровневую абстракцию для написания параллельных программ. TM можно реализовывать полностью программным образом (STM) или с использованием специальной аппаратной поддержки (HTM).

Система STM может распознать конфликт при первом обращении транзакции к объекту (early detection, раннее выявление) или в то время, когда транзакция пытается выполнить операцию фиксации (late detection, отложенное выявление).

Производительность систем STM, зависит от деталей рабочей нагрузки. Вообще говоря, при небольшом числе процессоров накладные расходы систем STM оказываются более существенными, чем у схем с блокировками. Однако при возрастании числа процессоров повышаются и уровень конкуренции на отдельную блокировку, и стоимость ее установки. В таких условиях при наличии редко возникающих конфликтов STM (как это показано исследователями) превосходит по производительности схемы с блокировками на тестовых наборах с мелкими транзакциями.

Основная часть. Программная реализация транзакционного принципа обмена данными с оперативной памятью - называется программная транзакционная память (STM);

Транзакционная память, позволяет работать с данными, при помощи транзакций, аналогичных транзакциям баз данных. Транзакции выполняются таким образом, как будто текущая транзакция это единственная операция над текущими данными. При завершении транзакции, смотрится не было ли конфликтов с другими транзакциями. Если их не было (наиболее вероятный вариант), изменение принимаются, если нет, транзакция повторяется еще раз. В программах, в которых имеется большое количество потоков, работающих с различными областями памяти, такая схема будет работать очень хорошо: конфликты будут редки, а степень параллельности будет высокой. К сожалению, есть и некоторые недостатки: в транзакционных блоках желательно не вызывать код имеющий побочные эффекты: ввод/вывод, рисование на экране, и тп.

  1. Расшифруйте аббревиатуру ACID в применении к системному программированию и кратко охарактеризуйте значение каждого из слов. Какая из букв аббревиатуры не применима, когда речь идет о программной транзакционной памяти (STM)?

Вступление. Транзакция – это некоторая форма выполнения программ, перенятая от сообщества баз данных [8]. Параллельно исполняемые запросы конфликтуют, когда они читают и изменяют некоторый элемент базы данных, и возникающий конфликт может привести к ошибочному результату, который не мог бы получиться при последовательном выполнении этих запросов. Транзакции гарантируют, что все запросы произведут тот же самый результат, как если бы они выполнялись последовательно в некотором порядке (serially, «сериально»; это свойство называют «сериализуемостью» (serializability)). Декомпозиция семантики транзакции приводит к четырем требованиям, обычно называемым свойствами ACID: атомарность (atomicity), согласованность (consistency), изоляция (isolation) и долговечность (durability)

ACID (atomicity, consistency, isolation, durability).

В информатике, акроним ACID описывает требования к транзакционной системе (например, к СУБД), обеспечивающие наиболее надёжную и предсказуемую её работу. Требования ACID были в основном сформулированы в конце 70-х годов Джимом Греем

Лингвистические корни STM.NET берут свое начало из самых разных областей, но концептуальная идея STM гениально проста и знакома: вместо того чтобы заставлять разработчиков придумывать средства распараллеливания (блокировки и все такое), дать им возможность помечать, какие части кода должны выполняться с теми или иными характеристиками дружественности к параллельной обработке, и разрешить инструментальным средствам языка (компилятору или интерпретатору) при необходимости самостоятельно управлять блокировками. Другими словами, разработчики подобно администраторам и пользователям баз данных помечают код атрибутами транзакционной семантики в стиле ACID и оставляют все черную работу по управлению блокировками нижележащей среде.

Хотя STM.NET может показаться всего лишь еще одной попыткой управления параллельной обработкой, она отражает нечто более глубокое — поиск путей переноса всех четырех характеристик ACID-транзакций баз данных в модель программирования, размещенную в памяти. Помимо управления блокировками в интересах программиста, модель STM также обеспечивает атомарность (atomicity), согласованность (consistency), изоляцию (isolation) и надежность (durability), которые сами по себе могут значительно упростить программирование независимо от наличия нескольких потоков выполнения.

Атомарность заявляет, что база данных изменений должны следовать принципу "все или ничего". Каждая операция называется "атомной". Если одна часть сделки не удается, вся сделка не удается. Очень важно, что система управления базами данных сохраняет атомный характер операций, несмотря на любую операционную систему или аппаратный сбой.

Последовательность заявляет, что только достоверные данные будут записаны в базу данных. Если по каким-то причинам совершается сделка, которая нарушает согласованность правил базы данных, вся сделка будет отменена, и база данных будет восстановлена в состоянии, в соответствии с этими правилами. С другой стороны, если операция успешно выполняется, это переведет базу данных из данного состояния, которое соответствует другому состоянию, которое также находится в соответствии с правилами.

Изоляция требует, чтобы несколько изменений, совершенных в то же время, не влияли на исполнение друг друга. Например, если Джо запросил транзакции с базой данных в то же время, что Мария запросила различные сделки, и операции должны функционировать на базе данных, независимо. База данных должна либо выполнять весь запрос Джо перед выполнением запроса Марии или наоборот. Это предохраняет запрос Джо от чтения промежуточных данных, полученных в качестве побочного эффекта части запроса Марии, которая в конечном итоге не будет фиксироваться в базе данных. Обратите внимание, что изоляция собственности не обеспечивает исполнения , только того, что не конфликтует друг с другом.

Долговечность гарантирует, что любое изменение, внесенное в базу данных, не будет потеряно. Долговечность обеспечивается за счет использования резервных копий баз данных и журналов транзакций, которые способствуют восстановлению совершенных изменений, несмотря на любые последующие программные или аппаратные сбои.

Не применима буква “I”(изоляция), т.к. при STM - транзакции выполняются таким образом, как будто текущая транзакция это единственная операция над текущими данными, а при ACID - несколько изменений, совершенных в то же время, не влияют на исполнение друг друга.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]