Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2017-11-16 | 464 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Синхронизация процессов и потоков.
Синхронизация – это согласование скоростей потоков путем приостановки потока до наступления какого-то события и его последующей активизации при наступлении этого события.
IPC (Inter Process Communication)
|
Синхронизация может выполняться как средствами ОС, так и быть встроенной в программу.
Необходимость синхронизации и гонки.
Рассмотрим пример:
2-а процесса борются за один ресурс.
Клиент N
Описание ситуации:
1. Поток А обновляет поле «Заказ» записи о клиенте N. Он выполняет шаг А1. шаг А2 изменяет значение поля «Заказ». Выполнение прерывается из-за завершения кванта.
2. Поток В выполняет операцию внесения данных об оплате клиентом N. Он успевает выполнить шаг В1 и В2 до своего прерывания.
3. Управление передается потоку А, выполняется шаг А3 и запись переносится в файл.
4. Когда управление передается потоку В, он выполняет шаг В3. Данные о «Заказе» потока А заменяются на устаревшие.
Может возникнуть и обратная ситуация, может быть потеряна информация поля «Оплата».
Ситуация, когда два или более процесса обрабатывают разделяемые данные и неконечный результат зависит от соотношения скоростей потоков, называется «Гонкой».
Критическая секция:
Это часть программы, результат выполнения которой может меняться, если переменные относящиеся к этой части программы изменяются другими потоками, пока ее выполнение еще не завершено.
Чтобы исключить эффект «Гонок» по отношению к критическим данным, необходимо чтобы в каждый момент времени в критической секции, связанной с этими данными находился только 1 поток, это метод Взаимного Исключения.
Простейший вариант реализации: это возможность запрета любых прерываний потоков при ее нахождении в критической секции.
|
Блокирующие переменные.
Глобальные переменные - это переменные, к которым все потоки имеют доступ.
Алгоритм использования блокирующих переменных:
Продолжить выполнение
Каждому набору критических данных ставится соответствующая двоичная переменная, которая =0 при нахождении в критической ситуации, и =1, если ресурс свободен.
Проверки значения переменной и занятия ресурса должны быть не делимой операцией.
Недостаток: неэффективность использования процессов времени в цикле проверки значения переменной. Для решения этой проблемы в ОС применяются специальные системные вызовы для работы с критическими секциями.
Семафоры.
Дийкстра (Dykstra) – это переменные, которые могут принимать целые неотрицательные значения. Для работы с семафорами используются 2 примитива, обозначаемые P и V. Сама переменная семафор – S.
С ней выполняются следующие действия:
1. V(S): S: =S+1
Единым неделимым действиям.
2. P(S): S: = S-1
Если это возможно. Если S: =0, то поток ждет пока это уменьшение станет возможным. Операция неделимая.
Пример:
Работа семафора на примере двух потоков при помощи буфера.
потоки-писатели потоки-читатели
Для правильной совместной работы, поток-писатель должен остановиться, когда все записи в буфере заняты, и активироваться при освобождении хотя бы одного буфера.
Напротив, поток-читатель останавливается, когда все буферы пусты, и активируется при появлении хотя бы одной записи.
Буфер состоит из буферов N.
Введем семафоры e и f.
e – свободные;
f – занятые.
В начальный момент времени e = N, f = 0: потоки-писатели выполняют операцию P(e).
Такая схема позволяет эффективно и с минимальными затратами решить сложную задачу.
В частном случае, если переменная S принимает значение 0 и 1: S = {0,1}, то семафор вырождается в блокирующую переменную (двоичный семафор).
|
|
|
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!