моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
04.07.2024: Примечания к исследованию синхронизации операционной системы и взаимного исключения
Параллельные процессы или программы потеряют свое закрытие при выполнении. То есть, если две программы используют общий ресурс в разных областях, результаты каждого запуска могут быть разными.
Причина в том, что мы не защитили общий ресурс x, к которому должны иметь доступ как программа a, так и программа b.
Взаимно ограничивающие отношения — это синхронизация. Простое понимание синхронизации заключается в том, что в выполнении процессов должен быть порядок.
Отношения, которые косвенно ограничивают друг друга, называются взаимоисключающими отношениями, например принтер.
«Модель производителя и потребителя»
счетчик+ +
首先把变量放到寄存器里面
register1 = counter;
接下来对寄存器进行一个自增
register1 = register1 + 1;
再把结果返回到counter里
counter = register1;
прилавок- -
首先把变量放到寄存器里面
register2 = counter;
接下来对寄存器进行一个自减
register2 = register2 - 1;
再把结果返回到counter里
counter = register2;
Решение: рассматривать счетчик как критический ресурс и разрешить процессу взаимный доступ к переменной счетчика (механизм синхронизации вы узнаете позже).
Независимо от того, является ли это критически важным ресурсом оборудования или критически важным ресурсом программного обеспечения, несколько процессов должны иметь взаимный доступ к нему.
Эти области по сути являются кодами
Когда в критическом разделе нет процесса, это указывает на то, что ресурсы критического раздела простаивают. Процессу, который запрашивает вход в критический раздел, должно быть разрешено немедленно войти в свой собственный критический раздел для эффективного использования ресурсов.
Когда существующий процесс входит в критическую секцию, это указывает на то, что к критическому ресурсу осуществляется доступ. Поэтому другие процессы, пытающиеся войти в критическую секцию, должны ждать, чтобы обеспечить взаимоисключающий доступ к критическому ресурсу.
Для процессов, которым требуется доступ к критически важным ресурсам, они должны гарантировать, что они могут войти в свою собственную критическую секцию в течение ограниченного времени, чтобы избежать перехода в состояние «ожидания смерти».
Когда процесс не может войти в свою критическую секцию, процессор (ЦП) следует немедленно освободить, чтобы предотвратить переход процесса в состояние «занятого ожидания».
两个进程必须交替进入临界区,若一个进程不再进入临界区,则另一个进程也无法进入临界区,违背了“空闲让进”准则
Метод первой проверки с двойным флагом устанавливает логический флаг массива[2] для обозначения готовности каждого процесса войти в критическую секцию. Флаг[i]=true означает, что Pi хочет войти в критическую секцию.
- Цикл while эквивалентен механизму светофора.
- Установка флага другой стороны эквивалентна смене светофора другой стороны.
- Однако, поскольку оба процесса сначала проверяют флаг [сначала посмотрите на светофор], и оба изначально являются ложными [оба зелёных света], возможно, что два процесса пройдут светофор одновременно и вместе войдут в критическую секцию. .
Метод пост-проверки с двойным флагом проверяет флаг другой стороны, а затем устанавливает свой собственный. Эти две операции нельзя выполнить за один раз, поэтому два процесса могут войти в критическую секцию одновременно. Поэтому пост-проверка. был разработан метод, который сначала устанавливает собственный флаг, а затем проверяет флаг другой стороны, если флаг другой стороны верен, подождите, иначе войдите в критическую секцию;
Алгоритм Петерсона сочетает в себеметод одной отметкииМетод пост-проверки с двойной оценкойИдея состоит в том, чтобы использовать flag[] для решения проблемы взаимоисключающего доступа и использовать поворот для решения проблемы нехватки ресурсов.
Если обе стороны конкурируют за вход в критическую секцию, процесс можно разрешить, чтобы дать другой стороне возможность войти в критическую секцию.
Прежде чем каждый процесс входит в критическую секцию, он устанавливает свой собственный флаг и устанавливает флаг поворота, которому разрешен вход. После этого он одновременно обнаруживает флаг и поворот другой стороны, чтобы гарантировать, что только одному процессу разрешен вход. обе стороны одновременно запрашивают вход в критическую секцию.
Невозможность отказаться от права ждать
Программному обеспечению сложно решить проблему взаимного исключения входа каждого процесса в критическую секцию, и оно имеет большие ограничения. Поэтому компьютер предоставляет некоторые специальные аппаратные инструкции для решения этой проблемы.
Инструкцию TS можно рассматривать как функциональный процесс (примитив), процесс выполнения которого неделим.
Используйте TS для управления критическими разделами и установки блокировки для каждого критического ресурса.
Она называется инструкцией замены и используется для обмена содержимым двух слов.
Он определяется как целое число S, используемое для представления количества ресурсов. Для этого целочисленного семафора есть только три операции: инициализация (присвоение начального значения), ожидание (уменьшение), сигнал (приращение).
Механизм синхронизации процессов без явления «занятого ожидания»
- Операция ожидания эквивалентна операции P.
- Сигнальная операция эквивалентна операции V.
- Просто два разных названия, функции абсолютно одинаковые
- ждать(А) = Р(А)
- сигнал(B) = V(A)
Установите взаимоисключающий семафорный мьютекс = 1, а затем поместите критическую секцию для каждого процесса для доступа к критическим ресурсам между ожиданием (мьютекс) и сигналом (мьютекс).
Установите семафор синхронизации S=0, чтобы сначала выполнялся сигнал оператора(S), а затем ожидание(S).