Сложность восстановления системы, т.е. вывода из тупика обуславливается рядом факторов:
1.В первый момент вообще может быть неочевидно, что система попала в тупиковую ситуацию.
2.В большинстве систем нет достаточно эффективных средств, позволяющих приостановить процесс на неопределенно долгое время, вывести его из системы и возобновить его выполнение впоследствии. В действительности некоторые процессы, например процессы реального времени, должны работать непрерывно и не допускают приостановки и последующего возобновления.
3.Если даже в системе существуют средства приостановки/возобновления процессов, то их использование требует, как правило значительных затрат машинного времени, а также внимания высококвалифицированного оператора, а его может и не быть.
4.Крупный тупик с участием десятков или даже сотен процессов может потребовать громадной работы.
В современных системах восстановление после тупиков обычно выполняется путем принудительного вывода некоторого процесса из системы, чтобы модно было использовать его ресурсы. Этот выведенный процесс обычно теряется, однако теперь остальные процессы получают возможность завершить свою работу. Процессы могут выводиться из системы в соответствии с некоторой приоритетностью. Здесь мы сталкиваемся с несколькими трудностями:
1.Процессы, вовлеченные в тупиковую ситуацию, могут не иметь конкретных приоритетов, так что оператору придется принимать произвольное решение.
2.Значения приоритетов могут нарушаться из-за определенных соображений, например в случае планирования по конечному сроку некоторый процесс с низким приоритетом временно получает высокий приоритет ввиду приближающегося конечного срока.
3.Чтобы оптимально определить, какой из процессов следует вывести из системы, могут потребоваться значительные усилия.
В будущих системах тупики станут в гораздо большей мере критическим фактором по причинам:
1.Системы будут в гораздо большей степени ориентированы на асинхронную параллельную работу.
2.В системах будет реализовано преимущественно динамическое распределение ресурсов. Процессы получат возможность свободно захватывать и освобождать ресурсы по мере необходимости.
3.Среди разработчиков ОС растет тенденция рассматривать данные как ресурс, и в связи с этим количество ресурсов, которыми должны будут управлять ОС, резко увеличиться.
Таким образом, в будущих вычислительных машинах ответственность за распределение ресурсов с недопущением тупиков будет ложиться на ОС.