Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операцiйнi системи та середовища6.05.07(Антонов...doc
Скачиваний:
11
Добавлен:
04.05.2019
Размер:
801.79 Кб
Скачать

4.4 Особливості розподілу оперативної пам’яті в ос Windows nt

У ОС Windows NT використовується також плоска модель пам‘яті, але схема розподілу можливого адресного простору відрізняється від моделі Windows 98SE. У Windows NT 4.0 набагато більше використовуються можливості апаратних засобів захисту, що є в мікропроцесорах, і використано принципово інший логічний розподіл адресного простору [1].

Усі системні програмні модулі перебувають у своїх власних віртуальних адресних просторах, і доступ до них з боку додатків є неможливий. Ядро системи і кілька драйверів працюють у нульовому кільці захисту в окремому адресному просторі.

Інші модулі самої ОС, використовувані як серверні процеси відносно додатків (клієнтів), функціонують також у власному системному віртуальному адресному просторі, прозорому для додатків. На рис. 4.6 наведено модель логічного розподілу адресного простору.

Додаткам виділяється 2 Гбайти власного лінійного простору з 64 Кбайтів до 2 Гбайтів (перші 64 Кбайти є повністю неприступними). Додатки ізольовано один від одного, хоча можуть спілкуватися через буфер обміну, механізми динамічного обміну даними DDE (Dynamic Data Exchange), механізм зв’язку та упровадження об’єктів OLE (Object Linking and Embedding). У верхній частині кожної 2-гігабайтової області додатка розміщено код системних DLL кільця 3, котрий переспрямовує виклики до ізольованого адресного простору, де розташовано власне системний код. Цей системний код виступає як сервер-процес, він перевіряє значення параметрів, виконує запитану функцію і доправляє результат назад до адресного простору додатка.

Рисунок 4.6 – Модель розподілу віртуальної пам’яті у Windows NT

Сервер-процес є також процесом додатка, але він є повністю захищений від додатка, який його викликав, та ізольований від нього.

Поміж 2 та 4 Гбайтами розташовано системні компоненти кільця 0 – це ядро, планувач потоків та диспетчер віртуальної пам’яті. Системні сторінки мають привілеї супервізора, які підтримуються апаратними засобами мікропроцесора. Це робить системний код прозорим і неприступним для захисту додатків, але призводить до втрати ефективності під час переходу поміж кільцями.

Для 16-розрядних додатків ОС Windows NT зреалізовує сеанси Windows on Windows (WOW) і надає їм можливість виконуватись індивідуально у власних адресних просторах або разом у розподілюваному адресному просторі.

Під час запуску додатка створюється процес зі своєю інформаційною структурою. За необхідності в межах процесу може бути запущено багато тредів, які виконуватимуться паралельно. Треди в межах одного процесу виконуються в одному адресному просторі, а процеси – в різних віртуальних адресних просторах. Відбиття різних віртуальних адресних просторів виконує ОС; саме коректність цих операцій і гарантує ізоляцію додатків від втручання процесів. Для забезпечення взаємодії поміж додатками, поміж додатками та ОС і використовуються механізми захисту пам’яті, яка підтримується апаратними засобами мікропроцесора.

Вимоги стандарту на системи безпеки рівня С2, прийняті урядом США, формулюють певні правила віртуалізації пам’яті. Кожна сторінка пам’яті (VMM) Windows NT відбивається на фізичну сторінку, переноситься у так званий сторінковий фрейм (Page Frame). Перед переміщенням сторінки цей фрейм треба знайти або створити і заповнити його нулями для того, щоб виключити можливість використання їхнього попереднього змісту іншими процесами. Для звільнення фрейма ті сторінки, в дані на яких було внесено зміни, треба скопіювати на диск, і лише після цього фрейм можна знову використовувати. Для заміщення сторінок у Windows NT обрано дисципліну FIFO, що не є ефективним. Коли процес використовує дані чи код, що перебувають у фізичній пам’яті, система резервує місце для цієї сторінки у файлі підкачування Pagefile.sys на диску з урахуванням подальшої необхідності перенесення цих даних на диск. Цей файл – зарезервований блок дискового простору, що використовується для вилучання сторінок, які мають назву „брудних”, за необхідності звільнення фізичної пам‘яті. За умовчанням розмір файла встановлюється дорівнюваним обсягові фізичної пам’яті плюс 12 Мбайт, але користувач може в разі необхідності його збільшити, і віртуальна пам’ять, якої не вистачає, буде збільшена.

У системах Windows NT 4.0 об’єкти, створювані й використовувані додатками або ОС, зберігаються в пулах пам’яті (Memory Pools). Для того щоби об‘єкти були доступними тредам додатків, самі треди повинні перемикатися до привілейованого режиму. Нерезидентні пули вміщують об’єкти, які можуть бути переміщені на диск. Резидентні пули вміщують об’єкти, які постійно повинні знаходитись в оперативній пам’яті. До таких об’єктів відносяться структури даних, використовувані процедурами опрацювання переривань, а також структури, використовувані для запобігання конфліктам у багатопроцесорних системах. Обсяг пулу встановлюється ОС динамічно й залежно від працюючих у системі додатків та сервісів і може змінюватися в широких межах.

Уся віртуальна пам’ять Windows NT може бути поділена на три класи:

1 Зарезервована пам’ять – набір неперервних адрес, які VMM надає процесові. Коли процесові потрібно зробити запис до пам’яті, система надає йому потрібний обсяг із зарезервованої пам’яті. Якщо цього не вистачає, то додатковий обсяг може бути надано й використано, якщо в системі є доступна пам’ять.

2 Виділена пам’ять – зарезервована пам’ять у файлі Pagefile.sys. Обсяг виділеної пам’яті залежить від потреб процесу і є обмежений максимальним розміром файла підкачування.

3 Доступна пам’ять – це решта пам’яті: вільна, обнулена, вилучена з робочого набору процесу, але яку можна знову вимагати [1].