Под семафором понимается переменная, принимающая целые неотрицательные значения.
Семафорная технология:
Дейкстра и Деккер предложили 2 семафорных примитива
S={0;1} – семафор
P(S) – понижающий примитив
V(S) – повышающий примитив
Процесс читатель – считывает информацию из общего хранилища, при этом, одна и та же информация может быть считана неоднократно 1 или несколькими читателями.
Процесс писатель – процесс, кот.изменяет общую для читателя информацию, при этом, изменение информации писателем может быть только тогда, когда они не используются ни одним из читателей.
Задача ставиться:
· С приоритетом читателя
· С приоритетом писателя
ЧЧ – число читателей
ЗП – действие писателя
ЧТ – действие читателя
Приоритет писателя
В этом случае если появляется хотя бы один процесс-писатель, доступ читателей к ресурсу прекращается. Все работающие с данной информацией читатели могут беспрепятственно закончить работу. Писатель получает доступ тогда, когда нет активных читателей.
Писатель:
P(W); Пис=1; P(S); ЗП; V(S); Пис=0; V(W);
Читатель:
If Пис=0 then P(K); If ЧЧ=0 then P(S); ЧЧ=ЧЧ+1; V(K); ЧТ; P(K); ЧЧ=ЧЧ-1; If ЧЧ=0 then V(S); V(K)