Поняття робочого набору. Модель робочого набору

Для того щоб коректно керувати резидентною множиною процесу, необхідно знати той набір сторінок, який йому знадобиться під час виконання. Звичайно, у повному обсязі таке знання реалізоване бути не може, бо це вимагає вміння вгадувати майбутнє. Спроби оцінити потрібний процесу набір сторінок, ґрунтуючись на особливостях використання сторінок у недалекому минулому, привели до концепції робочого набору (working set).

Найважливішою характеристикою цього підходу є інтервал часу довжиною Т, який відлічують від поточного моменту часу назад. Якщо Т вимірюють у секундах, то цей інтервал визначає останні Т секунд виконання процесу і задає вікно робочого набору. Ширину вікна завжди залишають постійною, а межі його зсуваються із часом; верхньою межею завжди є поточний момент часу, а нижньою – поточний момент мінус Т.

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

Рис. 9.8. Робочий набір процесу

Розглянемо, як можна використати концепцію робочого набору.

Виділяючи пам’ять, можна дати кожному процесові стільки сторінок, щоб у них помістився його робочий набір.

У разі заміщення сторінок можна вибирати для заміщення переважно ті сторінки, що не належать до робочого набору.

Під час планування процесів можна не ставити процес на виконання доти, поки всі сторінки його робочого набору не опиняться у пам’яті.

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

Головним недоліком моделі робочого процесу є складність реалізації. Вона пов’язана насамперед із тим, що вікно робочого процесу постійно переміщується, нові сторінки постійно додають у нього, старі – вилучають. Іншим недоліком є складність вибору величини Т (звичайно її підбирають емпірично) і складність організації робочого набору при спільному використанні сторінками різних процесів.

Наведемо один із варіантів реалізації моделювання робочого набору. Із кожним фреймом пов’язують спеціальну характеристику – час простою (idle time). За перериванням від таймера перевіряють, чи встановлено біт R, якщо так, час простою і біт R обнулюють (сторінку залишають у робочому наборі), якщо ні, проміжок часу між скануваннями сторінок додають до часу простою. Коли час простою перевищує Т, сторінку виключають із робочого набору. У реальних системах значення Т перебуває в межах хвилини.

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

9.7.4. Практичні аспекти боротьби з пробуксовуванням

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

У комп’ютерах зараз встановлюють більше основної пам’яті, тому потреба у підкачуванні знижується, а сторінкові переривання трапляються рідше.

Оскільки процесори стають швидшими, процеси виконуються із більшою швидкістю, раніше вивільняючи зайняту пам’ять.

Хоча в системі завжди є процеси, які можуть використати всю доступну пам’ять, кількість процесів, яким достатньо виділеної пам’яті, у середньому збільшується.

Фактично, найдієвіший спосіб боротьби із пробуксовуванням полягає у придбанні та встановленні додаткової основної пам’яті.

9.8. Реалізація віртуальної пам’яті в Linux

У цьому розділі розглянемо особливості керування пам’яттю Linux. Виклад торкатиметься архітектури ІА-32 і версії ядра 2.4.20.