Полная виртуализация

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

В компьютерных науках полная виртуализация — это технология, используемая для предоставления определенной виртуальной среды, которая обеспечивает полное симулирование базового оборудования. Любое программное обеспечение, которое может работать на базовом оборудовании может быть запущено в виртуальной среде, как правило любая операционная система должна выполняться без проблем в виртуальной среде, при условии, что она работает на базовом оборудовании. Другие типы платформенной виртуализации позволяют выполняться в виртуальной среде только некоторому или модифицированному программному обеспечению.

Пример полной виртуализации реализован в управляющей программе IBM CP/CMS ОС. Она впервые продемонстрирована в исследовательской системе IBM CP-40 в 1967-ом году, затем она предоставлялась с открытым исходным кодом в CP/CMS 1967—1972 гг и была внедрена в линейку VM с 1972 до настоящего времени. Каждому пользователю CP/CMS была предоставлена имитация автономного компьютера. Каждая такая виртуальная машина имела все возможности базовой машины, и для своих пользователей виртуальная машина была ничем неотличима от реальной. Эта имитация была полной основывалась на принципе оперативных инструкций к оборудованию. Таким образом она включает такие элементы как: набор инструкций, оперативную память, прерывания, исключения и устройства доступа. В результате получили систему, которая могла мультиплексировать много пользователей.

Полная виртуализация возможна исключительно при условии правильной комбинации оборудования и программного обеспечения. Например, она была невозможной ни в серии IBM System/360, за исключением IBM System/360-67, ни в ранних IBM System/370, пока IBM не добавила оборудование виртуальной памяти в своих System/370 в 1972 г.

Аналогичная ситуация и с платформой х86: полная виртуализация была возможна не в полной мере, до добавления технологий AMD-V и Intel VT(эти технологии ниже будут рассмотрены более подробно в пункте «Аппаратная виртуализация»). Много продуктов виртуализации для платформы x86 подошли вплотную и заявляли о полной виртуализации еще до реализации AMD-V и Intel VT. Примеры включают такие решения как: ADEOS, Mac-на-Linux, Parallels Desktop для Mac, Parallels Workstation, VMware Workstation, VMware Server (бывший GSX Server), VirtualBox, Win4BSD и Win4Lin Pro.

VMware, например, использует технологию, называемую «бинарной трансляцией», для автоматического изменения ПО для x86 «на лету», для замены инструкций безопасными для виртуальной машины последовательностями инструкций. Эта технология предоставляет видимость полной виртуализации.

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

Полная виртуализация была успешно опробована для:

  • совместного использования компьютера несколькими пользователями;
  • изоляции пользователей друг от друга (и от управляющей программы);
  • эмуляции нового оборудования для обеспечения лучшей надежности, безопасности и производительности.