logo
Методичка

5.4 Диспетчер виртуальных машин системы Microsoft Windows

После того как мы в общих чертах описали систему управления памятью, используемую в процессорах семейства IA-32, будет интересно посмотреть на то, как происходит этот процесс в операционной системе Windows. Ниже приведена выдержка из документации Microsoft Platform SDK.

«Основу ядра операционных систем Windows составляет диспетчер виртуальных машин (Virtual Machine Manager, или VMM), который является 32-разрядной программой, написанной для защищенного режима работы процессора. К его основным функциям относятся: создание, запуск, отслеживание и завершение работы виртуальных машин. Кроме того, VMM обеспечивает поддержку функций, предназначенных для распределения памяти, управления процессами, прерываниями и исключениями. Он также обеспечивает работу виртуальных устройств – 32-разрядных модулей, обрабатывающих прерывания и ошибки, генерируемые реальными устройствами, и управляющих доступом со стороны прикладных программ к оборудованию компьютера и установленного программного обеспечения.

И VMM, и модули виртуальных устройств выполняются в едином 32-разрядном линейном адресном пространстве с нулевым уровнем привилегий. Операционная система создает в таблице глобальных дескрипторов два элемента: один для сегмента кода, а другой для сегмента данных. Базовый адрес обоих сегментов равен нулю и никогда не изменяется. Диспетчер виртуальных машин обеспечивает поддержку выполнения множества потоков команд, а также многозадачность с вытеснением на основе приоритетов. Он позволяет одновременно запускать несколько приложений в отдельных виртуальных машинах и распределять время центрального процессора между ними.»

В приведенном выше отрывке из документации Microsoft Platform SDK под термином виртуальная машина понимается процесс или задача, по крайней мере, так это определено в документации по процессорам семейства IA-32 фирмы Intel. Виртуальная машина состоит из программного кода, обслуживающих ее программ, памяти и регистров. Каждой виртуальной машине назначается собственное адресное пространство, пространство портов ввода-вывода, таблица векторов прерываний и таблица локальных дескрипторов. Приложениям, которые запускаются в виртуальной машине в режиме эмуляции процессора 8086, назначается третий уровень привилегий. Программы, написанные для защищенного режима, могут выполняться с первым, вторым или третьим уровнем привилегий.

Вопросы для самопроверки

  1. Что представляет собой страница при страничной организации памяти?

  2. Сколько элементов содержит каталог страниц?

  3. Какова структура элемента каталога страниц?

  4. Почему адреса таблиц страниц выровнены на 4 Кб?

  5. Какую роль играет бит PS поля доступа элемента каталога страниц?

  6. Какую роль играет бит RW поля доступа элемента каталога страниц?

  7. Чем отличается каталог страниц от таблицы страниц?

  8. В каком режиме работы микропроцессора доступна линейная адресация памяти?

  9. Каков размер страницы при страничной организации памяти и от чего он зависит?

  10. Из каких частей состоит линейный адрес?

  11. По какому алгоритму происходит преобразование линейного адреса в физический адрес?

  12. Какова роль ассоциативного буфера истории трансляции в преобразовании виртуального адреса в физический адрес?