Технологии виртуализации вчера, сегодня, завтра


Эмуляторы виртуальных машин - часть 2


Несколько раз предпринимались серьезные попытки исправить данное положение дел, отказавшись от исполнения кода «на лету», когда эмулятор последовательно, инструкция-за-инструкцией, транслирует программу, и перейдя к «динамической компиляции программ», когда программа, записанная в одной системе команд предварительно «переводится» в «родную» систему команд данного процессора, и уже затем, в виде полученного «родного» кода на этом процессоре исполняется. К примеру, разработанный Connectix, позднее купленной Microsoft, продукт Virtual PC for Macintosh позволял, за счёт подобного «перекомпилирования» приложений для операционных систем Microsoft, запускать эти приложения на компьютерах Apple Macintosh. А компания Transmeta в 1999 году даже выпустила совершенно уникальный процессор Crusoe (VLIW-архитектуры), который имитировал «видимость» x86-архитектуры при помощи специального полуаппаратного эмулятора, разработанного, к слову, с участием Линуса Торвальдса. А позднее Microsoft разработала на основе данного подхода и «усовершенствованную альтернативу» Java - технологию .Net, использующую для записи программ специальный «универсальный код» CIL (Common Intermediate Language), который по своей сути аналогичен псевдокоду, который генерируют в ходе своей работы современные компиляторы перед тем, как сконвертировать этот «абстрактный код» во вполне конкретные машинные инструкции.

Потенциально данный подход лишён всех «узких мест», связанных с недостаточной производительностью обычных эмуляторов, однако технология .Net до сих пор так и не получила обещанного распространения, а производительность Virtual PC for Macintosh, равно как и Transmeta Crusoe, оставляет желать лучшего.




Начало  Назад  Вперед



Книжный магазин