Нескінченне відкладання
Процеси, чекаючі ресурсів, встають в черзі до цих ресурсів. Така черга може обслуговуватися будь-якою невитісняючою стратегією планування. Моментом, коли менеджер ресурсу ухвалює рішення про обслуговування, є звільнення ресурсу.
Єдиною дисципліною, яка гарантує, що всі процеси в черзі будуть врешті-решт обслужені, є FCFS. Інші методи базуються на пріоритетах - зовнішніх або обчислюваних на підставі розміру запиту или/и безпеки ситуації. Черга може бути впорядкована за збільшенням розміру запиту, і при звільненні ресурсів останні можуть віддаватися по запиту "самого відповідного" розміру. Черга може бути впорядкована в порядку зростання небезпеки виділення ресурсів, і ресурс, що звільнився, може віддаватися тому процесу, запит якого найбезпечніший. При впорядкуванні черги, процес, що видав найбільший або найнебезпечніший запит, може надовго в ній застрягти, тобто, потрапити в ситуацію нескінченного відкладання. З іншого боку, застосування FCFS в чистому вигляді може привести до зниження рівня мультипрограмування, до небезпечного стану і навіть до тупиків - якщо процес з дуже великим запитом виявиться першим в черзі. Частково ця суперечність може бути згладжене, якщо ми допустимо часткове виділення ресурсів: запит, що стоїть в черзі першим отримує стільки ресурсів, скільки йому можна виділити, зберігаючи ситуацію безпечною, останні - віддаються наступному в черзі процесу.
Оскільки тупикова ситуація небезпечніша, ніж нескінченне відкладання, ОС все ж таки віддає перевагу критеріям безпеки, отже, свідомо запобігти нескінченному відкладанню неможливо. Нескінченне відкладання процесу встановлюється за часом його перебування в черзі: якщо процес перебуває в черзі довше за деякий встановлений час, то вважається, що він чекає нескінченно. Залежно від політики ОС відносно справедливості обслуговування і від характеристик процесу (якщо вони відомі) допустимий час очікування може встановлюватися великим або меншим. Якщо ж нескінченне відкладання встановлене, то для його ліквідації ОС припиняє видачу ресурсів новим процесам, поки не буде обслужений відкладений процес.
Проблема тупиків до деякої міри втрачає актуальність в сучасних ОС, оскільки вони мають тенденцію до зменшення кількості ресурсів, що не розділяються. Одним із способів зробити пристрій, що не розділяється, таким, що розділяється є буферизація, яку ми розглянемо в наступному розділі. Системні структури даних розділяються з використанням засобів взаємного виключення доступу, яким буде присвячений розділ 8. Ця проблема, проте, стає все більш актуальною для сучасних СУБД, які забезпечують одночасний доступ до ресурсів-даних для тисяч і десятків тисяч користувачів.
Файлові системи
Дата добавления: 2016-07-27; просмотров: 1277;