logo
СПЗ_лекції

8. Уникнення взаємоблокувань шляхом порушення умов їх здійснення

Якщо в системі немає ресурсів, які відданні в одноосібне користування одному процесу, то система не попаде в тупік. Але якщо дозволити двом процесам одночасно друкувати данні на прінтері, то відбудеться змішування інформації. Використовуючи підкачку результуючих даних для друку, декілька процесів можуть одночасно генерувати результуючі дані (спулінг-підкачка). В такій моделі тільки один процес, який фактично вимагає фізичного принтера, є демоном принтера (схована від користувача службова програма, що працює в фоновому режимі). Оскільки ця програма не потребує інших ресурсів, то для прінтера тупіки виключаються.

Якщо процеси, що займають деякі ресурси, вберегти від очікування решти ресурсів, то зникає ситуація взаємоблокування. Один з способів досягнення цієї мети полягає у вимозі: будь-який процес повинен вимагати всі необхідні ресурси до початку роботу. Якщо всі ресурси доступні, то процес отримує все, що йому потрібно; якщо один або декілька ресурсів зайняті, то процесу потрібно чекати.

Хоча є ще такий метод: процес, що потребує ресурсу, повинен спочатку вивільнити всі решту ресурсів.

Систематизація ресурсів за допомогою їх нумерації усуває проблему взаємоблокувань, але бувають ситуації, коли неможливо знайти порядок, що задовільняє всіх. Коли ресурси включають в себе області таблиці процесів, дисковий простір для підкачки даних, закриті записи бази даних і інші абстрактні ресурси, число потенційних ресурсів і варіантів їх застосувань може бути досить великим, що жодна систематизація не зможе працювати.