Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
11
Добавлен:
10.12.2018
Размер:
507.9 Кб
Скачать
  1. Проблема «Производитель-потребитель». Общие семафоры.

Взаимодействие параллельных процессов основано на решении трех проблем:

1. Синхронизация 2-х и более процессов

2. Проблема «производитель - потребитель»

3. Проблема взаимных блокировок

Проблема «производитель - потребитель» возникает при взаимодействии асинхронных параллельных процессов, использующих потребляемые («расходуемые») ресурсы.

Все ресурсы вычислительной системы делятся на 2 типа:

  • SR – повторно используемые (все аппаратный ресурсы (устройства, каналы сязи, память), преоперабельные процедуры, неизменяемые ресурсы структуры данных - после использования возвращаются в систему в неизменном виде).

  • CR потребляемые (изменяемые структуры данных и процедуры, а также все сообщения и сигналы, информационные ресурсы, программные, т.е. не могут возвратиться с систему в неизменном виде).

SR ресурсы: после освобождения процессом возвращаются в систему в неизменном виде для дальнейшего использования.

СR ресурсы: не возвращаются в систему или возвращаются в изменённом виде

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

Данная проблема решается с помощью общих семафоров.

Общий семафор – целочисленная переменная, принимающая значения 0 ≤ x ≤ n.

Операции определенные над семафорами.

P(x)

x-1, если x > 0

0, если x = 0 – перевод процесса в режим ожидания (уменьш. на 1)

V(x)

x+1, если x < n (увелич. на 1)

x, если x = n

Процесс-производитель перед генерацией CR-ресурса выполняет над общим семафором V операцию, а процесс-потребитель – P операцию. Т.о. осуществляется их синхронизация. Если семафор закрыт, то процесс производитель приходит в состояние ожидания. Общий семафор имеет физический смысл:

  1. Проблема взаимных блокировок (тупиков).

- Статические (анализ текста программы).

- Динамические

  • Обнаружение с последовательным выходом из тупика

      • Прекращение: 1)Ручной выход; 2)Автоматический

    • Перехват ресурсов

  • Методы предотвращения

    • Метод упорядоченных классов

    • Алгоритм банкира

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

Методы предотвращения – используются в системах, где недопустимо возникновение тупиковых ситуаций. В настоящее время эти методы представлены в основном методом упорядочивания классов (предварительно распределения всех ресурсов системы по классам). Каждому такому классу ставится в соответствие вес от 1 до N и любой процесс может получить ресурс класса L, только если до этого он получит все ресурсы класса L-1. Процессам навязывается порядок использования ресурсов системы. Это приводит к тому, что в графе состояния системы никогда не может возникнуть цикла, т.е. по теореме о тупике система никогда не войдёт в тупиковое состояние. Недостатки: навязывание процессам жесткого порядка в использовании ресурсов, что снижает эффективность системы в целом. Используется в системах с достаточным количеством ресурсов, в которых допустимо плавное снижение эффективности.

Прекращение процессов

- с ручным выходом: ограниченное количество ресурсов, в которых можно найти косвенные критерии попадания системы в тупик (например, существенное увеличение времени выполнения процесса)

- с автоматическим выходом: в системах с большим числом параллельных процессов и ресурсов, и в которых невозможно определить косвенный критерий.

Минимальная цена выхода (Прекращение процессов с автоматическим выходом)

Р1 С1

……….

Рn Сn

Pn – параллельные процессы

Cn – цена, внешняя, динамически назначаемая.

Цена отображает ценность процесса.

Затем формируется шкала цен для всех процессов и всех сочетаний.

Р1 + Р2  С1 + С2

…………………..

Полученная шкала сортируется по возрастанию.

Алгоритм

  1. Если система находится в тупиковом состоянии, то в шкале цен помечаются процессы, входящие в тупиковое множество.

  2. Моделируется состояние системы, если прекратить процесс с минимальной ценой.

  3. Затем снова анализируется граф состояний. Если система выходит из тупика – алгоритм заканчивается, и выдаётся команда на прекращение процесса.

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

Алгоритм банкира: в алгоритме Банкира (на основе априорной информации о процессах и ресурсах) перед выполнением каждой элементарной операции (операция запроса на ресурс SR типа, CR типа или освобождения ресурса CR типа) проверяется новое состояние системы.

В случае удовлетворения этого запроса - если состояние безопасное, то запрос удовлетворяется, в противном случае - нет.

Все состояния системы делятся на три категории:

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

Опасными (ОС) считаются состояния, из которых возможен переход в тупиковое состояние.

Из тупикового (ТС) состояния невозможен переход ни в какое другое состояние.

В алгоритме реализована стратегия принятия решения о предоставлении ресурса по запросу только если система после удовлетворения запроса продолжает оставаться в опасном состоянии. Основой для принятия решений в алгоритме Банкира является анализ информации о максимальной потребности процессов в каждом из процессов системы.

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

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

Алгоритм банкира состоит из двух частей:

  1. Первая часть определят тип будущего состояния (удовлетворение запроса на ресурс).

  2. Вторая часть принимает решения и корректирует (модель определение типа состояния).

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