Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО 2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
97.96 Кб
Скачать

1. Требования, предъявляемые к алгоритмам организации взаимодействия процессов.

Требования:

  1. Условие взаимоисключения

  2. Условие конечного ожидания: Процесс кот. Необходимо войти в критическую секцию должен получить возможность сделать это в конечное время.

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

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

Эпилог – действие, кот разрешают доступ в критическую секцию для других процессов.

  1. Алгоритм синхронизации должен быть реализован на обычном процессоре с обычным набором команд.

2. Способы реализации взаимного исключения: запрещение прерываний

В качестве пролога мы запрещаем прерывание, а в качестве эпилога – разрешаем его.

Достоинства: простота

Недостатки:

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

  2. В критической секции процессу не доступны прерывания, что ограничивает его функциональность.

3. Способы реализации взаимного исключения: переменная-замок

Переменнаяlok=0

While (true)

{

While(lok)

Lok=1

Критическая секция

Lok=0

Рабочая секция (remaindersection)

Достоинство – простота.

Недостатки:

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

  2. Нарушение условия взаимоисключения вызваннымнеатомарностью пролога. Если после выполнения проверки при открытом замке квант времени заканчивается, то процесс прекращает выполнение до того как закроет замок. Другой процесс находясь в своем прологе также видит открытый замок и переходит к его закрытию и к критической секции после чего в свой квант времени 1-ый процесс закрывает замок и входит в критическую секцию. Результат – 2 раза закрытый замок и 2 процесса в критической секции.

4. Способы реализации взаимного исключения: строгое чередование

Sharedintturn=0; //предполагается, что есть 2 идентификатора со значениями 0 и 1

While (true) {

While (turn!=id); // id=0 и id=1 – идентификатор процесса

Critical sect.

Turn=1-turn;

Remainder sect.

}

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

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

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