Виртуальная машина

редактировать

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

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

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

Содержание

  • 1 Определения
    • 1.1 Системные виртуальные машины
    • 1.2 Виртуальные машины процесса
  • 2 История
  • 3 Полная виртуализация
    • 3.1 Аппаратная виртуализация
  • 4 Операционная система- уровень виртуализации
  • 5 См. также
  • 6 Ссылки
  • 7 Дополнительная литература
  • 8 Внешние ссылки

Определения

Системные виртуальные машины

«Виртуальная машина» была Первоначально Попек и Голдберг определяли его как «эффективную изолированную копию реальной компьютерной машины». Текущее использование включает виртуальные машины, которые не имеют прямого отношения к какому-либо реальному оборудованию. Физическое "реальное" оборудование, на котором работает виртуальная машина, обычно называется "хостом", а виртуальная машина, эмулируемая на этой машине, обычно называется "гостевой". Хост может эмулировать несколько гостей, каждый из которых может эмулировать различные операционные системы и аппаратные платформы.

Желание запускать несколько операционных систем было первоначальным мотивом для виртуальных машин, чтобы обеспечить разделение времени между несколькими однозадачными операционными системами. В некоторых отношениях системную виртуальную машину можно рассматривать как обобщение концепции виртуальной памяти, которая исторически предшествовала ей. IBM CP / CMS, первые системы, позволяющие полную виртуализацию, реализовали разделение времени, предоставив каждому пользователю однопользовательскую операционную систему Система разговорного монитора (CMS). В отличие от виртуальной памяти, системная виртуальная машина дает пользователю право писать привилегированные инструкции в своем коде. Этот подход имел определенные преимущества, такие как добавление устройств ввода / вывода, не допускаемых стандартной системой.

По мере развития технологий виртуальной памяти для целей виртуализации могут применяться новые системы избыточного использования памяти. для управления распределением памяти между несколькими виртуальными машинами в одной операционной системе компьютера. Страницы памяти, которые имеют идентичное содержимое, могут быть совместно использованы несколькими виртуальными машинами, работающими на одной физической машине, что может привести к их сопоставлению с одной и той же физической страницей с помощью метода, называемого слияние одной страницы ядра (КСМ). Это особенно полезно для страниц, предназначенных только для чтения, таких как страницы, содержащие сегменты кода, что характерно для нескольких виртуальных машин, на которых запущено одно и то же или подобное программное обеспечение, программные библиотеки, веб-серверы, компоненты промежуточного программного обеспечения и т. Д. Гостевые операционные системы не нуждаются в совместимость с оборудованием хоста, что позволяет запускать разные операционные системы на одном компьютере (например, Windows, Linux или предыдущие версии операционной системы) для поддержки программное обеспечение будущего.

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

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

Виртуальные машины процессов

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

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

Этот тип виртуальных машин стал популярным с языком программирования Java, который реализован с использованием Виртуальная машина Java. Другие примеры включают виртуальную машину Parrot и .NET Framework, которая работает на виртуальной машине, которая называется Common Language Runtime. Все они могут служить слоем абстракции для любого компьютерного языка.

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

В отличие от других виртуальных машин процессов, эти системы не предоставляют конкретный язык программирования, а встроены на существующем языке; обычно такая система предоставляет привязки для нескольких языков (например, C и Fortran ). Примеры: Параллельная виртуальная машина (PVM) и Интерфейс передачи сообщений (MPI). Они не являются строго виртуальными машинами, потому что приложения, работающие наверху, по-прежнему имеют доступ ко всем службам ОС и, следовательно, не ограничиваются системной моделью.

История

И системные виртуальные машины, и виртуальные машины процессов относятся к 1960-м годам и продолжают активно развиваться.

Системные виртуальные машины выросли из разделения времени, что заметно реализовано в Совместимой системе разделения времени (CTSS). Разделение времени позволяло нескольким пользователям использовать компьютер одновременно : казалось, что каждая программа имеет полный доступ к машине, но одновременно выполнялась только одна программа, при этом система переключалась между программами во временных интервалах, экономя и каждый раз восстанавливая состояние. Это превратилось в виртуальные машины, в частности, с помощью исследовательских систем IBM: M44 / 44X, в которых использовалась частичная виртуализация, и CP-40 и SIMMON., в котором использовалась полная виртуализация, и были ранними примерами гипервизоров. Первой широко доступной архитектурой виртуальных машин была CP-67 / CMS (подробности см. В История CP / CMS ). Важное различие заключалось между использованием нескольких виртуальных машин в одной хост-системе для разделения времени, как в M44 / 44X и CP-40, и использованием одной виртуальной машины в хост-системе для прототипирования, как в SIMMON. Эмуляторы, с аппаратной эмуляцией более ранних систем для совместимости, восходят к IBM System / 360 в 1963 году, тогда как программная эмуляция (так называемая «симуляция») предшествовала ей.

Виртуальные машины процессов возникли первоначально как абстрактные платформы для промежуточного языка, используемого в качестве промежуточного представления программы компилятором ; ранние примеры датируются примерно 1966 годом. Примером начала 1966 года была машина с O-кодом , виртуальная машина, которая выполняет O-code (объектный код), выдаваемый интерфейсом . компилятора BCPL. Эта абстракция позволила легко перенести компилятор на новую архитектуру за счет реализации нового back end, который взял существующий O-код и скомпилировал его в машинный код для базовой физической машины. В языке Euler использовался аналогичный дизайн с промежуточным языком P (переносимый). Это было популяризировано примерно в 1970 году Pascal, особенно в системе Pascal-P (1973) и Pascal-S compiler (1975), в которых он был назван p-код и получившаяся машина как машина p-кода. Это оказало влияние, и виртуальные машины в этом смысле часто назывались машинами с p-кодом. Помимо того, что это промежуточный язык, p-код Pascal также выполнялся непосредственно интерпретатором, реализующим виртуальную машину, в частности, в UCSD Pascal (1978); это повлияло на более поздние интерпретаторы, особенно на виртуальную машину Java (JVM). Другим ранним примером был SNOBOL4 (1967), который был написан на языке реализации SNOBOL (SIL), ассемблере для виртуальной машины, который затем был нацелен на физические машины путем переноса на их родной ассемблер через макроассемблер. Однако с тех пор макросы перестали быть популярными, поэтому такой подход оказался менее влиятельным. Виртуальные машины процессов были популярным подходом к реализации раннего программного обеспечения микрокомпьютеров, включая Tiny BASIC и приключенческие игры, от разовых реализаций, таких как Pyramid 2000, до универсального движка, такого как z-машина от Infocom, которую Грэм Нельсон утверждает, это «возможно, самая портативная виртуальная машина из когда-либо созданных».

Значительный прогресс произошел в реализация Smalltalk -80, в частности реализация Deutsch / Schiffmann, которая выдвинула JIT-компиляцию как подход к реализации, использующий виртуальную машину процесса. Позже известными виртуальными машинами Smalltalk были VisualWorks, Squeak Virtual Machine и Strongtalk. Родственным языком, который привел к появлению большого количества инноваций в виртуальных машинах, был язык программирования Self, который впервые ввел адаптивную оптимизацию и сборку мусора поколений. Эти методы оказались коммерчески успешными в 1999 году в виртуальной машине Java HotSpot. Другие нововведения включают наличие виртуальной машины на основе регистров для лучшего соответствия базовому оборудованию, а не виртуальной машины на основе стека, которая больше соответствует языку программирования; в 1995 году это была первая виртуальная машина Dis для языка Limbo. OpenJ9 является альтернативой HotSpot JVM в OpenJDK и представляет собой проект eclipse с открытым исходным кодом, требующий лучшего запуска и меньшего потребления ресурсов по сравнению с HotSpot.

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

Логическая диаграмма полной виртуализации

В полной виртуализации виртуальная машина имитирует достаточно оборудования, чтобы позволить немодифицированную «гостевую» ОС (разработанную для того же набора инструкций ) для изолированного запуска. Этот подход был впервые применен в 1966 году с IBM CP-40 и CP-67, предшественниками семейства VM.

Примеры за пределами поля мэйнфрейма включают Parallels Workstation, Parallels Desktop для Mac, VirtualBox, Virtual Iron, Oracle VM, Virtual PC, Virtual Server, Hyper-V, VMware Workstation, VMware Server (прекращено, ранее называлось GSX Server), VMware ESXi, QEMU, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro и Egenera vBlade technology.

Виртуализация с аппаратной поддержкой

В виртуализации с аппаратной поддержкой аппаратное обеспечение обеспечивает поддержку архитектуры, которая упрощает создание монитора виртуальных машин и позволяет изолированно запускать гостевые ОС. Аппаратная виртуализация была впервые представлена ​​в IBM System / 370 в 1972 году для использования с VM / 370, первой операционной системой виртуальных машин, предлагаемой IBM в качестве официального продукта.

В В 2005 и 2006 годах Intel и AMD предоставили дополнительное оборудование для поддержки виртуализации. Sun Microsystems (сейчас Oracle Corporation ) добавила аналогичные функции в свои процессоры UltraSPARC T-Series в 2005 году. Примеры платформ виртуализации, адаптированных к такому оборудованию, включают KVM, VMware Workstation, VMware Fusion, Hyper-V, Windows Virtual PC, Xen, Parallels Desktop для Mac, Oracle VM Server для SPARC, VirtualBox и Parallels Workstation.

В 2006 году поддержка 32- и 64-разрядного оборудования x86 первого поколения была обнаружено, что они редко обеспечивают преимущества в производительности по сравнению с программной виртуализацией.

Виртуализация на уровне операционной системы

При виртуализации на уровне операционной системы физический сервер виртуализируется на уровне операционной системы, что позволяет использовать несколько изолированных и безопасные виртуализированные серверы для работы на одном физическом сервере. «Гостевые» операционные среды используют тот же запущенный экземпляр операционной системы, что и хост-система. Таким образом, то же самое ядро ​​операционной системы также используется для реализации «гостевой» среды, и приложения, работающие в данной «гостевой» среде, рассматривают ее как автономную систему. Первой реализацией были тюрьмы FreeBSD ; другие примеры включают Docker, Solaris Containers, OpenVZ, Linux-VServer, LXC, AIX Разделы рабочей нагрузки, контейнеры Parallels Virtuozzo и виртуальные учетные записи iCore.

См. Также

Ссылки

Далее чтение

  • Джеймс Э. Смит, Рави Наир, Виртуальные машины: универсальные платформы для систем и процессов, Морган Кауфманн, май 2005 г., ISBN 1-55860-910-5, 656 страниц (охватывает как процессные, так и системные виртуальные машины)
  • Крейг, Иэн Д. Виртуальные машины. Springer, 2006, ISBN 1-85233-969-1, 269 страниц (охватывает только виртуальные машины процессов)

Внешние ссылки

Последняя правка сделана 2021-06-18 03:36:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте