Игорь Шамурзаев
Игорь Шамурзаев | Репутация: 101 (Кандидат) 4 июня 2014 в 16:22
Обнаружил ошибку?

В курсе Основы операционных систем лекция 5 страница 4, при описании алгоритма булочной - 

(a,b) < (c,d), если a < c или если a == c и b < d max(a0, a1, ...., an) – это число k такое, что k >= ai для всех i = 0, ...,n

Структура процесса Pi для алгоритма булочной приведена ниже

while (some condition) { choosing[i] = true; number[i] = max(number[0], ..., number[n-1]) + 1; choosing[i] = false; for(j = 0; j < n; j++){ while(choosing[j]); while(number[j] != 0 && (number[j],j) < (number[i],i)); } critical section number[i] = 0; remainder section }

Что-то не сходится задачка. Если number[j]==0 тогда (nubmer[j],j)<(number[i],i)) так как number[i]==max(number[0],...,number[n-1])+1; т.е всегда больше нуля.Тогда (numbrer[j],j<(number[i],i)) так как есть обозначения - (a,b)<(c,d),if a<c else if a==c & b<d. Из цикла нет выхода! Уже писал про эту ошибку на сайт, ответа небыло... Не