Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен СП.docx
Скачиваний:
13
Добавлен:
22.04.2019
Размер:
515.86 Кб
Скачать

34. Подсистема памяти. Основные задачи, функции, требования. 35. Виртуальное адресное пространство, управление памятью с использованием виртуального адресного пространства.

Виртуальное адресное пространство процесса.

В Win32 API используется плоская 32- разрядная модель памяти. Каждому

процессу выделяется собственное “ личное” (private ) изолированное адресное

пространство , размер которого составляет 4 Гбайт. Это пространство разбива-ется на регионы , немного отличные для Windows 95 и Windows NT. Общим для

обеих систем является то , что нижние 2 Гбайт этого пространства отведены

процессу для свободного использования, а верхние 2 Гбайт зарезервированы

для использования операционной системой .

Регионы в адресном пространстве процесса Windows 95

Регионы в адресном пространстве процесса Windows NT

Windows NT лучше защищена от процессов пользователя , чем

Windows 95. Это обуславливает большую устойчивость ОС к ошибкам в при -кладной программе .

Пример. Программа пытается обнулить страницу за страницей в систем -ной области ( старший гигабайт адресного пространства ). Отметим , что опера-ция может завершиться неудачей по двум причинам: отсутствие реальной стра -ницы по указанному адресу либо нарушение прав доступа к существующей

странице .

void main()

{

DWORD SysAreaAddress = 0xC0000000; // начало старшего гигабайта

while (1) {

ZeroMemory ( (LPVOID)SystemAreaAddress, 0x1000); // запись

SysAreaAddress += 0x1000; // переход к следующей странице (4K)

}

}

Под Win 9x, где защита системной области памяти не предусмотрена, вы-полнение программы приводит к краху системы , так как жизненно важное со -держимое будет уничтожено. Windows NT такую защиту имеет, поэтому гене -рирует исключение и снимает программу как неправильную или вредоносную .

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

Примечание. Помимо прочего, этот пример наглядно демонстрирует осо-бенность " плоского " виртуального адресного пространства : произвольное 32-разрядное число может использоваться в качестве á дреса.

Управление виртуальной памятью осуществляет Virtual Memory Manager

( VMM), являющийся неотъемлемой частью ядра операционной системы .

Организация памяти в Win32 страничная , размер страниц для платформ

Intel и MIPS составляет 4 K байт , для DEC Alpha – 8 K байт . Win32 использует

двухступенчатую схему страничного преобразования , поддерживаемую про -цессорами i386, 486 и Pentium, дополнительные схемы , поддерживаемые

Pentium Pro, не используются .

Организацией свопинга занимается VMM. При генерации системы на

диске образуется специальный файл свопинга , куда записываются те страницы,

которым не находится места в физической памяти. Процессы могут захватывать

память в своем 32- битном адресном пространстве и , затем, использовать ее .

При обращении потока к ячейке памяти могут возникнуть три различные си -туации :

– страница существует и находится в памяти;

– страница существует и выгружена на диск ;

– страница не существует .

Выделение памяти процессу означает выделение ее в файле подкачки .

Запуск на исполнение EXE- модуля происходит следующим образом.

EXE-файл проецируется на память . При этом он не переписывается в файл под -качки. Просто элементы каталога и таблиц страниц настраиваются так, чтобы

они указывали на EXE- файл, лежащий на диске. Затем передается управление

на точку входа программы . При этом возникает исключение, обрабатывая кото -рое стандартным образом, VMM загружает в память требуемую страницу и

программа начинает исполняться. Такой механизм существенно ускоряет про -цедуру запуска программ, так как загрузка страниц EXE- модуля происходит по

мере необходимости . Образно говоря , программа сначала начинает исполнять-ся , а потом загружается в память . Если программа записана на дискете, то она

перед началом исполнения переписывается в файл подкачки .

Для управления памятью прикладным программам предоставляются раз-личные интерфейсы ( API). Функции API могут быть разбиты на следующие ос -новные группы.

1) Virtual Memory API – набор функций , позволяющих приложению рабо -тать с виртуальным адресным пространством: назначать физические страницы

блоку адресов и освобождать их, устанавливать атрибуты защиты.

2) Memory Mapped File API – набор функций , позволяющий работать с

файлами , отображаемыми в память . Новый механизм, предоставляемый Win32

API для работы с файлами и взаимодействия процессов. Подробно рассматри-вается в подразд. 4.5.

3) Heap Memory API – набор функций , позволяющих работать с динами-чески распределяемыми областями памяти ( кучами). Подробно рассматривается

в подразд. 4.6.

4) Local, Global Memory API – набор функций работы с памятью , совмес -тимых с 16- битной Windows. Следует избегать их использования.

5) CRT Memory API – функции стандартной библиотеки периода исполне-ния ( runtime). 36. Динамическое распределения памяти программами (heap). Heap API Win32 (35)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]