Обробка ситуації відсутності сторінки в пам'яті 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обробка ситуації відсутності сторінки в пам'яті



Якщо в таблиці сторінок є посилання на сторінку, відсутню в пам'яті, перше ж звернння по такому посиланню приведе до переривання й викличе ОС (ситуації page fault - відсутність сторінки в пам'яті)

ОС по таблицях визначає, що саме відбулося:

Якщо має місце невірне посилання (на сторінку, відсутню в логічній пам'яті), то робота програми припиняється.

Якщо ж має місце звичайна відсутність сторінки в пам'яті, то ОС повинна розмістити його в основній пам'яті. Для цього ОС виконує наступний алгоритм:

· Знайти незайнятий фрейм в основній пам'яті;.

· Уважати вміст сторінки в даний фрейм;

· Змінити елемент таблиці сторінок: validation-битий установити рівним 1;

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

Етапи обробки ситуації відсутності сторінки в пам'яті показані на рис. 18.4.

 

Рис. 18.4. Обробка ситуації відсутності сторінки в пам'яті.

Етап 1 – виконання команди load M, що переривається по відсутності сторінки в пам'яті; 2 – переривання й виклик ОС; 3 – звертання до сторінки, що перебуває у файлі відкачки на диску; 4 – зчитування сторінки в пам’ять на вільний фрейм; 5 – зміна елемента таблиці сторінок; 6 – повторне (успішне) виконання команди

Переваги віртуальної пам'яті при створенні процесів

Завдяки механізму віртуальної пам'яті, можуть бути використані наступної оптимізації витрати пам'яті при створенні процесів:

· Копіювання по записі (Copy-on-Write)

· Відображення файлів в пам’ять (Memory-Mapped Files).

Принцип спільного використання сторінок процесами (або копіювання по записі - Copy-On-Write, COW) дозволяє спочатку батьківському й дочірньому процесам використати ті самі сторінки пам'яті. Якщо який-небудь процес модифікує поділювану сторінку, то тільки в цьому випадку дана сторінка копіюється. Принцип COW забезпечує більше ефективне створення процесу, тому що копіюються сторінки, що модифікують тільки. Вільні сторінки розподіляються зі списку сторінок, иніційованих нулями.

Використання при вводі-виводі файлів, відображуваних в пам’ять, дозволяє розглядати файловий ввід-вивід як звичайне звертання до пам'яті шляхом відображення блоку на диску в сторінку пам'яті.

Спочатку файл читається з використанням запиту сторінок на вимогу. Частина файлу розміром з одну сторінку читається з файлу у фізичну сторінку (фрейм). Наступні читання з файлу й запису у файл трактуються як звичайні звертання до пам'яті. Це спрощує доступ до файлу, у порівнянні із системними викликами read() і write(). Це дозволяє також декільком процесам відображати в память той самий файл, по тому ж принципу, як вони спільно використають які-небудь сторінки.

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

Подібний механізм є в більшості операційних систем. Наприклад, у системі Solaris він реалізується командою й системним викликом mmap (memory map).

Оптимальний алгоритм заміщення сторінок

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

В операційних системах використаються дві основних схеми виділення фреймів - фіксоване виділення й виділення по пріоритетах.

Фіксоване виділення фреймів. Найбільш простий варіант - рівномірний розподіл фреймів процесам. Наприклад, якщо є 100 фреймів й 5 процесів, кожному виділяється по 20 сторінок. Використається також пропорційний розподіл – виділяти фрейми у відповідності з наступним принципом: якщо загальне число фреймів m, розмір процесу – s, а загальний розмір всіх процесів – S, те загальне число фреймів, виділених процесу, дорівнює:

a = m * (s / S).

Виділення по пріоритетах. Принцип даного розподілу фреймів наступний: застосовувати схему пропорційного розподілу, але використовуючи пріоритети, а не розмір. Якщо процес генерує відмову сторінки, то для заміщення виділяється фрейм із процесу з більше низьким пріоритетом.

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

Thrashing

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

Неформально, thrashing означає катастрофічну недостачу фреймів в основній пам'яті. На практиці для користувача це виглядає в такий спосіб: жорсткий диск буквально "надривається" від безперервних обігів, а процес виконується вкрай повільно.

Інший реальний приклад - використання ОС Windows XP (Service Pack 3) на комп'ютері з 512 мегабайтами пам'яті. При цьому виникає майже таке ж відчуття - спочатку здається, що несправний жорсткий диск, але потім відразу усвідомлюєш, що вся справа в недостачі пам'яті: найпростіші програми, такі як Internet Explorer, Windows Explorer й ін., будучи викликаними одночасно (що є звичайною практикою) переповняють основну пам'ять і змушують операційну систему при будь-якій додатковій дії користувача (навіть при простому пересуванні смуги прокручування по іменах файлів в Windows Explorer) безперервно займатись відкачкою і підкачуванням.

На рис. 18.15 наведено графік залежності використання процесора від коефіцієнта мультипрограмування. При дуже великій кількості оброблюваних процесів корисність використання процесора різко падає через постійні відкачки й підкачування. Це і є thrashing.



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 202; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.147.215 (0.006 с.)