МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Понятие «активности» процессов.





Введём понятие «активность». Под активностями будем понимать последовательное выполнение некоторых действий, направленных на достижение определенной цели. Будем разбивать активности на некоторые неделимые или атомарные операции.

Определение: Активности считаются неделимыми, если они выполняются за один без прерывания деятельности.

Пусть имеется две активности: P: a b c и Q: d e f,где a, b, c, d, e, f – атомарные операции. При последовательном выполнении активностей получаем следующую последовательность атомарных действий: PQ: a b c d e f.

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

а b c d e f

a b d c e f

a b d e c f

a b d e f c

a d b c e f

......

d e f a b c

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

Пример 8. Пусть есть две активности P и Q, состоящие из двух атомарных операций

P: x=2; y=x-1;

Q: x=3; y=x+1

Если переменные x и y являются общими для активностей, то в результате их псевдопараллельного выполнения получим четыре разных набора значений для пары (x, y): (3, 4), (2, 1), (2, 3) и (3, 2).

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

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

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

Для каждой атомарной операции введем наборы входных и выходных переменных программы – наборы переменных, которые атомарная операция считывает и записывает:

R(P) – набор входных переменных программы – объединение наборов входных переменных для всех ее неделимых действий;

R(P) – набор выходных переменных программы – объединение наборов выходных переменных для всех ее неделимых действий.

Например, для программы:

P: x=u+v;

y=x*w;

R(P) = {u, v, x, w}, W(P) = {x, y}.

Условия Бернстайна:Если для двух данных активностей P и Q:

· W(P) Ç W(Q) = Æ,

· W(P) Ç R(Q) = Æ,

· R(P) Ç W(Q) = Æ,

тогда выполнение P и Q детерминировано.

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

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

Определение: Ситуации, когда два или более процессов обрабатывают разделяемые данные, и конечный результат зависит от соотношения скоростей процессов, называются гонками (race condition)

В приведенном выше примере процессы состязаются за вычисление значений переменных x и y.

Задачу упорядоченного доступа к разделяемым данным (устранение race condition), в том случае, если важна его очередность, можно решить, если обеспечить каждому процессу эксклюзивное право доступа к этим данным. Каждый процесс, обращающийся к разделяемым ресурсам, исключает для всех других процессов возможность одновременного с ним общения с этими ресурсами, если это может привести к недетерминированному поведению набора процессов. Такой прием называется взаимоисключением (mutual exclusion). Если очередность доступа к разделяемым ресурсам важна для получения правильных результатов, то одними взаимоисключеньями уже не обойтись.

Критическая секция

Важным понятием синхронизации процессов является понятие "критическая секция" программы. Критическая секция - это часть программы, в которой осуществляется доступ к разделяемым данным. Исполнение этой части может привести к возникновению race condition. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Иными словами, необходимо обеспечить реализацию взаимоисключения для критических секций программ. Реализация взаимоисключения для критических секций программ с практической точки зрения означает, что по отношению к другим процессам, участвующим во взаимодействии, критическая секция начинает выполняться как атомарная операция.

Итак, для решения задачи необходимо, чтобы в том случае, когда процесс находится в своем критическом участке, другие процессы не могли войти в свои критические участки. Критический участок должен сопровождаться прологом (entry section) и эпилогом (exit section), которые не имеют отношения к активности одиночного процесса. Во время выполнения пролога процесс должен получить разрешение на вход в критический участок, а во время выполнения эпилога - сообщить другим процессам, что он покинул критическую секцию.

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

while (some condition) {

entry section

critical section

exit section

remainder section}

Здесь под «remainder section» понимаются все атомарные операции, не входящие в критическую секцию.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.