У інформатиці конкуренція за ресурси — це конфлікт щодо доступу до спільного ресурсу, такого як оперативна пам'ять, дискова пам'ять, кеш-пам'ять, внутрішні шини або зовнішні мережеві пристрої. Ресурс, щодо якого постійно виникає конкуренція, можна описати як перевантажений.
Розв'язання проблем конкуренції за ресурси є однією з основних функцій операційних систем. Для сприяння цьому можуть використовуватися різні низькорівневі механізми, зокрема блокування, семафори, м'ютекси та черги. Інші методи, які можуть застосовувати операційні системи, включають інтелектуальне планування, рішення щодо розподілу застосунків і розфарбовування сторінок.
Доступ до ресурсів також іноді регулюється за допомогою чергування; у випадку обчислювального часу на CPU керівний алгоритм черги завдань називається планувальником.
Нездатність належним чином розв'язати проблеми конкуренції за ресурси може призвести до низки проблем, зокрема взаємного блокування, живого блокування та витіснення.
Конкуренція за ресурси виникає, коли кілька процесів намагаються використовувати один і той самий спільний ресурс. Доступ до областей пам'яті часто контролюється семафорами, що може призвести до патологічної ситуації, яка називається взаємним блокуванням, коли різні потоки або процеси намагаються виділити ресурси, які вже виділені один одним. Взаємне блокування зазвичай призводить до того, що програма стає частково або повністю невідповідною на запити.
Останніми роками дослідження конкуренції дедалі більше зосереджуються на ресурсах у ієрархії пам'яті, наприклад кешах останнього рівня, передній шині та з'єднанні з роз'ємом пам'яті.
Див. також Когерентність кеша Розподіл ресурсів
Примітки