Чтобы определить тупик, сначала я бы определил процесс.
Процесс : Как мы знаем, процесс - это не что иное, как program
в исполнении.
Ресурс : Для выполнения процесса программы требуются некоторые ресурсы. Категории ресурсов могут включать память, принтеры, процессоры, открытые файлы, ленточные накопители, компакт-диски и т. Д.
Deadlock : Deadlock - это ситуация или условие, когда два или более процессов удерживают некоторые ресурсы и пытаются получить дополнительные ресурсы, и они не могут освободить ресурсы до тех пор, пока не завершат работу. там исполнение.
Состояние или ситуация тупика
На приведенной выше схеме есть два процесса P1 и p2 , и есть два ресурса R1 и R2 .
Ресурс R1 выделяется процессу P1 , а ресурс R2 выделяется процессу p2 .
Для завершения процесса P1 необходим ресурс R2 , поэтому P1 запрос на R2 , но R2 уже выделено на P2 .
Таким же образом Процесс P2 для завершения своего выполнения требует R1 , но R1 уже выделен для P1 .
оба процесса не могут освободить свой ресурс до тех пор, пока не завершат свое выполнение. Так что оба ждут других ресурсов и будут ждать вечно. Так что это DEADLOCK Условие.
Для возникновения тупика должны быть выполнены четыре условия.
- Взаимное исключение - Каждый ресурс в настоящее время либо выделен ровно одному процессу, либо он доступен. (Два процесса не могут
одновременно контролировать один и тот же ресурс или быть в их критическом
раздел).
- Hold and Wait - процессы, в настоящее время хранящие ресурсы, могут запрашивать новые ресурсы.
- Без выгрузки - Если процесс удерживает ресурс, он не может быть удален другим процессом или ядром.
- Циклическое ожидание - Каждый процесс ожидает получения ресурса, который удерживается другим процессом.
и все эти условия выполняются на диаграмме выше.