Управление памятью
VMM использует способность Intel 80386 и более поздних процессоров создавать 32-битное виртуальное адресное пространство для системной VM. Она разделяет адресное пространство четыре различных области.
- V86-область, начинающаяся с адреса 0h до 10FFEFh. Этот регион принадлежит выполняющийся в данный момент виртуальной машине.
- Приватная область памяти приложения от 4MB до 2GB. Эта область, в которой выполняется win32-приложение. Каждый win32-процесс будет иметь свои собственный приватные 2GB (минус 4 GB).
- Общая область приложений от 2 GB до 3 GB. Эта область общая для всех приложений в системной машине. Эта область, где находятся системные DLL (user32, kernel32 и gdi32). Все Win16-приложения также выполняются здесь, так как могут читать/писать из и в другие win16-приложения. В этой области win16-приложения могут видеть все другие Win16-приложения. Промэппированные файлы также находятся здесь, как и память, зарезервированная с помощью вызовов DPMI.
- Общая системная область от адреса 3GB до 4GB, где находятся VMM и VxD.
VMM предоставляет три типа сервисов памяти VxD:
- Сервисы, основанные на страницах памяти. Этот тип сервисов резервирует/управляет памятью, организованную в страницы по 4 KB. Это самый низкий уровень сервисов памяти, который может быть доступен. Все другие сервисы памяти используют эти сервисы в качестве основы.
- Сервисы "кучи". Управляет меньшими блоками памяти. Это самый высокий уровень управления памятью.
- Списковые сервисы. Блоки памяти фиксированного размера подходят для воплощения связанных списков.