Обработка Syncхронизация: Проблема критической секции в ОС

Что такое процесс Syncхронизация?

Обработка Syncхронизация Это задача координации выполнения процессов таким образом, чтобы ни один процесс не мог иметь доступ к одним и тем же общим данным и ресурсам.

Это особенно необходимо в многопроцессной системе, когда несколько процессов работают вместе и несколько процессов пытаются одновременно получить доступ к одному и тому же общему ресурсу или данным.

Это может привести к несогласованности общих данных. Таким образом, изменение, внесенное одним процессом, не обязательно отражается на том, когда другие процессы обращаются к одним и тем же общим данным. Чтобы избежать такого рода несогласованности данных, процессы должны быть syncхронизированы друг с другом.

Как процесс Syncхронизация работает?

Например, процесс A меняет данные в ячейке памяти, в то время как другой процесс B пытается прочитать данные из то же место памяти. Существует высокая вероятность того, что данные, прочитанные вторым процессом, будут ошибочными.neoнас.

Обработка SyncРаботы по хронизации

Разделы программы

Вот четыре основных элемента критического раздела:

  • Входной раздел: Это часть процесса, которая определяет вход конкретного процесса.
  • Критический раздел: Эта часть позволяет одному процессу вводить и изменять общую переменную.
  • Выход из раздела: Раздел «Выход» позволяет другим процессам, ожидающим в разделе «Вход», войти в критические разделы. Он также проверяет, что процесс, завершивший свое выполнение, должен быть удален через этот раздел.
  • Остаток раздела: Все остальные части Кодекса, которые не входят в разделы «Критический», «Вход» и «Выход», называются «Остальным разделом».

Что такое проблема критического сечения?

Критическая секция — это сегмент кода, к которому может получить доступ сигнальный процесс в определенный момент времени. Этот раздел состоит из общих ресурсов данных, к которым должны иметь доступ другие процессы.

  • Вход в критическую секцию обрабатывается функцией wait() и обозначается как P().
  • Выход из критической секции контролируется функцией signal(), представленной как V().

В критическом разделе может выполняться только один процесс. Другие процессы, ожидающие выполнения своей критической секции, должны дождаться, пока текущий процесс завершит свое выполнение.

Правила критического раздела

Критическая секция должна обеспечивать соблюдение всех трех правил:

  • Взаимное исключение: Взаимное исключение — это особый тип двоичного семафора, который используется для контроля доступа к общему ресурсу. Он включает механизм наследования приоритетов, позволяющий избежать проблем расширенной инверсии приоритетов. В своей критической секции одновременно может выполняться не более одного процесса.
  • Ход работы: Это решение используется, когда в критической секции никого нет, а кто-то хочет войти. Тогда эти процессы, не находящиеся в секции напоминаний, должны решить, кто должен войти, за конечное время.
  • Связанное ожидание: Когда процесс делает запрос на попадание в критическую секцию, существует определенное ограничение на количество процессов, которые могут попасть в эту критическую секцию. Итак, при достижении лимита система должна разрешить запросу процесса попасть в его критическую секцию.

Решения для критической секции

В процессе Syncхронизация, критическая секция играет главную роль в том, что проблема должна быть решена.

Вот некоторые широко используемые методы решения проблемы критического сечения.

Петерсон Решение

Решение Петерсона широко используется для решения проблем критических секций. Этот алгоритм был разработан ученым-компьютерщиком Петерсоном, поэтому он назван решением Петерсона.

В этом решении, когда процесс выполняется в критическом состоянии, другой процесс выполняет только остальную часть кода, и может произойти обратное. Этот метод также помогает гарантировать, что в критическом разделе в определенное время выполняется только один процесс.

Пример

Решения для критической секции

PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
  • Предположим, существует N процессов (P1, P2,… PN) и каждый процесс в какой-то момент времени требует входа в критическую секцию.
  • Поддерживается массив FLAG[] размера N, который по умолчанию имеет значение false. Таким образом, всякий раз, когда процессу требуется войти в критическую секцию, он должен установить свой флаг как true. Например, если Пи хочет войти, он установит FLAG[i]=TRUE.
  • Другая переменная, называемая TURN, указывает номер процесса, который в данный момент ожидает входа в CS.
  • Процесс, который входит в критическую секцию при выходе, изменит TURN на другой номер из списка готовых процессов.
  • Пример: поворот равен 2, затем P2 входит в критический раздел и при выходе из поворота = 3, и, следовательно, P3 выходит из цикла ожидания.

SyncАппаратное обеспечение для хронизации

Иногда проблемы Критического отдела решаются и аппаратно. Некоторый operaСистема ting предлагает функцию блокировки, при которой процесс получает блокировку при входе в критический раздел и снимает блокировку после выхода из него.

Поэтому, когда другой процесс пытается войти в критическую секцию, он не сможет войти, поскольку он заблокирован. Он может сделать это только в том случае, если он свободен путем приобретения самой блокировки.

Мьютексные блокировки

SyncАппаратную хронизацию непросто реализовать для всех, поэтому был также введен строгий программный метод, известный как Mutex Locks.

При таком подходе во входной части кода устанавливается БЛОКИРОВКА критических ресурсов, используемых внутри критической секции. На выходе этот замок снимается.

Семафорное решение

семафор — это просто переменная, которая неотрицательна и распределяется между потоками. Это еще один алгоритм или решение проблемы критического сечения. Это механизм сигнализации и поток, ожидающий семафора, о котором может сигнализировать другой поток.

Он использует два atomic opera1) ожидание и 2) сигнал для процесса syncхронизация.

Пример

WAIT ( S ):
while ( S <= 0 );
S = S - 1;
SIGNAL ( S ):
S = S + 1;

Итого

  • Обработка syncХронизация — это задача координации выполнения процессов таким образом, чтобы ни один процесс не мог иметь доступ к одним и тем же общим данным и ресурсам.
  • Четыре элемента критического раздела: 1) раздел входа 2) критический раздел 3) раздел выхода 4) раздел напоминания
  • Критическая секция — это сегмент кода, к которому может получить доступ сигнальный процесс в определенный момент времени.
  • Три обязательных правила, которые должны соблюдаться критическим разделом: 1) Взаимное исключение 2) Технологическое решение 3) Связанное ожидание
  • Взаимное исключение — это особый тип двоичного семафора, который используется для контроля доступа к общему ресурсу.
  • Технологическое решение используется, когда в критической секции никого нет, а кто-то хочет войти.
  • В решении с ожиданием связанного ожидания после того, как процесс делает запрос на попадание в свою критическую секцию, существует ограничение на количество других процессов, которые могут попасть в свою критическую секцию.
  • Решение Петерсона широко используется для решения проблем критических секций.
  • Проблемы Критического отдела также решаются syncхронизация оборудования
  • SyncАппаратная хронизация не является простым методом, который может реализовать каждый, поэтому был также введен строгий программный метод, известный как Mutex Locks.
  • Семафор — это еще один алгоритм или решение проблемы критической секции.