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

Вопрос 29

Вопрос 30

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

  • m - число классов ресурсов

  • n - количество процессов, P1… Pn

  • E = (Е1, Е2, Е3 , …, Еm ) - вектор существующих ресурсов, где

Ei - количество ресурсов класса i,

  • A = (A1, A2, A3 , …, Am ) - вектор доступных ресурсов,

Ai - количество доступных ресурсов класса i,

  • С - матрица текущего распределения R - матрица запросов

Вопрос 31

Предотвращение взаимных блокировок. Алгоритм банкира для одного вида ресурсов.

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

  1. Банкиру поступает запрос от клиента на получение кредита

  2. Банкир проверяет, приводит ли этот запрос к небезопасному состоянию.

  3. Банкир в зависимости от этого дает или отказывает в кредите.

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

Алгоритм банкира для несколько видов ресурсов

Рассмотрим систему:

вектора: E=(6342) - существующие ресурсы P=(5322) - занятые ресурсы A=(1020) - доступные ресурсы

Алгоритм поиска безопасного или небезопасного состояния:

Вопрос 32

Предотвращение взаимных блокировок. Алгоритм банкира для одного вида ресурсов.

То же самое, что и для одного. Если состояние безопасное то ресурс дать можно, если нет то нельзя.

Вопрос 33.

Синхронизирующие объекты ОС: системные семафоры, мьютексы, события, сигналы.

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

Все синхронизирующие объекты могут находиться в двух состояниях:

· сигнальном

· несигнальном (свободном).

Мьютексы

Объекты-взаимоисключения (мьютексы, mutex - от MUTual EXclusion) позволяют координировать взаимное исключение доступа к разделяемому ресурсу. Сигнальное состояние объекта (т.е. состояние "установлен") соответствует моменту времени, когда объект не принадлежит ни одному потоку и его можно "захватить". Предположим, что мьютекс находится в сигнальном состоянии, в этом случае поток тут же становится его владельцем, устанавливая его в несигнальное состояние, и входит в критическую секцию. После того как поток выполнил работу с критическими данными, он «отдает» мьютекс, устанавливая его в сигнальное состояние. Если какой-либо поток ожидает его освобождения, то он становится следующим владельцем этого мьютекса, одновременно мьютекс переходит в несигнальное состояние.

Системные семафоры

Существует еще один метод синхронизации потоков, в котором используются семафорные объекты API. В семафорах применен принцип действия мьютексов, но с добавлением одной существенной детали. В них заложена возможность подсчета ресурсов, что позволяет заранее определенному числу потоков одновременно войти в синхронизуемый участок кода. Для создания семафора используется функция CreateSemaphore