Результаты (
русский) 2:
[копия]Скопировано!
Обратите внимание , что условия в шаге 3 и шаге 9 не требуется оценивать атомарно. Как следствие, когда процесс 0 проверил флаг [1] , чтобы быть правдой , и читает значение поворота, флаг [1] может быть изменен на ложный процессом 1 (этап 11). Также возможно , что процесс 0 проверил флаг [1] , чтобы быть ложным и вступает в CS, но к тому времени, процесс 1 изменился флаг [1] к истинному (этап 7). Несмотря на это, решение удовлетворяет всем критериям корректности введенных ранее.
Доказательство отсутствия тупиковой (ME2) (от противного): Процесс 0 потенциально может ждать в шаге 3, и процесс 1 потенциально может ждать в шаге 9. Нам нужно показать что они оба не могут ждать друг друга. Пусть они оба ждать. Тогда условие (флаг [0] ∧ повернуть = 1) ∧ (флаг [1] ∧ повернуть = 0) должно быть правдой. Тем не менее, (поворот = 1 ∧ повернуть = 0) = ложь. Поэтому тупиковый невозможно.
Доказательство безопасности (МЕ1): Без ограничения общности, предположим , что процесс 0 находится в CS (этап 4). Это должно быть возможным , поскольку на шаге 3, либо флаг [1] , была ложной или повернуть = 1 или оба из них были правдой. Проблема здесь в том , чтобы продемонстрировать , что процесс 1 не может ввести его в CS.
Чтобы ввести его в CS, процесс 1 должен прочитать флаг [0] как ложные или повернуть как 0. Так как процесс 0 уже в CS, флаг [0] верно, поэтому значение поворота должен быть равен 0. это осуществимо?
переводится, пожалуйста, подождите..
