
- •Лекція №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.4. Часовий алгоритм
У простій схемі часовий стратегії з кожним кадром зв'язується один додатковий біт, відомий як біт використання. Коли сторінка вперше завантажується в кадр, біт використання встановлюється рівним 1. При після ¬ дують зверненнях до сторінки, що викликали переривання через відсутність стра ¬ ниці, цей біт встановлюється рівним 1. При роботі алгоритму заміщення безліч кадрів, які є кандидатами на заміщення (поточний процес, локальна область видимості, вся основна пам'ять або глобальна область ви ¬ хідності), розглядається як циклічний буфер, з яким пов'язаний указу ¬ тель. При заміщенні сторінки покажчик переміщається до наступного кадру в буфері.
Коли настає час заміщення сторінки, операційна система ска ¬ нує буфер для пошуку кадру, біт використання якого дорівнює 0. Всякий раз, коли в процесі пошуку зустрічається кадр з бітом використання, рівним 1, він скидається в 0. Перший же зустрінутий кадр з нульовим бітом використання ¬ ня вибирається для заміщення. Якщо всі кадри мають біт використання, рав ¬ ний 1, покажчик здійснює повне коло і повертається до початкового положення ¬ ня, замінюючи сторінку в цьому кадрі. Як бачимо, ця стратегія схожа зі страте ¬ гією "першим увійшов - першим вийшов", але відрізняється тим, що кадри, які мають встановлений біт використання, пропускаються алгоритмом. Буфер кадрів сторінок представлений у вигляді кола, звідки і пішла назва стратегії (інша назва - стратегія кругової заміни сторінок). Ряд операційних систем використовують різні варіанти часовий стратегії (наприклад, Multics).
На
рис. 10.15 приведений простий приклад
використання часовий страте ¬ гії. Для
заміщення доступні п-1 кадри основної
пам'яті, представлені у вигляді циклічного
буфера. Безпосередньо перед тим, як
замістити сторінку в буфері завантажується
з вторинної пам'яті сторінкою 727, покажчик
буфера вказує на кадр 2, що містить
сторінку 45. Тепер приступимо до виконання
часового алгоритму.
Оскільки біт використання сторінки 45 в кадрі 2 дорівнює 1, ця сторінка не заміщується; замість цього її біт використання скидається, а покажчик переміщається до наступного кадру. Не заміщується також сторінка 191 з кадру 3; відповідно до алгоритму скидається її біт використання. У наступному кадрі (номер 4) біт використання сторінки дорівнює 0. Таким обра ¬ зом, сторінка 556 заміщається завантажується в основну пам'ять сторінкою 727, біт використання якої встановлюється рівним 1. Далі покажчик буфера переходить до кадру 5, і на цьому виконання алгоритму завершується. Для еконо ¬ мії місця на рис. 8.16 біт використання позначений як use.
Поведінка годинного алгоритму показано на рис. 10.13. Наявність зірочки означає, що біт використання відповідної сторінки дорівнює 1, а стрілочка вказує поточне положення покажчика. Зауважимо, що даний алгоритм катував ¬ ється захистити сторінки 2 і 5 від заміщення.
На рис. 10.16 показані результати експерименту, в якому порівнювалися чотири розглянутих у цьому розділі алгоритму; передбачається, що кількість відводяться процесу кадрів постійно.
Рис. 10.15. Пример работы часового алгоритма
Рис. 10.16. Порівняння різних стратегій заміщення сторінок
Проводилися також дослідження з порівняння алгоритмів при розподіль ¬ лення змінної кількості кадрів процесу, а також при глобальної та ло ¬ кальной областях видимості. Як з'ясувалося, за вироб ¬ дітельності часовий алгоритм найбільш близький до алгоритму найдовше невикористаною.
Підвищити ефективність годинного алгоритму можна шляхом збільшення ко ¬ лічества використовуваних при його роботі бітів. (З іншого боку, зменшення кількості бітів до нуля дає нам алгоритм "першим увійшов - першим вийшов").
У всіх підтримують стра ¬ кових організацію процесорах з кожною сторінкою в основній пам'яті (а сле ¬ послідовно, з кожним кадром) пов'язаний біт модифікації. Цей біт використовується для вказівки того, що дана сторінка не може бути заміщена до тих пір, поки її вміст не буде записано назад у вторинну пам'ять. Цей біт може використовуватися годинниковим алгоритмом наступним чином. Беручи до уваги біти використання та модифікації, всі кадри можна розділити на чотири категорії:
використаний давно, не модифікований (і = 0, т = 0);
використаний недавно, не модифікований (і = 1, т = 0);
використаний давно, модифікований (і = 0, т = 1);
використаний недавно, модифікований (і = 1, т - 1).
Використовуючи цю класифікацію, змінимо часовий алгоритм, який тепер буде описаний наступним чином (рис. 10.17).
Рис. 10.17. Часовий алгоритм заміщення сторінок
1. Скануємо буфер кадрів, починаючи з поточного становища. У процесі сканування біт використання не змінюється. Перша ж сторінка зі станом (і = 0, т = 0) заміщається.
2. Якщо виконання першого кроку алгоритму не увінчалося успіхом, шукаємо сторінку з параметрами (і = 0, т = 1). Якщо така знайдена, вона заміщується. У процесі виконання даного кроку у всіх переглянутих сторінок скидається біт використання.
3. Якщо виконання попереднього кроку не дало результату, покажчик повертається у вихідне положення, але у всіх сторінок значення біта використання скинуто в 0. Повторимо крок 1 і, при необхідності, крок 2. Очевидно, на цей раз потрібна сторінка буде знайдена.
Такий алгоритм використаний у схемі віртуальної пам'яті Macintosh. Позитивний момент цього алгоритму полягає, на відміну від простого годинного алгоритму, в перевазі заміни не змінювати сторінки в порівнянні з заміною модифікованих сторінок.
Отже, часовий алгоритм циклічно проходить по всіх сторінках буфера в пошуках сторінки, яка не була модифікована з часу завантаження і давно не використовувалася. Така сторінка - хороший кандидат на заміщення, особливо з урахуванням того, що її не треба записувати на диск. Якщо при першому проході кандидатів на заміщення не знайшлося, алгоритм знову перевіряє буфер, тепер уже в пошуках модифікованої, давно не використовувалася сторінки. Хоча така сторінка і повинна бути записана перед заміщенням, відповідно до принципу локалізації вона навряд чи знадобиться в найближчому майбутньому. Ес ¬ ли і цей прохід виявиться невдалим, всі сторінки позначаються як давно не використані, і виконується третій прохід.