Вопрос о трех требованиях с учетом критической проблемы раздела - PullRequest
3 голосов
/ 13 апреля 2011

Недавно я читаю книгу Основные понятия операционной системы Глава VI, посвященная проблеме критических разделов, в разделе 6.2 мы знаем, что алгоритм для решения проблемы синхронизации должен удовлетворять трем требованиям: 1. Взаимное исключение 2.Прогресс 3. Ожидание ограничено.Очевидно, что если алгоритм удовлетворяет второму требованию (прогресс), это не обязательно означает, что этот алгоритм соответствует ограниченному ожиданию из-за скорости процесса или проблемы планирования.

Однако мой вопрос заключается в том, что, если алгоритм удовлетворяет требованию ограниченного ожидания, можем ли мы из этого предположить, что этот алгоритм также удовлетворяет требованию прогресса?Если нет, то в каком состоянии?Если да, почему бы нам не поднять ТОЛЬКО третье требование и удалить второе, поскольку третье может подразумевать второе.Кстати, кто-нибудь может объяснить связь (и различия) между вторым и третьим?

Ответы [ 2 ]

5 голосов
/ 13 апреля 2011

Концепции прогресса и ограниченного ожидания совершенно разные.

Ограниченное ожидание означает, что процесс может в конечном итоге получить блокировку / мьютекс в любом случае.Условие выполнения означает, что процесс может завершить свое выполнение.Существует обстоятельство, называемое live-lock (соответствующее взаимоблокировке), при котором два или более процессов организованы в виде группы процессов, все процессы могут получить или снять блокировку, которая удовлетворяет ограниченному ожиданию, но группа процессов не может прогрессировать (или почемумы называем это live-lock.: -)).

Удачи и всего наилучшего

1 голос
/ 11 апреля 2017

Первое требование кристально ясно, так как главная цель Mutal Exclusion - это ... Hum, чтобы взаимно исключать, верно?

Второе требование (Progress), в некотором смысле, является неправильным.Предположим, что в данной системе одновременно выполняется несколько процессов, скажем, P1, P2, P3, P4 и P5, и ни один из них не выполняет критическую секцию (CS).В конце концов, в данный момент процессы P1, P2 и P3 начинают интересоваться одновременным выполнением CS.В этой ситуации требование Прогресса гласит, что только P1, P2 и P3 имеют право выбирать между собой, кто будет тем, кто войдет в CS (ни в коем случае P4 и P5 не смогут влиять на такое решение).Помимо этого, это требование также определяет, что такое решение не может быть принято вечно, поэтому его название («Требование к прогрессу». Я думаю, что это неописательный термин; «требование закрытия» подходит лучше, поскольку только заинтересованные процессы имеют право нарешить, кто будет выполнять CS).Насколько я понимаю, это требование направлено на предотвращение блокировок (все процессы говорят друг другу «пожалуйста, выполняйте, ваша очередь»).

Третье требование (ограниченное ожидание) тесно связано со вторым.В то время как требование Прогресса говорит, что заинтересованные процессы должны принять решение за конечное время, правила ограниченного ожидания не требуют, чтобы ни один процесс не должен был ждать бесконечно, что предотвращает голодание: после того, как Pn сделал запрос на вход в CS, толькоограниченное количество процессов может обойти Pn.Учитывая его определение и в отличие от второго, это требование названо ужасно (Bounded Waiting или, иногда, Bounded Bypass, как видно здесь ).Если вы понимаете по-португальски, то вот определение, которое я нашел здесь :

О первоисточнике реквизитов, основных и объективных принципах решения.Начиная с этого момента, когда он принимает участие в этом процессе, он принимает участие в этом процессе, принимает участие в этом процессе и принимает участие в процессе принятия решений по вопросам, связанным с разрешением на неопределенный срок.Перечисление требований к процессу принятия решения о регистрации на постоянной основе в течение неопределенного периода времени;isto é, quando existe algum processo esperando para entrar, deve haver um limite no número de vezes que outros processos entram e saem de suas regiões críticas.

...