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

Процессы называются параллельными, если они существуют одновременно. Они могут быть либо независимыми, либо асинхронными (периодически синхронизироваться и взаимодействовать). Если какие-то операции можно выполнять || логически, то принципиально возможно выполнять их и физически. Отлаживать || алгоритмы сложнее, как и доказать их корректность.

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

Критическая секция – часть программы, исполнение которой может привести к возникновению «гонок» (Racing congition).

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

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

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

Требования, предъявляемые к алгоритмам:

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

2. нет предположений об относительных скоростях выполнения или| числе процессов

3. если процесс находится в своем критическом участке, то все другие процессы находятся всне своих критических участков

4. процессы, находящиеся вне своих критических участков, не могут препятствовать другим процессам входить в свои критические участки

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

5. нет бесконечного откладывания момента входа процесса в свой критический участок – условие ограниченного ожидания

Семафоры – механизм синхронизации поведения процессов.

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

P и V - атомарные операций (проверка и увеличение соответственно)

S – семафор – переменная целого типа

P(s) (операция Р над семафором s): если s>0, тогда (s:=s-1) иначе (ожидать на s). Процесс блокируется как только s=1.

V(s) (операция V над семафором s): сводится к увеличению s на 1, если (один или более процессов ожидают на s), тогда (разрешить одному из них продолжить работу), иначе (s:=s+1).

Очередь процессов обслуживается в соответствии с правилом FIFO. Участки взаимоисключения по семафору s в процессах обрамляются операциями P(s) и V(s). Если одновременно несколько процессов пытаются выполнить P(s), то это будет разрешено только одному, остальные будут ждать.

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

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