Семафоры и семафорные примитивы. Задача «писателей-читателей» с приоритетом читателей

Под семафором понимается переменная, принимающая целые неотрицательные значения.

Семафорная технология:

Дейкстра и Деккер предложили 2 семафорных примитива

S={0;1} – семафор

P(S) – понижающий примитив

V(S) – повышающий примитив

Процесс читатель – считывает информацию из общего хранилища, при этом, одна и та же информация может быть считана неоднократно 1 или несколькими читателями.

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

Задача ставиться:

1)С приоритетом читателя

2)С приоритетом писателя

ЧЧ – число читателей

ЗП – действие писателя

ЧТ – действие читателя

Приоритет читателя:

В этом случае вновь пришедший процесс-читатель имеет беспрепятственный доступ к информации, если с ней работает хотя бы один читатель. Писатель получает доступ, только если не работает ни один читатель.

Читатель:

P(K); If ЧЧ=0 then P(S); ЧЧ=ЧЧ+1; V(K); ЧТ; P(K); ЧЧ=ЧЧ-1; If ЧЧ=0 then V(S); V(K);

Писатель:

P(S) ЗП V(S)

P(K)- право изменить число читателей(вошел писатель P(S)=0, следующий читатель стоит и ждет….. подходят следующие читатели, но право изменить P(S) есть у читателя, который стоит и ждет, благодаря P(K))


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: