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


 

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

27325. Память и способы запоминания 34.5 KB
  По содержанию образная память моторная память эмоциональная память; по организации запоминания эпизодическая память семантическая память процедурная память; по временным характеристикам долговременная декларативная память кратковременная память ультракратковременная память; по физиологическим принципам определяемая структурой связей нервных клеток она же долговременная и определяемая текущим потоком электрической активности нервных путей она же кратковременная по наличию цели произвольная и непроизвольная; по наличию...
27326. Мышление как особый психологический процесс 35.5 KB
  К формам мышления относятся: Понятие – это форма мышления отражающая существенные свойства связи и отношения предметов и явлений. Суждения – это форма мышления позволяющая устанавливать простейшие связи между познаваемыми явлениями как связи и отношения между предметами и явлениями окружающего мира их свойствами и признаками. Умозаключение – форма мышления в которой из одного или нескольких суждений выводится новое суждение. Виды мышления чаще всего мышление подразделяют на теоретическое понятийное и образное и практическое...
27327. Педагогика в системе гуманитарных знаний и наук о человеке 20.18 KB
  Педагогика начального образования как наука о воспитании образовании и развитии младших школьников Педагогика с греческого означает детоводство дитяведение. Педагогика наука о воспитании человека совокупность теоретических и прикладных наук изучающих воспитание образование и обучение. Педагогика – это относительно самостоятельная дисциплина имеющая свой объект и предмет изучения. Педагогика в широком смысле – влияние всех внешних воздействий естественной и социальной среды.
27328. Методология и методика педагогического исследования, Методологическая культура учителя 30.65 KB
  Методы обучения т. В свою очередь возможность исследователя сформировать новые методы и подходы в своей педагогической деятельности является показателем его высокой методологической культуры. Теоретические и эмпирические методы педагогического исследования Пути способы познания объективной реальности принято называть методами исследования. Различают теоретические и эмпирические методы педагогического исследования.