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