Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_Drobin_doc.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.87 Mб
Скачать
  1. Проблемы синхронизации процессов. Понятие критической секции. Блокирующие переменные. Семафоры.

Проблемы синхронизации:

  • Взаимодействие процессов;

  • Гонки – два или более процессов обрабатывают разделяемые данные, и конечный результат зависит от соотношения скоростей процессов.

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

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

  • Запрет прерываний (---)

  • Блокирующие переменные (р3)

  • Ресурс свободен – ни один процесс не находится в данный момент в критической секции, связанной с данным ресурсом

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

  • Недостаток – опрос блокирующей переменной.

Семафор – переменная определенного типа, которая может принимать целочисленные неотрицательные значения. Для работы с семафорами вводятся два примитива, обозначаемые P(S) и V(S), где S – семафор. Семафорный механизм работает по схеме, в которой сначала исследуется состояние критического ресурса, а затем уже осуществляется допуск к критическому ресурсу или отказ от него на некоторое время.

Классическое определение этих операций:

P(S): пока S == 0, процесс блокируется;

S = S - 1;

V(S): S = S + 1;

При выполнении операции P над семафором S сначала проверяется его значение.

Если S > 0, то из S вычитается 1. Если S = 0, то процесс блокируется до тех пор, пока S не станет > 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1.

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

Операция P(S) проверяет текущее значение семафора S, и если оно меньше нуля, то осуществляется переход к следующей за примитивом операции, иначе процесс снимается с выполнения и переводится в состояние «пассивного ожидания».

В этом состоянии ожидающий процесс не проверяет семафор непрерывно, поэтому на процессоре может выполняться другой процесс.

Операция V(S) связана с увеличением значения семафора на единицу и переводом одного или нескольких процессов в состояние готовности к выполнению.

Операции P(S) и V(S) выполняются операционной системой в ответ на запрос, выданный некоторым процессом и содержащий имя семафора в качестве параметра.

  1. Тупики. Распознавание и предотвращение тупиков. Восстановление системы из состояния дедлока.

Проблема тупиков:

  • Взаимная блокировка нескольких процессов (р8)

  • Предотвращение тупиков

  • Распознавание тупиков

  • Восстановление системы после тупиков

Тупик (deadlock) – множество заблокированных процессов, каждый из которых владеет некоторым ресурсом и ожидает ресурса, которым владеет какой-либо другой процесс из этого множества.

Методы распознавания тупиков:

  • Анализ таблиц распределения ресурсов;

  • Анализ таблиц запросов к занятым ресурсам

Предотвращение тупиков:

  • На стадии написания программы (запросы в одинаковой последовательности).

  • Динамически – использование определенных правил при назначении ресурсов процессам, например, определенная последовательность, общая для всех процессов.

  • ОС анализирует мультипрограммную смесь при запуске потока.

Восстановление системы из состояния дедлока. Алгоритмы выхода из тупика – постепенный перевод процессов в область свопинга (образы пассивных процессов, для размещения которых нет места в RAM, располагаются в специально отведенной области внешней памяти, называемой областью свопинга); откаты до контрольной точки (контрольные точки расставляются в тех местах, после которых возможно возникновение тупика).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]