Роль основной операционной системы

Завершающим важным конструкторским решением в VMware Workstation стало развертывание этой системы поверх существующей операционной системы. Такое решение классифицируется как гипервизор второго типа. У этого выбора было два основных преимущества.

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

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

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

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

Поскольку основными операционными системами ни одно из этих предположений не поддерживается, запуск гипервизора как драйвера устройства (в режиме ядра) также не подходил.

Эти строгие требования привели к разработке размещаемой архитектуры — VMware Hosted Architecture. В ней программное обеспечение разбито на три отдельных явно выраженных компонента (рис. 7.8).

Каждый из этих компонентов выполняет различные функции и работает независимо от других компонентов:

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


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

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

VMware Workstation выглядит так, будто запускается поверх существующей операционной системы, и, фактически ее компонент VMX запускается как процесс этой операционной системы.

Но VMM работает на системном уровне, имея полный контроль над оборудованием и не испытывая никакой зависимости от основной операционной системы. На рис. 7.8 показаны взаимоотношения между объектами: два контекста (основной операционной системы и VMM) являются равноправными по отношению друг к другу, и у каждого есть компонент пользовательского уровня и компонент ядра. VMM при запуске (в правой половине рисунка) проводит переконфигурацию оборудования, обрабатывает все прерывания и исключения ввода-вывода и поэтому безопасным способом временно удаляет основную операционную систему из своей виртуальной памяти. Например, размещение таблицы прерываний настраивается внутри VMM путем назначения регистру IDTR нового адреса. И наоборот, когда работает основная операционная система (левая половина рисунка), VMM и его виртуальная машина точно так же удаляются из ее виртуальной памяти.

Переход между этими двумя совершенно независимыми контекстами системного уровня называется переключением миров (world switch). Самим названием подчеркивается, что во время переключения миров все касающееся программного обеспечения изменяется в отличие от обычного переключения контекстов, реализуемого операционной системой. На рис. 7.9 показана разница между двумя видами переключений. Обычное переключение контекстов между процессами А и Б меняет местами пользовательскую часть адресного пространства и регистры двух процессов, но ряд важных системных ресурсов оставляет без изменений. Например, часть адресного пространства, принадлежащая ядру, идентична для всех процессов, также не изменяются обработчики исключений. В отличие от этого при переключении миров изменяется все: все адресное пространство, все обработчики исключений, привилегированные регистры и т. д. В частности, адресное пространство ядра основной операционной системы отображается только при работе в контексте основной операционной системы. После переключения миров в контекст VMM оно удаляется из адресного пространства целиком, освобождая пространство для работы как VMM, так и виртуальной машины. Хотя это может показаться довольно сложным процессом, его можно реализовать весьма эффективно и занять для его выполнения всего лишь 45 инструкций на языке машины x86.

Рис. 7.9. Разница между обычным переключением контекста и переключением миров


Внимательный читатель может удивиться: а как насчет адресного пространства ядра гостевой операционной системы? Ответ простой: оно является частью адресного пространства виртуальной машины и присутствует при работе в контексте VMM. Поэтому гостевая операционная система может использовать все адресное пространство, в частности те же места в виртуальной памяти, что и основная операционная система. При совпадении основной и гостевой операционных систем (например, обе Linux) именно так все и происходит. Разумеется, все это «просто работает», потому что есть два независимых контекста и между ними происходит переключение миров.

Затем тот же внимательный читатель может вновь удивиться: а как насчет области VMM, находящейся на верхушке адресного пространства? Как уже говорилось, это пространство резервируется самим VMM, и эта часть адресного пространства не может быть использована виртуальной машиной напрямую. К тому же эта небольшая 4-мегабайтная часть используется гостевой операционной системой крайне редко, так как каждое обращение к ней должно быть отдельно эмулировано и влечет за собой заметные программные издержки.

Вернемся к рис. 7.8: на нем показаны различные этапы того, что происходит в случае прерывания от диска, возникшего во время работы VMM (этап I). Разумеется, VMM не может обработать прерывание, потому что у него нет драйвера устройства из внутреннего интерфейса. На следующем этапе (II) VMM осуществляет переключение миров с возвращением основной операционной системы, а именно: код переключения миров возвращает управление VMware-драйверу, который на этапе III эмулирует аналогичное прерывание, выданное диском. Таким образом, на этапе IV обработчик прерывания, принадлежащий основной операционной системе, проходит всю свою логическую цепочку, как будто прерывание от диска произошло во время работы VMware-драйвера (а не VMM!). И наконец, на этапе V VMware-драйвер возвращает управление приложению VMX. К этому моменту основная операционная система может сделать выбор в пользу диспетчеризации другого процесса или же продолжить выполнение процесса VMware VMX. При продолжении выполнения процесса VMX он после всего этого возобновит работу виртуальной машины путем выдачи специального вызова в драйвер устройства, который сгенерирует переключение миров для возвращения в контекст VMM. Как видите, это весьма ловкий прием, скрывающий весь VMM и виртуальную машину от основной операционной системы. А что более важно, он предоставляет VMM полную свободу по перепрограммированию оборудования согласно его предпочтениям.

7.12.5.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Роль основной операционной системы:

  1. Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание, 2007
  2. В.Е. Карпов К.А. Коньков. Основы операционных систем, 2005
  3. Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ, 2015
  4. Какова роль Шамбалы, её происхождение, способ правления и её основная задача в настоящее время и в будущем?
  5. РОЛЬ И МЕСТО ПЕДАГОГИКИ В СИСТЕМЕ ПОДГОТОВКИ, ПЕРЕПОДГОТОВКИ И ПОВЫШЕНИЯ КВАЛИФИКАЦИИ СОВРЕМЕННЫХ СПЕЦИАЛИСТОВ
  6. ОСНОВНЫЕ ПРАВОВЫЕ СИСТЕМЫ СОВРЕМЕННОСТИ
  7. Тема 5. Классификация основных правовых систем современности
  8. §2. Основные черты судебной системы РФ
  9. Основные характеристики системы управления
  10. 1. Основные системы частного права
  11. Тема 5. Классификация основных правовых систем современности
  12. 1. Основные системы континентального гражданского права