24518

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

Доклад

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

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

Русский

2013-08-09

46.4 KB

9 чел.

Вопрос 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).


 

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

7274. Социальная подструктура личности 81 KB
  Социальная подструктура личности Вопросы для обсуждения: Социализация личности. Механизмы социализации Основные социальные процессы и поведение человека Просоциальное и асоциальное поведение. Социализация личности. Механизмы социа...
7275. Засади кримінального процесу 84.92 KB
  Засади кримінального процесу ПЛАН: Вступ 1. Поняття, значення і класифікація засад кримінального провадження. 2. Конституційні засади кримінального провадження. 3. Спеціальні засади кримінального провадження та їх характеристика. Висновки...
7276. Засоби колективного та індивідуального захисту населення 82.5 KB
  Тема: Засоби колективного та індивідуального захисту населення. План: Колективні засоби захисту: призначення і класифікація. Індивідуальні засоби захисту людей: Індивідуальні засоби захисту органів дихання Індивідуальні зас...
7277. Суб’єкти трудового права України 77.5 KB
  Поняття субєкта трудового права України. Громадяни як субєкти трудового права України. Власник або уповноважений ним орган як субєкт трудового права України. Підприємство як суб'єкт трудового права України. Трудовий колектив як суб'єкт трудового права України.
7278. Особливості організації обслуговування споживачів у закладах ресторанного господарства відкритої мережі 56 KB
  Тема: Особливості організації обслуговування споживачів у закладах ресторанного господарства відкритої мережі. План: Правила подачі гарячих закусок. Правила подачі перших страв, підбір посуду, приборів. Література: Я.М.Сало. Організація...
7279. Направленность личности 88 KB
  Направленность личности Вопросы для обсуждения: Направленность в структуре личности. Потребности и мотивы в структуре направленности личности. Формы направленности личности. Самосознание и Я-концепция. Литература: Березовин, Н. А. Осн...
7280. Психологічні особливості молодшого школяра 90.5 KB
  Лекція №4. Психологічні особливості молодшого школяра. Загальна психологічна характеристика ситуації розвитку молодшого школяра. Учбова діяльність молодших школярів. Розвиток пізнавальних психічних процесів. Формування особистості ди...
7281. Виробництво виробів на основі гіпсового в’яжучого 550 KB
  Виробництво виробів на основі гіпсового вяжучого План заняття Асортимент виробництва на основі гіпсового вяжучого. Способи виробництва виробів на основі гіпсового в’яжучого. Технологія виробництва гіпсокартонних ли...
7282. Економічна система суспільства. Типи і еволюція економічних систем 53 KB
  Тема 4. Економічна система суспільства План лекції Економічна система: її сутність та структурні елементи. Типи і еволюція економічних систем. Сучасні тенденції в розвитку економічних систем. Економічна система: її сутність та с...