Уроки Iczelion'а

       

Управление памятью


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. Это самый низкий уровень сервисов памяти, который может быть доступен. Все другие сервисы памяти используют эти сервисы в качестве основы.
  • Сервисы "кучи". Управляет меньшими блоками памяти. Это самый высокий уровень управления памятью.
  • Списковые сервисы. Блоки памяти фиксированного размера подходят для воплощения связанных списков.



Содержание раздела