Політика очищення сторінок
Краще завжди тримати в запасі вільні блоки, звільняючи їх заздалегідь, ніж при нестачі пам'яті, шукати і звільняти їх.
Сторінковий демон - програма, періодично перевіряє стан пам'яті, якщо зайнято багато блоків, то виробляє вибіркову вивантаження сторінок.
В UNIX системах послідовність запуску процесів, наступна:
процес 0 - це свопер
процес 1 - це init
процес 2 - це сторінковий демон
Сторінковий демон прокидається кожні 250мс, і перевіряє кількість вільних сторінкових блоків, якщо їх менше 1/4 пам'яті, то він починає вивантажувати сторінки на диск. Він використовує модифікований алгоритм годин, і він є глобальним (тобто він не розрізняє, якому процесу належить сторінка).
Кожні кілька секунд свопер перевіряє, чи є на диску готові процеси для завантаження в пам'ять для виконання. При цьому сам код програми в своп-файлі не зберігається, а підкачуються безпосередньо з файлу програми.
У LUNIX системі нетпредварітельной завантаження сторінок і концепції робочого набору.
Тексти програм і відображаються файли завантажуються прямо з файлів розташованих на диску.
Все інше вивантажується в розділ свопінгу або файли свопінгу (їх може бути від 0 до 8).
Алгоритм вивантаження сторінок заснований на сторінковому демона (kswapd), він активізується раз в секунда і перевіряє чи достатньо вільних сторінок. Демон може бути активізований і примусово, при не хватці пам'яті.
Демон складається з трьох процедур:
· У першій використовується алгоритм годин, вона шукає рідко використовуються сторінки сторінкового кешу і буферного кешу файлової системи.
· Друга процедура шукає спільно рідко використовуються сторінки.
· Третя шукає рідко використовуються сторінки одиночних користувачів. Спочатку скануються сторінки у того процесу, у якого їх найбільше.
В LINUX є ще один демон - bdflush. Він регулярно прокидається і перевіряє, чи не перевищила чи певне значення кількість змінених сторінок, якщо так то він починає їх примусово зберігати на диск.
7.4 Особливості реалізації в Windows
Сторінки мають фіксований розмір (на процесорах Pentium 4 Кбайт, на Itanium 8 або 16 Кбайт) і завантажуються на вимогу.
Білим кольором виділені області приватних даних процесу.
Затемнені області, спільно використовуються усіма процесами.
Системні дані містять покажчики і таймери, доступні на читання іншим процесам.
Відображення верхній частині на пам'ять ядра, дозволяє при перемиканні потоку в режим ядра не змінювати карту пам'яті.
У сторінок є три стани:
· Вільне - не використовується
· Фіксоване - дані відображені в сторінці
· Зарезервоване - зарезервовано, але не зайнято даними (при створенні потоку)
Файли свопинга може бути до 16, розділів свопінгу немає. У файлах свопинга зберігаються тільки змінювані сторінки.
Випереджальна підкачка в Windows не використовується.
У Windows використовується поняття робочий набір.
Сторінковий демон в Windows складається з:
· Менеджера балансового безлічі - перевіряє, чи достатньо вільних сторінок.
· Менеджера робочих наборів - який досліджує робочі набори і звільняє сторінки.
Також в Windows є такі демони:
· Демон записи відображених сторінок - запис в відображені файли
· Демон записи модифікованих сторінок