Бинарная трансляция (программная виртуализация)

Поскольку мы уже знаем, что существует аппаратная виртуализация, нам было бы логично предположить, что скорее всего должна существовать и программная.
НЕ так ли? И программная виртуализация действительно существует, причем существует она сразу в нескольких вариантах, о самом популярном из вариантов – бинарной трансляции (еще ее называют динамической) сегодня мы и поговорим.

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

Первые инструкции процессора, которые опасные, выполняются в гостевой операционной системе, причем выполняются “как есть”. Вторые, безопасные инструкции, с помощью гипервизора заменяются на альтернативную последовательность команд, иногда эта последовательно может выстраиваться в очень долгую и длинную цепочку команд, но зато в безопасную. Как следствие бинарную трансляцию нельзя назвать скоростной. Посудите сами: при такой виртуализации увеличивается объем гостевого кода и возрастает число обращений к монитору виртуальной машины, что в свою очередь приводит к замедлению работы системы по сравнению с описанной в предыдущей статье аппаратной виртуализацией.

Программная виртуализаци - бинарная трансляция

Впрочем, мы же с вами знаем, что оптимизация всему голова. Оптимизация исполняемого кода в программной виртуализации может значительно повысить быстродействие системы. Результаты некоторых тестов, проводимых компанией Parallels, показали, что хорошо оптимизированная бинарная трансляция в ряде случаев оказывается куда быстрее нежели аппаратная виртуализация. Данное явление можно объяснить тем, что переключение между гостевой ОС и гипервизором происходит медленно при аппаратной виртуализации и кроме того зависит от степени оптимизации кода бинарной трансляции.

Не смотря на существование бинарной трансляции, производители предпочтительнее относятся именно к аппаратной виртуализации, из-за того, что она проще технологически и в ней не нужно прилагать массу усилий для оптимизации или обеспечения безопасности кода.

Поделитесь с друзьями:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *