ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 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» понимаются все атомарные операции, не входящие в критическую секцию. |