Програмиране за Windows NT
В основата на цялата система за управление на паметта на Microsoft Windows NT е система за виртуална памет, вградена в ядрото на операционната система. Тази система позволява на приложенията да използват области от паметта, които са много по-големи от количеството физическа RAM, инсталирана в компютъра.
Изглежда, защо приложенията се нуждаят от толкова много памет?
Точно както в операционната система Microsoft Windows версия 3.1, Microsoft Windows NT използва дискови устройства за създаване на виртуална памет (фиг. 1.8). Системата за виртуална памет на Microsoft Windows NT ви позволява да създадете до 16 отделни файла със страници, разположени на различни дискови устройства, инсталирани на вашия компютър. Тъй като максималното количество налична виртуална памет се определя от количеството дискови устройства, използвани за нея, ако е необходимо, можете например да свържете няколко диска с голям капацитет към компютъра и да поставите файлове на страници върху тях. Днес дисковите устройства с капацитет от 4 до 10 GB вече са станали доста достъпни, което позволява на Microsoft Windows NT да създава наистина голяма виртуална памет.
Ориз. 1.8. Виртуалната памет в Microsoft Windows NT се създава с помощта на RAM и дискови устройства
Несегментиран модел FLAT XE "FLAT" памет
Най-важното е пълното премахване на модела на сегментираната памет в 32-битовите приложения, с който сте свикнали, когато пишете програми за MS-DOS и Microsoft Windows версия 3.1. Наистина, използвайки 32-битово отместване, приложението може да работи с 4 GB памет, без да използва сегментните регистри на процесора.
Ориз. 1.9. Адресно пространство на приложението Microsoft Windows NT
Изход обаче има. Нищо не пречиоперационна система за създаване на специален дескриптор в директорията на страниците на няколко приложения, сочещи към споделени страници с виртуална памет. Такива дескриптори се наричат Prototype Page Table Entry XE "Prototype Page Table Entry" PTE XE "Prototype Page Table Entry" дескриптори и се използват за споделяне на страници с памет в операционната система Microsoft Windows NT.
PTEs се създават за споделяне на страници, които съдържат изпълним код, както и за работа с карти на паметта файлове. Има и начин за организиране на споделена памет с помощта на DLL.
Ето защо, ако трябва да организирате прехвърлянето на данни между приложенията, винаги можете да направите това, например, чрез файл с карта на паметта.
Дескриптори на страници с памет
На фиг. Фигура 1.10 показва формат на дескриптор на страница XE "дескриптор на страница от паметта".
Ориз. 1.10. Формат на дескриптора на страницата
Чрез правилното задаване на битовете за сигурност операционната система може да маркира страницата като четене-запис, само за четене или недостъпна. Опит за изпълнение на повикване за извършване на неоторизирана операция причинява хардуерно прекъсване.
Битове от 3 до 6 съдържат номера на файла на страницата, съдържащ страницата, съответстваща на дадения дескриптор. Спомнете си, че за разлика от Microsoft Windows версия 3.1, операционната система Microsoft Windows NT ви позволява да създавате до 16 файла страници.
Битове от 0 до 2 описват състоянието на страницата с памет. Една страница може да бъде маркирана с T (в преход), D (актуализирана, но не съхранена във файла на страницата) и P (присъстваща в паметта). Ако приложението се опитадостъп до страница от паметта, която не е в паметта, възниква хардуерно прекъсване и желаната страница автоматично се чете от съответния файл на страница във физическа RAM. След това приложението продължава.
Състояние на страницата с памет
В допълнение към трите бита за състояние на страницата, съхранени в дескриптори на страница, системата за управление на виртуалната памет съхранява състоянието на XE страницата "състояние на страницата на паметта" в специална база данни на страници. В тази база данни дадена страница може да бъде маркирана като имаща едно от следните състояния:
Страницата е достъпна за ползване след попълване с нули
Безплатна страница, пълна с нули и достъпна за използване от приложения
Страницата се използва от активен процес
Съдържанието на страницата е променено, но все още не е записано на диск във файл на страница.
Страницата е премахната от работния набор от страници на процеса
Възникна хардуерна грешка при достъп до тази страница
Моля, имайте предвид, че ако част от RAM е дефектна, има шанс операционната система Microsoft Windows NT да може да продължи да работи. Лошите страници ще бъдат маркирани като лоши в базата данни на страниците и няма да бъдат достъпни.