Виртуальные машины

Автор работы: Пользователь скрыл имя, 20 Марта 2014 в 19:17, курсовая работа

Краткое описание

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

Вложенные файлы: 1 файл

Введение.doc

— 2.71 Мб (Скачать файл)

Введение

 

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

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

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

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

 

1 Общая часть

1.1 Определение и понятие

 

Чтобы построить полный взгляд на виртуальные машины, разберем для начала, а что такое виртуальная машина?

Виртуальная машина — программная или аппаратная среда, исполняющая некоторый код (например, байт-код, шитый код, p-код  или машинный код реального процессора), или спецификация такой системы (например: «виртуальная машина языка программирования Си»).

Для сравнения приведем несколько других определенней, а именно: Виртуальная машина - это полностью изолированный программный контейнер, способный выполнять собственную операционную систему и приложения, как физический компьютер. Виртуальная машина работает абсолютно так же, как физический компьютер, и содержит собственные виртуальные (т.е. программные) ЦП, ОЗУ, жесткий диск и сетевую интерфейсную карту (NIC).

Проще говоря, виртуальная машина – это программа, которую вы запускаете из своей операционной системы. Программа эмулирует реальную машину. На виртуальные машины, как и на реальные, можно ставить операционные системы. У неё есть BIOS, отведенное место на вашем жестком диске, сетевые адаптеры для соединения с реальной машиной, сетевыми ресурсами или другими виртуальными машинами.

 

1.2 Архитектура виртуальных машин. Абстракция и виртуализация

 

Виртуализация один из важных инструментов разработки компьютерных систем, а сами виртуальные машины используются в самых разных областях.

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

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

Операционная система абстрагируется от тонкостей адресации на жестком диске, от его секторов и дорожек, чтобы для прикладной программы диск выглядел как набор файлов переменного размера. Опираясь на эту абстракцию, «прикладные» программисты могут создавать файлы, записывать и читать данные, не зная устройства и физической организации жесткого диска.

Концепция архитектуры системы команд компьютера (instruction set architecture, ISA) наглядно иллюстрирует преимущества хорошо определенных интерфейсов. Они позволяют разрабатывать взаимодействующие компьютерные подсистемы не только в разных организациях, но и в разные периоды, иногда разделенные годами. Например, Intel и AMD создают микропроцессоры с системой команд IA-32 (x86), в то время как разработчики Microsoft пишут программное обеспечение, которое компилируется в эту систему команд. Поскольку обе стороны соблюдают спецификацию ISA, можно ожидать, что программное обеспечение будет правильно выполняться любым ПК на базе микропроцессора с архитектурой IA-32.

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

Виртуализация позволяет обойти эту несовместимость. Виртуализация системы или компонента (например, процессора, памяти или устройства ввода/вывода) на конкретном уровне абстракции отображает его интерфейс и видимые ресурсы на интерфейс и ресурсы реальной системы. Следовательно, реальная система выступает в роли другой, виртуальной системы или даже нескольких виртуальных систем.

В отличие от абстракции, виртуализация не всегда нацелена на упрощение или сокрытие деталей.

1.3 Классификация виртуальных машин

 

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

Процессная виртуальная машина — это виртуальная платформа для выполнения отдельного процесса. Она предназначена для поддержки процесса, создаётся при его активации и «умирает» после его окончания.

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

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

В раздел процессные ВМ – разные ISA входят динамические трансляторы. У них интерфейс чаще всего определяется на уровне ABI.

Системная виртуальная машина – полнофункциональная, постоянно действующая системная среда, служащая для поддержки операционной системы вместе с большим количеством её пользовательских процессов; она обеспечивает «гостевой» операционной системе доступ к виртуальным аппаратным средствам, в том числе к процессору и памяти, устройствам ввода/вывода, а иногда — и к графическому интерфейсу.

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

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

В интегральных системных виртуальных машинах производительность играет не первую роль, на первом месте точность воспроизведения функциональных возможностях.

 

1.4 Обзор технологии виртуальных машин.

 

В настоящее время существует множество схем виртуализации, таких как динамическая рекомпиляция, аппаратная виртуализации. Остановимся на трех наиболее  распространенных и перспективных технологиях более подробно:

  • Эмуляция API гостевой операционной системы.
  • Полная виртуализация.
  • Паравиртуализация.
  1. Эмуляция API (ApplicationProgrammingInterface) гостевой операционной системы.

Обычно приложения работают в изолированном адресном пространстве и взаимодействуют с оборудованием при помощи API, предоставляемым операционной системой. Если две операционные системы совместимы посвоим АРI (например, Windows 98 и Windows 2000), то приложения, разработанные для одной из них, будут работать и на другой. Если две операционные системы несовместимы посвоим API (например, Windows 2000 и Linux), то существует способ перехватить обращения приложений к АРI и сымитировать поведение одной операционной системы средствами другой операционной системы.

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

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

  • Проект WINE , позволяющий запускать приложения DOS, Win16 и Win32 под операционными системами Unix/Linux.
  • Проект с открытым кодом UserModeLinux (UМL), позволяющий запускать несколько копий операционной системы Linux на одном компьютере (встроен в ядро Linux версий 2.6).
  • Технология, используемая во FreeBSD для запуска приложений Linux.

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

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

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

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

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

  • Проект с открытым кодом Bochs, позволяющий запускать различные операционные системы Intel х86 под Linux, Windows, BeOS и Мас OS;
  • Продукт Virtual PC фирмы Microsoft позволяющий запускать различные x86-ОС на PC и Mac;
  • Проект Qemu - самый быстрый эмулятор различных архитектур на PC. При использовании модуля Accelerator практически сравнивается по производительности с виртуальными машинами.

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

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

Информация о работе Виртуальные машины