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).


 

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

8099. Трудовое воспитание и профессиональная ориентация школьников 24.82 KB
  Трудовое воспитание и профессиональная ориентация школьников Трудовое воспитание (ТВ) есть процесс вовлечения учеников в педагогически организованные виды труда с целью передачи им производственного опыта, развития трудовых умений, трудолюбия и друг...
8100. Сущность физической культуры личности. Пути формирования здорового образа жизни 25.52 KB
  Сущность физической культуры личности. Пути формирования здорового образа жизни Физическое воспитание - это организованный педагогический процесс, направленный на совершенствование организма в соответствии с требованиями общества, развитие физи...
8101. Воспитание учащихся в коллективе. Структура и динамика воспитания коллектива 24.61 KB
  Воспитание учащихся в коллективе. Структура и динамика воспитания коллектива. Коллектив - высокоразвитая группа с такими характеристиками, как сплоченность, целеустремленность, ценностно-ориентационное единство и пр. Педагогика понимает воспитательн...
8102. Этапы становления воспитательного коллектива 21.85 KB
  Этапы становления воспитательного коллектива Выделены стадии развития коллектива - этапы развития группы детей по характеру предъявляемых педагогом требований, по характеру отношений и взаимодействия между воспитанниками. На первой стадии педаг...
8103. Семейное воспитание. Формы, методы взаимодействия школы с семьей 28.09 KB
  Семейное воспитание. Формы, методы взаимодействия школы с семьей Семья - это малая социальная группа, члены которой связаны браком, родительством и родством, общностью быта, бюджета и взаимной моральной ответственностью. Она имеет ряд функций: репро...
8104. Самовоспитание личности школьника. Педагогическое руководство процессом самовоспитания 26.28 KB
  Самовоспитание личности школьника. Педагогическое руководство процессом самовоспитания. Самовоспитание - это сознательная, целенаправленная самостоятельная деятельность, ведущая к возможно более полной реализации, развитию и совершенствованию личнос...
8105. Синхронизация процессов при помощи семафоров 48 KB
  Синхронизация процессов при помощи семафоров Цель работы: получить представление о синхронизации процессов в ОС UNIX при помощи флагов в разделяемой памяти и процессных семафоров. Иcпользуемые средства: ОС Linux, графическая оболочка KDE, среда разр...
8106. Электрофильтры. Тиристорные пускатели. Козловые краны. Портальные краны 3.16 MB
  Электрофильтры Электрическая очистка(электрофильтры) - один из наиболее совершенных видов очистки газов от взвешенных в них частиц пыли и тумана. Электрофильтры - это высоковольтное электротехническое оборудование, в кот...
8107. Детали машин. Конспект лекций 3.63 MB
  Детали машин Содержание курса Механические передачи Элементы, обеспечивающие вращательное движение (валы и подшипники) Соединения Муфты приводов Цель курса ДМ и ОК: изучение, расчёт и проектирование деталей общемашиностроител...