Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Віртуальна пам'ять Windows NT




У NT кожен користувальницький процес має свій власний віртуальний адресний простір. Довжина віртуальної адреси складає 32 біта, тому кожен процес має 4 Гбайти віртуального адресного простору. Нижні 2 Гбайти призначені для коду і даних процесу; верхні 2 Гбайти дозволяють обмежений доступ до пам'яті ядра. Виключення складають версії NT для підприємств, у яких поділ пам'яті може бути іншим: 3 Гбайти — для користувача і 1 Гбайт — для ядра. Віртуальний адресний простір з підкачуванням сторінок за вимогою містить сторінки фіксованого розміру (4 Кбайт на машині Pentium П).

Кожна віртуальна сторінка може знаходитися в одному з трьох станів: вона може бути вільною (free), зарезервованою (reserved) і виділеною (committed). Вільна сторінка в сучасний момент не використовується, а звертання до неї викликає помилку через відсутність сторінки. Коли процес починається, усі його сторінки знаходяться у вільному стані доти, поки програма і початкові дані не будуть відображені у свій адресний простір. Якщо код чи дані відображені в сторінку, то така сторінка є виділеною. Звертання до виділеної сторінки буде успішним, якщо сторінка знаходиться в основній пам'яті. Якщо сторінка відсутня в основній пам'яті, то відбудеться помилка і операційній системі прийдеться викликати потрібну сторінку з диска. Віртуальна сторінка може знаходитися й у зарезервованому стані. Це значить, що ця сторінка недоступна для відображення доти, поки резервування не буде скасовано. Крім атрибутів стану сторінки мають і інші атрибути (наприклад, що вказують на можливість читання, запису і виконання). Верхні 64 Кбайт і нижні 64 Кбайт пам'яті завжди вільні, щоб можна було відшукувати помилки покажчиків (неініціалізовані покажчики часто рівні 0 чи -1).

Кожна виділена сторінка має тіньову сторінку на диску, де вона зберігається при відсутності її в основній пам'яті. Вільні і зарезервовані сторінки не мають тіньових сторінок, тому звертання до них викликають помилки через відсутність сторінки (система не може викликати сторінку з диска, якщо цієї сторінки немає на диску). Тіньові сторінки на диску згруповані в один чи кілька сторінкових файлів. Операційна система стежить, у яку частину якого сторінкового файлу відображається кожна віртуальна сторінка. Файли з текстами програм мають тіньові сторінки; для сторінок даних використовуються спеціальні сторінкові файли.

NT, як і System V, дозволяє відображати файли прямо в області віртуального адресного простору. Якщо файл був відображений в адресний простір, його можна зчитувати або записувати шляхом звичайних звертань до пам'яті.

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

NT дозволяє відображати два і більш процесів в одному файлі одночасно, можливо, у різних віртуальних адресах. Шляхом зчитування слів з пам'яті і запису слів у пам'ять процеси можуть взаємодіяти один з одним і передавати дані в обох напрямках з досить високою швидкістю, оскільки ніякого копіювання не потрібно. Різні процеси можуть мати різні дозволи на доступ. Усі процеси, що використовують відображений файл, розділяють ті самі сторінки, тому зміни, зроблені одним із процесів, помітні всім іншим процесам, навіть якщо файл на диску ще не був обновлений. WIN 32 API містить ряд функцій, що дозволяють процесу відкрито керувати віртуальною пам'яттю. Найважливіші з цих функцій приведені в табл. 6.3. Усі вони працюють в області, що складається або з однієї сторінки, або з двох чи більше сторінок, послідовно розташованих у віртуальному адресному просторі.

Таблиця 6.3. Основні функції API для керування віртуальною пам'яттю в системі Windows NT

Функція API Значення
VirtualAlloc резервація або виділення області
VirtualFree Звільнення області або зняття виділення
VirtualProtect Зміна типу захисту на читання/запис/виконання
VirtualQuery Запит про стан області
VirtualLock Робить область пам'яті резидентною (тобто забороняє розбивку на сторінки в ній)
VirtualUnlock Знімає заборону на розбивку на сторінки
CreateFileMapping Створює об'єкт відображення файлу й іноді приписує йому ім'я
MapViewOfFile Відображає файл або частину файлу в адресний простір
UnmapViewOfFile Видаляє відображений файл з адресного простору
OpenFileMappino Відкриває раніше створений об’єкт відображення файлу

Перші чотири функції очевидні. Наступні дві функції дозволяють процесу робити резидентною область пам'яті розміром до 30 сторінок і скасовувати цю дію. Ця якість може знадобитися програмам, що працюють у режимі реального часу. Операційна система встановлює визначену межу, щоб процеси не ставали занадто поглинаючими. У системі NT також маються функції API, що дозволяють процесу одержувати доступ до віртуальної пам'яті іншого процесу (вони не зазначені в табл. 6.3).

Останні 4 функції API призначені для керування відображуваними в пам'ять файлами. Щоб відобразити файл, спочатку потрібно створити об'єкт відображення файлу за допомогою функції CreateFileMapping. Ця функція повертає ідентифікатор (handle) об'єкту відображення файлу й іноді ще і вводить у систему файлів ім'я для нього, щоб інший процес міг використовувати об'єкт. Дві функції відображають файли і видаляють відображення відповідно. Наступна функція потрібна для того, щоб відобразити файл, що у даний момент відображений іншим процесом. Таким чином, два і більше процесів можуть розділяти області своїх адресних просторів.

Ці функції API є основними. На них будується вся інша система керування пам'яттю. Наприклад, існують функції API для розміщення і звільнення структур даних в одній чи декількох “купах”. “Купи” використовуються для збереження структур даних, що створюються і руйнуються. “Купи” не займаються “зборкою сміття”, тому користувальницьке програмне забезпечення саме повинне звільняти блоки віртуальної пам'яті, що вже не потрібні. (“Зборка сміття” - це автоматичне видалення невикористовуваних структур даних.) “Купа” у NT подібна з функцією malloc у системах UNIX, але в NT, на відміну від UNIX, може бути кілька незалежних “куп”.

 

Контрольні питання:

1. Ієрархічна структура пам’яті.

2. Оверлейна організація програм.

3. Метод віртуальної пам’яті.

4..Віртуальна пам’ять UNIX.

5. Віртуальна пам’ять NT.

6. Функції WIN API для управління віртуальною пам’яттю.




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 463; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.