Студопедия — Віртуальна пам'ять Windows NT
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Віртуальна пам'ять 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-16; просмотров: 1526. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия