Шаг 42 - Виртуальная память

В Win32 API используется плоская 32-разрядная модель памяти. Для адресации используются 32 разрядные указатели. Хотя 32-разрядный указатель может адресовать 4 гигабайта памяти, процесс Windows 95 может только обращаться к 2 гигабайтам, так как верхние 2 Гб зарезервированы для использования операционной системой. Схема разделения памяти вот такая.

0xFFFFFFFF
	Регион размером 1 GB. Драйвера и системные DLL
0xC0000000
	
0xBFFFFFFF
	Регион размером 1 GB. DLL и Файлы проецируемые в память
0x80000000

0x7FFFFFFF
	Регион размером 2 GB. Память для программ (процессов) 
0x00400000

0x003FFFFF
	Память приложений MS DOS
0x00000000

Виртуальная память - это память компьютера, которая объединяет оперативную память в виде модулей SIMM, DIMM и память на жестком диске. Это позволяет использовать намного больше памяти чем физически установлено в виде модулей. Процесс переноса оперативной памяти на диск и обратно называется подкачкой. Виртуальные адреса не совпадают с физическими в связи с этим программа имеет собственное адресное пространство, которое VMM преобразуем в физические адреса. Файл подкачки на диске имеет имя Pagefile.sys. Windows предоставляет программе доступ ко всему адресному пространству и вызовы DLL это прямые вызовы, что говорит о том, что можно записать все куда угодно это опасно, но эффективно.

Управляет виртуальной память в WIN32 - VMM(Virtual Memory Manager) - часть операционной системы, занимающаяся управлением виртуальной памятью. Для программиста существует понятие Virtual Memory API - набор функций, позволяющих приложению работать с виртуальным адресным пространством.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.