
- •Лекція №10 Управління пам'яттю
- •10.1. Основні поняття і вимоги до управління пам'яттю
- •10.1.1. Переміщення
- •10.1.2. Захист
- •10.1.3. Спільне використання
- •10.1.4. Типи адрес
- •10.2. Розподіл пам'яті без використання дискового простору
- •10.2.1. Розподіл пам'яті фіксованими розділами
- •10.2.2. Динамічний розподіл пам'яті
- •10.2.3. Переміщувані розділи
- •10.2.4. Система двійників
- •10.3. Розподіл пам'яті з використанням дискового простору
- •10.3.1. Поняття віртуальної пам'яті
- •10.3.2. Сторінковий розподіл
- •10.3.3. Сегментний розподіл
- •10.3.4. Сторінково-сегментний розподіл
- •10.3.5. Свопінг
- •10.3.6. Стратегії управління сторінковою пам'яттю
- •10.4. Основні алгоритми заміщення сторінок
- •10.4.1. Оптимальний алгоритм (opt)
- •10.4.2. Виштовхування найдовше не використовувалася сторінки (lru)
- •10.4.3. Першим увійшов - першим вийшов (fifo)
- •10.4.4. Часовий алгоритм
- •10.4.5. Буферизація сторінок
- •10.4.6. Стратегія заміщення і розмір кешу
10.4.1. Оптимальний алгоритм (opt)
Оптимальна стратегія полягає у виборі для заміщення тієї сторінки, звернення до якої буде через найбільший проміжок часу в порівнянні з усіма іншими сторінками. Можна показати, що цей алгоритм призводить до мінімальної кількості переривань через відсутність сторінки. Зрозуміло, що реалізувати такий алгоритм неможливо, оскільки для цього системі потрібно знати всі майбутні події. ОС не знає, до якої сторінці буде наступне звернення. Однак цей алгоритм є стандартом якості, з яким порівнюються реальні алгоритми.
На рис. 10.13 наведено приклад оптимальної стратегії. Передбачається, що для даного процесу використовується фіксований розподіл кадрів (фіксований розмір резидентного множини, що складається з трьох кадрів). Виконання процесу призводить до звернень до п'яти різних сторінок. У процесі роботи звернення до сторінок виконуються в наступному порядку:
232152453252
Оптимальна стратегія призводить після заповнення усієї безлічі кадрів до трьох перериваннях звернення до сторінки (позначених на малюнку буквами F).
10.4.2. Виштовхування найдовше не використовувалася сторінки (lru)
Одним з наближень до алгоритму OPT є алгоритм, що виходить з евристичного правила, що недавнє минуле - хороший орієнтир для прогнозування найближчого майбутнього.
Якщо використовувати минуле для апроксимації майбутнього, має сенс заміщати сторінку, яка не використовувалася протягом самого довгого часу. Такий підхід називається least recently used алгоритм (LRU). Згідно з принципом локалізації можна очікувати, що ця сторінка не буде використовувати ¬ ся і в найближчому майбутньому. Ця стратегія й справді недалека від оптимальної. Робота алгоритму проілюстрована на рис. 10.13. Порівнюючи даний алгоритм з іншими (з тим же потоком даних), можна побачити, що використання LRU алгоритму дозволяє скоротити кількість сторінкових порушень.
Рис. 10.13. Поведінка чотирьох алгоритмів заміщення сторінок
LRU - хороший, але важкореалізованих алгоритм. Необхідно мати зв'язаний список всіх сторінок в пам'яті, на початку якого будуть зберігається недавно використані сторінки. Причому цей список повинен оновлюватися при кожному зверненні до пам'яті. Багато часу потрібно і на пошук сторінок в такому списку.
10.4.3. Першим увійшов - першим вийшов (fifo)
Стратегія "першим увійшов - першим вийшов" (FIFO, виштовхування перше що прийшло сторінки) розглядає кадри сторінок процесу як циклічний буфер, з циклічним ж видаленням сторінок з нього. Все, що потрібно для реалізації цієї стратегії, - це покажчик, циклічно проходить по кадрам сторінок процесу. Таким чином, це одна з найпростіших ¬ ших у реалізації стратегій заміщення. Логіка її роботи полягає в тому, що заміщається сторінка, що знаходиться в основній пам'яті довше за інших. Од ¬ нако далеко не завжди ця сторінка рідко використовується; дуже часто деяка область даних або коду інтенсивно використовується програмою, і сторінки з цієї області при використанні описаної стратегії будуть завантажуватися і ви ¬ жувати знову і знову.
На рис. Описана 10.13 стратегія призводить до шести перериваннях через від ¬ присутність сторінки. Зауважимо, що попередня стратегія розпізнає, що частіше за інших використовуються сторінки 2 і 5, в той час як стратегія "першим во ¬ йшов - першим вийшов" на це нездатна.
Хоча стратегія найдовше невикористаного елемента і близька до оп ¬ тімальной, вона важка в реалізації та призводить до значних накладних витрат. Стратегія "першим увійшов - першим вийшов" реалізується дуже про ¬ сто, але відносно рідко призводить до гарних результатів. Протягом довгого часу розробники операційних систем випробовували різні алгоритми, намагаючись досягти збільшення продуктивності стратегії найдовше невикористаного елемента при значному зниженні накладних витрат. Багато з цих алгоритмів є варіанти схеми, відомої як годинна стратегія (clock policy).
Аномалія Беледі (Belady). На перший погляд здається очевидним, що чим більше в пам'яті сторінкових кадрів, тим рідше будуть мати місце page faults. Дивно, але це не завжди так. Як встановив Беледі з колегами, визначені послідовності запитів сторінок в дійсності призводять до збільшення числа сторінкових порушень при збільшенні кадрів, виділених процесу. Це явище носить назву "аномалії Беледі" або "аномалії FIFO" (рис. 10.14).
Рис.
10.14. Аномалія Беледі: (a) - FIFO з трьома
сторінковими кадрами; (b) - FIFO з чотирма
сторінковими кадрами