Под семафором понимается переменная, принимающая целые неотрицательные значения.
Семафорная технология:
Дейкстра и Деккер предложили 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))