Управление процессами. Тупики

Контрольные вопросы

Эквивалентность семафоров, мониторов и сообщений

Сообщения

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

send(P, message) – послать сообщение message процессу P;

receive(Q, message) – получить сообщение message от процесса Q.

В случае непрямой адресации будем обозначать их так:

send(A, message) – послать сообщение message в почтовый ящик A;

receive(A, message) – получить сообщение message из почтового ящика A.

Примитивы send и receive уже имеют скрытый механизм взаимоисключения. Более того, в большинстве систем они уже имеют и скрытый механизм блокировки при чтении из пустого буфера и при записи в полностью заполненный буфер. Реализация решения задачи производитель-потребитель для таких примитивов становится очень простой. Несмотря на простоту использования, передача сообщений в пределах одного компьютера происходит существенно медленнее, чем работа с семафорами и мониторами.

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

1) Дайте определение детерминированного и недетерминированного набора команд, приведите пример

2) Дайте определение критической секции

3) Приведите структуру процесса, участвующего во взаимодействии с другими процессами, с использованием критической секции

4) Приведите требования, предъявляемые к алгоритмам взаимоисключений

5) Опишите алгоритм взаимоисключений «запрет прерываний»

6) Приведите алгоритм взаимоисключений «переменная-замок»

7) Приведите алгоритм взаимоисключений «строгое чередование»

8) Приведите алгоритм взаимоисключений «Флаги готовности»

9) Приведите алгоритм взаимоисключений Петерсона

10) Приведите алгоритм взаимоисключений булочной

11) Опишите функцию Test-and-Set для поддержки взаимоисключений

12) Опишите функцию Swap для поддержки взаимоисключений

13) Приведите концепцию семафоров

14) Приведите решение проблемы производитель-потребитель с помощью семафоров

15) Приведите структуру монитора

16) Приведите концепцию мониторов к решению задачи производитель-потребитель

17) Опишите сообщения


На лекции рассматриваются следующие вопросы:

1) Введение в тупики

2) Концепция ресурса

3) Условия возникновения тупиков

4) Основные направления борьбы с тупиками

5) Алгоритм страуса

6) Обнаружение тупиков

7) Восстановление после тупиков (восстановление при помощи перераспределения ресурсов, восстановление через откат назад, восстановление через ликвидацию одного из процессов)

8) Способы предотвращения тупиков путем тщательного распределения ресурсов (предотвращение тупиков и алгоритм банкира, недостатки алгоритма банкира)

9) Предотвращение тупиков за счет нарушения условий возникновения тупиков (нарушение условия взаимоисключения, нарушение условия ожидания дополнительных ресурсов, нарушение принципа неперераспределяемости, нарушение условия кругового ожидания)

10) Проблемы аналогичные тупикам (двухфазная локализация, тупики не ресурсного типа, голод)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: