Управління кількістю сторінок, виділеною процесу. Модель робочої множини

У стратегіях заміщення, розглянутих в попередньому розділі, простежується припущення про те, що кількість кадрів, що належать процесу, не можна збільшити. Це приводить до необхідності виштовхування сторінки. Розглянемо більш загальний підхід, що базується на концепції робочої множини, сформульованою Деннінгом [Denning, 1996].

Отже, що робити, якщо у розпорядженні процесу є недостатнє число кадрів? Чи потрібно його припинити із звільненням всіх кадрів? Що слід розуміти під достатньою кількістю кадрів?

 

Трешинг (Thrashing)

Хоча теоретично можливо зменшити число кадрів процесу до мінімуму, існує якесь число активно використовуваних сторінок, без якого процес часто генерує page faults. Висока частота сторінкових порушень називається трешинг (thrashing, іноді уживається російський термін "пробуксувала", див. мал. 10.3). Процес знаходиться в змозі трешинга, якщо при його роботі більше часу йде на підкачку сторінок, ніж на виконання команд. Такого роду критична ситуація виникає незалежно від конкретних алгоритмів заміщення.

Рис. 12.3. Частота page faults залежно від кількості кадрів, виділених процесу

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

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

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

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

Для запобігання трешинга потрібно виділяти процесу стільки кадрів, скільки йому потрібно. Hо як дізнатися, скільки йому потрібно? Необхідно спробувати з'ясувати, як багато кадрів процес реально використовує. Для вирішення цього завдання Деннінг використовував модель робочої множини, яка заснована на застосуванні принципу локальності.