РАЗРЕШЕНИЯ ВЗАИМОБЛОКИРОВОК
У каждой стратегии разрешения взаимоблокировок есть свои достоинства и недостатки, а потому наиболее эффективным путем может оказаться применение разных подходов в различных ситуациях. В работе [SILB98] предлагается следующий подход к данной проблеме.
Сгруппировать ресурсы в несколько различных классов.
Для предотвращения взаимоблокировок между классами ресурсов использовать описанный ранее метод упорядочения типов ресурсов.
В пределах одного класса ресурсов использовать наиболее подходящий для
данного типа ресурсов алгоритм.
В качестве примера такой методики рассмотрим следующие классы ресурсов.
Пространство подкачки. Блоки памяти на вторичных устройствах хранения
информации, используемые при свопинге процессов.
Ресурсы процесса. Назначаемые устройства, такие, как стримеры или файлы.
Основная память. Страницы или сегменты, назначаемые процессу.
Внутренние ресурсы. Такие ресурсы, как, например, каналы ввода-вывода.
Порядок перечисления ресурсов в приведенном списке представляет собой порядок их выделения. Этот порядок обосновывается обычной последовательностью действий процесса. В пределах каждого класса ресурсов могут использоваться следующие стратегии.
Пространство подкачки. Предотвращение взаимоблокировок с помощью
требования, чтобы все ресурсы распределялись одновременно. Такая стратегия вполне применима, если известны максимальные требования (что за
частую выполняется на практике). Можно также использовать стратегию
устранения взаимоблокировок.
Ресурсы процесса. В этой категории ресурсов зачастую наиболее эффективным является использование стратегии устранения взаимоблокировок, поскольку можно ожидать, что процесс заранее объявит о требуемых ему ресурсах этого типа. Кроме того, можно использовать предотвращение взаимоблокировок путем упорядочения ресурсов в пределах данного класса.
Основная память. Пожалуй, наиболее подходящим методом предотвращения взаимоблокировок в этом случае может оказаться перераспределение
ресурсов. Процесс, ресурсы которого перераспределяются, просто сбрасывается на вторичные устройства хранения информации, освобождая основную
память для разрешения взаимоблокировки.
Внутренние ресурсы. Можно использовать предотвращение взаимоблокировок путем упорядочения ресурсов в пределах данного класса.