Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
короткий_конспект ОС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
474.11 Кб
Скачать

1 Алгоритми заміщення сторінок

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

Але цей алгоритм не здійснимо, оскільки не можна знати яку сторінку коли запитають. Можна лише набрати статистику використання.

2. Алгоритм nru (Not Recently Used - сторінка, що не використалася останнім часом)

Використовуються біти звернення (R-Referenced) і зміни (M-Modified) в таблиці сторінок.

При зверненні біт R виставляється в 1, через деякий час ОС не переведе його в 0.

M переводиться в 0, тільки після запису на диск.

Завдяки цим бітам можна одержати 4-ре класу сторінок:

1. не було звернень і змін (R=0, M=0)

2. не було звернень, була зміна (R=0, M=1)

3. було звернення, не було змін (R=1, M=0)

4. було звернень і змін (R=1, M=1)

3. Алгоритм fifo (перша прибула - перша вивантажена)

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

4. Алгоритм "друга спроба"

Подібний FIFO, але якщо R=1, то сторінка переводиться в кінець черги, якщо R=0, то сторінка вивантажується.

5. Алгоритм "годинник"

Щоб уникнути переміщення сторінок за списком, можна використовувати покажчик, який переміщається за списком.

6. Алгоритм lru (Least Recently Used - що використалася найрідше)

Перший метод:

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

Другий метод:

У таблиці сторінок додається запис - лічильник звернень до сторінки. Чим менше значення лічильника, тим рідше вона використовувалася.

7. Алгоритм "робочий набір"

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

Буксування - коли кожну наступну сторінку доводиться процесу завантажувати в пам'ять.

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

Робочий набір - безліч сторінок (к), яку процес використовував до моменту часу (t). Тобто можна записати функцію w(к,t).

Тобто робочий набір виходить в насичення, значення w(к,t) в режимі насичення може служити для робочого набору, який необхідно завантажувати до запуску процесу.

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

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

У принципі можна використовувати безліч сторінок до яких звертався процес за останніми t секунд.

Поточний віртуальний час (Tv) - час роботи процесора, який реально використовував процес.

Час останнього використання (Told) - поточний час при R=1, тобто всі сторінки перевіряються на R=1, і якщо та той поточний час записується в це поле.

Тепер можна обчислити вік сторінки (не оновлення) Tv-Told, і порівняти з t, якщо більше, то сторінка не входить в робочий набір, і сторінку можна вивантажувати.

Виходить три варіанти:

  • якщо R=1, той поточний час запам'ятовується в полі час останнього використання

  • якщо R=0 і вік > t, то сторінка віддаляється

  • якщо R=0 і вік =< t, то ця сторінка входить в робочий набір