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


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


Download 30.76 Kb.
bet2/3
Sana19.06.2023
Hajmi30.76 Kb.
#1612174
TuriЗадача
1   2   3
Bog'liq
pandia

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


В критическом разделе должны соблюдаться все три правила:

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

  • Прогресс: это решение используется, когда никто не находится в критическом разделе, и кто-то хочет войти. Тогда эти процессы, не входящие в их раздел напоминания, должны решить, кто должен войти, за конечное время.

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

Решения для критического раздела


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

Peterson Solution


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

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. Например, если Pi хочет войти, он установит FLAG [i] = TRUE.

  • Другая переменная с именем TURN указывает номер процесса, который в настоящее время ожидает ввода в CS.

  • Процесс, который входит в критическую секцию при выходе, изменит ОБОРОТ на другой номер из списка готовых процессов.

  • Пример: поворот равен 2, затем P2 входит в критическую секцию и при выходе из хода = 3, и, следовательно, P3 выходит из цикла ожидания.

Download 30.76 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling