В информатике конкуренция за ресурсы — это конфликт за доступ к общему ресурсу, такому как оперативная память , дисковое хранилище , кэш-память , внутренние шины или внешние сетевые устройства. Ресурс, испытывающий постоянную конкуренцию, можно описать как переподписанный .
Разрешение проблем с конкуренцией ресурсов является одной из основных функций операционных систем . Для этого могут использоваться различные низкоуровневые механизмы, включая блокировки , семафоры , мьютексы и очереди . Другие методы, которые могут применяться операционными системами, включают интеллектуальное планирование, решение о сопоставлении приложений и раскраску страниц . [1] [2]
Доступ к ресурсам иногда также регулируется очередями; в случае вычислительного времени на ЦП управляющий алгоритм очереди задач называется планировщиком .
Неспособность правильно разрешить проблемы с конкуренцией за ресурсы может привести к ряду проблем, включая взаимоблокировку , непрерывную блокировку и пробуксовку .
Конфликт ресурсов возникает, когда несколько процессов пытаются использовать один и тот же общий ресурс. Доступ к областям памяти часто контролируется семафорами, что допускает патологическую ситуацию, называемую взаимоблокировкой, когда разные потоки или процессы пытаются выделить ресурсы, уже выделенные друг другу. Взаимная блокировка обычно приводит к тому, что программа становится частично или полностью неотзывчивой.
В последние годы исследования по этому вопросу больше фокусируются на ресурсах в иерархии памяти , например, кэшах последнего уровня, системной шине, подключении сокетов памяти. [ необходима ссылка ]