- •Вопрос 1. Что такое ос
- •Вопрос 2. Краткая история эволюции вычислительных систем
- •Вопрос 3. Аппаратное обеспечение компьютера
- •Вопрос 4. Основные понятия, концепции ос
- •Вопрос 5. Архитектурные особенности ос
- •Вопрос 6. Классификация ос
- •Вопрос 7. Системные вызовы
- •Вопрос 8. Процессы
- •Вопрос 9. Потоки
- •Потоки в posix
- •Вопрос 10. Операции над процессами и связанные с ними понятия
- •Набор операций
- •Вопрос 11. Взаимное исключение с активным ожиданием
- •Вопрос 12. Семафоры. Решение проблемы producer-consumer с помощью семафоров
- •Вопрос 13. Мьютексы. Решение проблемы producer-consumer с помощью мьютексов
- •Вопрос 14. Мониторы Мониторы
- •Вопрос 15. Сообщения. Решение проблемы producer-consumer с помощью сообщений
- •Вопрос 16. Барьеры
- •Вопрос 17. Планирование процессов. Категории и задачи планирования
- •18. Алгоритмы планирования в пакетных системах Вытесняющее и невытесняющее планирование
- •Алгоритмы планирования
- •Вопрос 19. Алгоритмы планирования в интерактивных системах
- •Вопрос 20. Планирование потоков
- •Вопрос 21. Задача обедающих философов Постановка задачи
- •Проблемы
- •Решение задачи Официант
- •Иерархия ресурсов
- •Решение на основе монитора
- •Вопрос 22. Задача читателей-писателей
- •Вопрос 23. Понятие взаимоблокировки. Выгружаемый и невыгружаемый ресурс
- •Вопрос 24. Условия возникновения взаимоблокировки. Граф распределения ресурсов
- •2 Моделирование взаимоблокировок
- •Вопрос 25. Поиск взаимоблокировки при использовании одного ресурса каждого типа
- •Вопрос 26. Поиск взаимоблокировки при использовании нескольких ресурсов каждого типа
- •Вопрос 27. Алгоритмы восстановления работоспособности системы после обнаружения взаимоблокировки
- •Вопрос 28. Модель траектории ресурсов при уклонении от взаимоблокировок
- •Вопрос 29. Безопасное и небезопасное состояние при уклонении от взаимоблокировок
- •Вопрос 30. Алгоритм банкира для одного типа ресурса
- •Вопрос 31. Алгоритм банкира для нескольких типов ресурсов
- •Вопрос 32. Алгоритмы предотвращения взаимоблокировки
Решение на основе монитора
Пример ниже показывает решение, где вилки не представляются явно. Философы могут есть, если ни один из их соседей не ест. Аналогично системе, где философы, которые не могут взять вторую вилку, должны положить первую вилку до того, как они попробуют снова.
В отсутствии блокировок, связанных с вилками, философы должны обеспечивать то, что начало принятия пищи не основывается на старой информации о состоянии соседей. Например: Если философ B видит, что A не ест в данный момент времени, а потом поворачивается и смотрит на C, A мог начать есть, пока философ B смотрит на C. Используя одну взаимоисключающую блокировку, можно избежать этой проблемы. Эта блокировка не связана с вилками, но она связана с решением процедур, которые могут изменить состояние философов. Это обеспечивается монитором.
Алгоритм монитора реализует схему «проверить, взять и положить» и разделяет взаимоисключающую блокировку. Заметьте, что философы, желающие есть, не будут иметь вилок.
Если монитор разрешает философу, желающему есть, действовать, то философ снова завладевает первой вилкой, прежде чем взять уже свободную вторую.
По окончании текущего приёма пищи философ оповещает монитора о том, что обе вилки свободны.
Стоит заметить, что этот алгоритм монитора не решает проблемы голодания. Например, философ B может бесконечно ждать своей очереди, если у философов A и C периоды приёма пищи всё время пересекаются. Чтобы гарантировать также, что ни один философ не будет голодать, можно отслеживать, сколько раз голодный философ не ел, когда его соседи положили вилки на стол. Если количество раз превысит некий предел, такой философ перейдёт в состояние Голодания и алгоритм монитора форсирует процедуру завладения вилками, выполняя условие недопущения голодания ни одного из соседей.
Философ, не имеющий возможности взять вилки из-за того, что его сосед голодает, находится в режиме полезного ожидания окончания приёма пищи соседом его соседа. Эта дополнительная зависимость снижает параллелизм. Увеличение значения порога перехода в состояние Голодание уменьшает этот эффект.
Вопрос 22. Задача читателей-писателей
Рассматривается как критический ресурс для всех процессов, т. е. если работает процесс-писатель, то он должен быть единственным активным процессом. Задача состоит в определении структуры управления, которая не приведет к тупику и не допустит нарушения критерия взаимного исключения.
Вопрос 23. Понятие взаимоблокировки. Выгружаемый и невыгружаемый ресурс
Взаимоблокировка процессов может происходить, когда несколько процессов борются за один ресурс.
Ресурсы бывают выгружаемые и невыгружаемые, аппаратные и программные.
Выгружаемый ресурс - этот ресурс безболезненно можно забрать у процесса (например: память).
Невыгружаемый ресурс - этот ресурс нельзя забрать у процесса без потери данных (например: принтер).
Проблема взаимоблокировок процессов возникает при борьбе за невыгружаемый ресурсы.
Условия необходимые для взаимоблокировки:
Условие взаимного исключения - в какой-то момент времени, ресурс занят только одним процессом или свободен.
Условие удержания и ожидания - процесс, удерживающий ресурс может запрашивать новые ресурсы.
Условие отсутствия принудительной выгрузки ресурса.
Условие циклического ожидания - должна существовать круговая последовательность из процессов, каждый, из которого ждет доступа к ресурсу, удерживаемому следующим членом последовательности.