Мне нужно доказать, что этот алгоритм свободен от тупиков и что нет ни одного момента t, в течение которого повар готовит печенье, а покупатель уменьшает количество порций , но я незнаю с чего начать. Это алгоритм:
semaphore mutex = 1
semaphore full = 0
semaphore empty = 0
int portions = 0
void Client(){
P(mutex)
if (portions = = 0) {
V(empty);
P(full);
}
portions --;
V(mutex);
<eat biscuits>;
}
void Chef (){
while(true) {
P(empty);
<prepare biscuits>;
portions = m;
V(full);
}
}
Я заметил, что когда повар готовит печенье, значение переменной full равно 0, а значение empty равно1. Мне нужно начать развивать математические отношения отсюда?