Приветствую. Пожалуйста помогите с теорией. Вот дали теоретическую задачку.
Есть три процесса X, Y, Z и три ресурса: R1 –устройство ввода, R2 – устройство печати, R3 – диск. Процесс X требует ресурсы R1 и R2, процесс Y – R2 и R3, процесс Z – R1 и R3. Скорости процессов разные. Процессы переходят из активного состояния в пассивное произвольным образом.
Я так подозреваю что нужно использовать 3 семафора принимающих значение открыт и закрыт или лучше один? но принимающий разные значения?
Т.е получается имеется 3 процесса X Y Z и если я хочу использовать 3 семафора мне нужно их создать например S1 S2 S3
Т.е если это все превратить в подобие псевдокода то получиться чтото вроде этого
var S1,S2,S3: semaphore
procedure procX
begin
блокировать семафор S1
блокировать семафор S2
произвести чтение из устройства ввода(R1) и записывает в устройство вывода(R2)
снять блокировку с S2
снять блокировку с S1
end;
procedure procY
begin
блокировать семафор S2
блокировать семафор S3
произвести чтение c диска(R3) и направить на принтер(R2)
снять блокировку с S3
снять блокировку с S2
end;
procedure procZ
begin
блокировать семафор S1
блокировать семафор S3
произвести чтение c устройства ввода(R1) и направить на диск(R3)
снять блокировку с S3
снять блокировку с S2
end;
(Может нужно добавить провреку состояния семафоров?)
Пожалуйста подскажите верно ли это или как мне лучше сделать?