Administrator |
Дата: Пятница, 26.10.2012, 21:31 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 20
Награды: 1
Репутация: 101
Статус: Offline
|
Обычно приложения работают в изолированном адресном пространстве и взаимодействуют с оборудованием при помощи интерфейса API (Application Programming Interface — интерфейс прикладного программирования), предоставляемого операционной системой. Если две операционные системы совместимы по своим интерфейсам API (например, Windows 98 и Windows ME), то приложения, разработанные для одной из них, будут работать и на другой. Если две операционные системы несовместимы по своим интерфейсам API (например, Windows 2000 и Linux), то необходимо обеспечить перехват обращений приложений к API гостевой ОС и сымитировать ее поведение средствами хостовой ОС. При таком подходе можно установить одну операционную систему и работать одновременно как с ее приложениями, так и с приложениями другой операционной системы. Поскольку весь код приложения исполняется без эмуляции, а эмулируются лишь вызовы API, такая схема виртуализации приводит к незначительной потере в производительности виртуальной машины. Однако из-за того, что многие приложения используют недокументированные функции API или обращаются к операционной системе в обход API, даже очень хорошие эмуляторы API имеют проблемы совместимости и позволяют запускать не более 70 % от общего числа приложений. Кроме того, поддерживать эмуляцию API бурно развивающейся операционной системы (например, такой как Windows) очень нелегко, и большинство эмуляторов API так и остаются эмуляторами какой-то конкретной версии операционной системы. Так, в Windows NT/2000 до сих пор встроен эмулятор для приложений OS/2 версии 1.x. Но самый большой недостаток ВМ с эмуляцией API гостевой ОС — это ее ориентация на конкретную операционную систему.
Примеры продуктов, выполненных по технологии эмуляции API гостевой ОС:
1) Проект с открытым кодом Wine (Wine Is Not an Emulator, «Wine — это не эмулятор»), позволяющий запускать DOS-, Winl6- и Win32-пpилoжeния под управлением операционных системам Linux и Unix; 2) Продукт Win4Lin компании Netraverse, позволяющий запускать операционные системы семейства Windows под управлением операционной системы Linux; 3) Проект с открытым кодом DOSEMU, позволяющий запускать DOS-приложения под управлением операционной системы Linux; 4) Проект с открытым кодом User Mode Linux (UML), позволяющий запусксть несколько копий операционной системы Linux на одном компьютере (в настоящее время встроен в ядро Linux версии 2.6); 5) Технология Virtuozzo, разработанная российской компанией SWsoft и позволяющая запускать несколько копий операционной системы Linux на одном компьютере.
|
|
|
|