24518

Назначение и использование семафоров

Доклад

Информатика, кибернетика и программирование

Пусть буферный пул состоит из N буферов каждый из которых может содержать одну запись рис. Для решения задачи введем три семафора: e – число пустых буферов; f – число заполненных буферов; b – блокирующая переменная – двоичный семафор используемый для обеспечения взаимного исключения при работе с разделяемыми данными в критической секции. Использование семафоров для синхронизации потоков Здесь операции Р и V имеют следующее содержание: Ре – если есть свободные буферы то уменьшить их количество на 1 если нет то перейти в состояние...

Русский

2013-08-09

46.4 KB

8 чел.

Вопрос 23. Назначение и использование семафоров.

§4.4.4Семафоры.

Семафор является средством управления доступом к разделяемому ресурсу со стороны выполняющихся параллельно потоков. Семафор – это специальная блокирующая переменная, которая может принимать только целые неотрицательные значения: 0; 1; 2; 3 и т. д. В частном случае, когда семафор может принимать только значения 0 и 1, он превращается в блокирующую переменную, называемую двоичным семафором.

Над семафором можно проводить только две операции, традиционно обозначаемые буквами V и Р:

V- операция (освобождение ресурса) – увеличение значения семафора на 1;

Р- операция (занятие ресурса) – уменьшение значения семафора на 1.

Пусть переменная S представляет собой семафор. Тогда операции V(S) и P(S) определяются следующим образом:

V(S) : переменная S увеличивается на 1 единым действием, если это возможно. Выборка, наращивание и запоминание S не могут быть прерваны. К переменной S нет доступа другим потокам во время выполнения этой операции.

P(S) : переменная S уменьшается на 1 единым действием, если это возможно. Если S=0 и ее невозможно уменьшить, оставаясь в области целых неотрицательных значений, поток, вызывающий операцию P, ждет, пока это уменьшение станет возможным. Успешная проверка и уменьшение S также является неделимой операцией.

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

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

Пусть буферный пул состоит из N буферов, каждый из которых может содержать одну запись (рис. 4.11). Потоки-писатели должны приостанавливаться, когда все буферы оказываются занятыми, и активизироваться при освобождении хотя бы одного буфера. Напротив, потоки-читатели должны приостанавливаться, когда все буферы пусты, и активизироваться при появлении хотя бы одной записи. Операции записи в буфер и считывания из буфера являются критическими секциями потоков-читателей и потоков-писателей.

Для решения задачи введем три семафора:

e – число пустых буферов;

f – число заполненных буферов;

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

V-освобождение

ресурса

Р-занятие ресурса

Рис. 4.11. Использование семафоров для синхронизации потоков

Здесь операции Р и V имеют следующее содержание:

Р(е) – если есть свободные буферы, то уменьшить их количество на 1, если нет, то перейти в состояние «ожидание»;

P(b) – если критическая секция доступна, то установить признак «занято» (b=0), если нет, то перейти в состояние «ожидание»;

V(b) – освободить критическую секцию (установить b=1);

V(f) – нарастить число занятых буферов.

Следует учитывать, что уменьшение количества свободных и увеличение числа занятых буферов – разные операции.

Поток-писатель, прежде всего, проверяет, имеются ли в пуле пустые буферы, используя семафор P(e). Если свободных буферов нет (е=0), то поток переводится в состояние ожидания. Если свободные буферы есть (е>0), то поток-писатель уменьшает их число и входит в критическую секцию (если это возможно, т.е. если b=1) для записи данных в буфер. После выхода из критической секции поток-писатель наращивает число занятых буферов V(f).

Поток-читатель действует аналогично, с той разницей, что он начинает работу с проверки наличия заполненных буферов – P(f), а после чтения данных наращивает количество свободных буферов – V(e).


 

А также другие работы, которые могут Вас заинтересовать

67470. Исследование модели кольцевой ЛВС с маркерным доступом 1.4 MB
  Цель работы: Исследование особенностей построения и функционирования кольцевой ЛВС с маркерным методом доступа и определение основных характеристик сети. Определить основные характеристики ЛВС основе исследования аналитической модели сети.
67471. Выбор рациональной длины пакета сети ЭВМ 149.5 KB
  Исходные данные средняя длина передаваемого сообщения: l = 5000 бит; длина заголовка пакета: С = 320 бит; коэффициент учитывающий системные издержки на сборку сообщений: К1 = 15; время изменения направления передачи t1n = 0 t2n = 004; номинальная...
67472. Функционирование мостов и коммутаторов на основе протокола канального уровня STP стека протоколов TCP/IP 119.5 KB
  Изучение основных принципов работы мостов и коммутаторов в сетях ЭВМ на основе протокола STP. Получение знаний по принципам построения и алгоритмам функционирования мостов и коммутаторов в сетях ЭВМ и навыков по устранению активных петель в сети при помощи протокола STP.
67473. Функционирование маршрутизаторов на основе протокола сетевого уровня OSPF стека протоколов TCP/IP 81.5 KB
  Получение знаний по принципам построения и алгоритмам функционирования маршрутизаторов в сетях ЭВМ и навыков по выбору кратчайших путей в сети на основе протокола OSPF. Граф сети Граф-схемы алгоритмов Граф-схема алгоритма выбора кратчайших путей Дейкстра Граф-схема алгоритма выбора...
67474. Финансы и финансовая система. Основные понятия финансов 146.5 KB
  Термин финансы происходит от французского fin = finis означающего конец окончание. Финансы связаны с движением денег от одного владельца к другому следовательно финансы связаны с экономическими отношениями и являются экономической категорией. Финансы представляют собой отношения по созданию...
67475. КРИЗИС СЕРЕДИНЫ ЖИЗНИ 205.5 KB
  Проблема возраста всегда актуальна, как для каждого отдельного человека, так и для всего общества в целом. Переход из одного возрастного периода в другой является судьбоносным и определяет всю дальнейшую жизнь.