Процессы в компьютере используют ресурсы, выделяемые им операционной системой. Так как ресурсы не бесконечны, то каждый процесс в определённый момент владеет лишь некоторым количеством ресурсов, так как другие(ресурсы) удерживаются другими процессами. Для завершения задачи необходимо некоторое количество ресурсов, а если такого нет, то возникает тупиковая ситуация. Тупик - момент, когда процессы ожидают высвобождения ресурсов другого процесса и так далее (круг - процесс, квадрат - ресурс).
Из картинки видно, что:
- Процесс P1 ожидает высвобождения ресурса R1.
- Ресурс R1 захвачен (используется) процессом P2.
- Процесс P2 ожидает высвобождения ресурса R2.
- Ресурс P1 захвачен (используется) процессом P1.
Таким образом, граф распределения ресурсов имеет циклическую структуру, что говорит о наличии тупика в системе.
Пример: Пусть в системе имеется 4 ресурса, где каждого в количестве 4 единицы (R1, R2, R3 и R4) и 4 процесса (A, B, C и D).
Задача: иследовать надёжность системы, если имеется следующее потребление ресурсов:
Имеем:
- Процессу A необходимо по 2 ресурса R3 и R4 для завершения;
- Процессу B необходимо также 2 ресурса R3 и R4 для завершения;
- Процессу C необходимо по 2 ресурса R1, R2 и 4 R4 для завершения;
- Процессу D всего 2 ресурса R4.
Всего задействовано по 4 ресурса R1, R2, R3 и 2 ресурса R4. Это значит, что в системе есть резервный ресурс (R4 в количестве 2-ух едениц), который можно "отдать" какому-нибудь процессу для завершения.
Отдадим свободный ресурс процессу D и получим высвобожденные ресурсы: R1-0, R2-0, R3-2, R4 -4. Повторить алгоритм до тех пор, пока это возможно. Результат работы программы.
Возможные результаты программы:
- Перерасход - использование большего количества ресурсов, чем имеется.
- Нехватка ресурсов - тупик.
- Всё хорошо.
kostyaLem