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

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

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

Дейкстра и Деккер предложили 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)


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



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