Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы среды и оболочки. Шабалин,....doc
Скачиваний:
40
Добавлен:
15.11.2018
Размер:
4.25 Mб
Скачать

1.2. Тип эмуляции виртуальных компьютеров

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

На сегодняшний день известны 3 основных типа эмуляции работы персонального компьютера, имеющие свои плюсы и минусы [8]:

  1. Эмуляция API операционной системы;

  2. Полная эмуляция;

  3. Квази-эмуляция.

Эмуляция API операционной системы. Обычно приложения работают в изолированном адресном пространстве и взаимодействуют с оборудованием при помощи API, предоставляемым операционной системой.

API (Application Programming Interface) – интерфейс прикладных программ. Представляет собой библиотеку стандартных функций, которые могут использоваться для быстрого снабжения приложения необходимой функциональностью. Если две операционные системы совместимы по своим API (например, Windows 98 и Windows 2000), то приложения, разработанные для одной из них, будут работать и на другой. Если две операционные системы несовместимы по своим API (например, Windows 2000 и Linux), то существует способ перехватить обращения приложений к API и сымитировать поведение одной операционной системы средствами другой операционной системы.

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

Кроме того, поддерживать эмуляцию API активно развивающейся операционной системы (например, такой, как Windows) очень нелегко, и большинство эмуляторов API так и остаются эмуляторами какой-то конкретной версии операционной системы. Например, в Windows NT/2000 до сих пор встроен эмулятор для приложений OS/2 версии 1.x, а в последних версиях OS/2 Warp 4 есть возможность запуска приложений Windows 3.11. Но самый большой минус типа эмуляции API – это его строгая ориентация на конкретную операционную систему. Иными словами, для запуска в нем приложения другой операционной системы необходимо все переписывать с нуля.

Примерами продуктов, выполненных по технологии эмуляции API операционной системы, являются следующие:

      • проект с открытым кодом Wine (Wine Is Not an Emulator), позволяющий запускать приложения DOS, Win16 и Win32 под операционными системами Unix;

      • продукт Win4Lin компании Netraverse, позволяющий запускать операционные системы семейства Windows под операционной системой Linux;

      • проект с открытым кодом DOSEMU, позволяющий запускать приложения MS-DOS под операционной системой Linux;

      • проект с открытым кодом User Mode Linux (UML), позволяющий запускать несколько копий операционной системы Linux на одном компьютере;

      • технология Virtuozzo, разработанная российской компанией SWsoft и позволяющая запускать несколько копий операционной системы Linux на одном компьютере.

Полная эмуляция. Проекты, выполненные по технологии полной эмуляции, работают как интерпретаторы. Они последовательно выбирают код гостевой операционной системы и эмулируют поведение каждой отдельно взятой инструкции. Поскольку при этом полностью эмулируется поведение как процессора, так и всех внешних устройств виртуального Intel x86 компьютера, то существует возможность запускать эмулятор на компьютерах с совершенно другой архитектурой, например на рабочих станциях iMac или на рисковых серверах Sun. Самый серьезный недостаток этого подхода заключается в катастрофической потере производительности гостевой операционной системы.

Скорость работы гостевых приложений может упасть в 100–1000 раз, что означает практическую невозможность нормальной работы с гостевой операционной системой внутри эмулятора. Тем не менее существуют некоторые технологии, такие, например, как динамическая трансляция, позволяющие увеличить скорость полной эмуляции. Полные эмуляторы чаще всего используются в качестве низкоуровневых отладчиков для исследования и трассировки операционных систем.

Примерами проектов, выполненных по технологии полной эмуляции, являются следующие:

      • проект с открытым кодом Bochs, позволяющий запускать различные операционные системы Intel x86 под Linux, Windows, BeOS и Mac OS;

      • продукт Simics компании Virtutech, позволяющий запускать и отлаживать различные операционные системы Intel x86 под Windows и другими операционными системами.

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

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

Примерами проектов, выполненных по технологии квази-эмуляции, являются следующие:

      • виртуальная машина Parallels Workstation, разработанная российской компанией «Параллели» по заказу немецкой компании NetSys GmbH. Parallels Workstation позволяет запускать такие гостевые операционные системы, как OS/2, Linux, QNX, MS-DOS и многие другие. В настоящий момент существует три продукта: Parallels Workstation для Windows NT/2000/XP, Parallels Workstation для Linux и Parallels Workstation для FreeBSD;

      • технология Virtual Platform компании VMware, позволяющая запускать большое количество гостевых операционных систем. Компания VMware предлагает четыре продукта: VMware Workstation для Windows NT/2000/XP/Vista, VMware Workstation для Linux, VMware GSX Server (Group server) и VMware ESX Server (Enterprise server);

      • технология Microsoft Virtual PC компании Microsoft позволяет запускать такие гостевые операционные системы, как OS/2, Microsoft Windows и DOS;

      • проект с открытым кодом Virtual BOX компании SUN, позволяющая запускать большое количество гостевых операционных систем. Компания SUN предлагает два продукта: Virtual BOX для Windows и Virtual BOX для Linux;

      • проект с открытым кодом Plex86, позволяющий запускать различные операционные системы Intel x86 под Linux.

Проанализировав достоинства и недостатки различных методов эмуляции, приходим к следующим выводам:

  • при эмуляции API операционной системы можно поставить одну операционную систему и работать одновременно как с ее приложениями, так и с приложениями другой операционной системы, но при этом падает коэффициент совместимости и становится практически невозможной поддержка различных платформ;

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

  • квази-эмуляция является наиболее практичным и перспективным типом эмуляции, поскольку при его использовании сохраняется довольно высокая производительность операционных систем и большой уровень интеграции с аппаратным обеспечением, что позволяет широко применять программные продукты этого направления в различных сферах деятельности.

На сегодняшний день существуют, как минимум, 2 представителя данного класса программных продуктов, удовлетворяющие всем перечисленным ранее критериям выбора виртуального компьютера для образовательных целей:

1. Microsoft Virtual PC 2007 (http://www.microsoft.com);

2. SUN Virtual Box 2.2.0 (http://www.virtualbox.org).

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

Так как данное учебное пособие посвящено изучению операционных систем Microsoft, то наилучшим средством для их эмуляции, по нашему мнению, является собственная утилита компании Microsoft Virtual PC 2007 [13].