Я изучаю операционные системы через онлайн-курс, и я наткнулся на некоторые программные решения для синхронизации процессов.Учитель объясняет все программные решения, начиная с использования одной переменной turn
и заканчивая решением Петерсона.
У меня есть сомнения в самом базовом подходе.Пожалуйста, обратитесь к приложенному скриншоту из видео курса для ясности.Подход состоит в том, чтобы использовать одну переменную turn
в случае двух процессов и сохранять 1 или 2 по очереди в зависимости от того, какой процесс хочет получить доступ к критическому разделу.Этот подход гарантирует взаимное исключение, но не удовлетворяет требованию прогресса, потому что если turn
изначально равен 1 и P2 хочет сначала войти в критическую секцию, то он будет просто заблокирован в ожидании в цикле while, даже если P1 не находится в критической секции.Моя идея состоит в том, чтобы инициировать turn
как -1 и теперь продолжить.Ни один процесс не будет заблокирован в зависимости от других.
Я проверил несколько онлайн-курсов, но никто не обсуждает это простое изменение и скорее переходит к продвинутым решениям, таким как алгоритм Петерсона или семафоры.Я правильно думаю?Правильный ли мой подход?