Традиционный компьютер работает с операционной системой хоста, специально разработанной для его аппаратной архитектуры. После виртуализации различные пользовательские приложения, управляемые их собственными операционными системами (гостевыми ОС), могут работать на одном и том же оборудовании, независимо от хост-ОС. Это часто делается путём добавления дополнительного программного обеспечения, называемого уровнем виртуализации. Этот уровень виртуализации известен как гипервизор или монитор виртуальной машины (VMM). Виртуальные машины показаны в верхних полях, где приложения работают со своими гостевыми ОС через виртуализированные ресурсы ЦП, памяти и ввода-вывода.
Основная функция уровня программного обеспечения для виртуализации состоит в том, чтобы виртуализировать физическое оборудование хост-машины в виртуальные ресурсы, предназначенные исключительно для виртуальных машин. Это может быть реализовано на различных операционных уровнях. Программное обеспечение для виртуализации создаёт абстракцию виртуальных машин, вставляя уровень виртуализации на различных уровнях компьютерной системы. Общие уровни виртуализации включают в себя уровень архитектуры набора команд (ISA), уровень аппаратного обеспечения, уровень операционной системы, уровень поддержки библиотеки и уровень приложения.
В вычислительной технике виртуализация означает создание виртуальной (а не фактической) версии чего-либо, это включает в себя аппаратное обеспечение виртуального компьютера, виртуальные запоминающие устройства и ресурсы виртуальной сети. Простой пример виртуализации – это создание разделов на жёстком диске. Здесь вы фактически не разбиваете свой жесткий диск на части, а фактически создаёте только его разделы.
Уровни виртуализации
Виртуализация на уровне архитектуры набора команд (ISA)
- У каждой машины есть набор инструкций.
- Этот набор инструкций является интерфейсом между программным и аппаратным обеспечением.
- С помощью этой инструкции программное обеспечение может взаимодействовать с оборудованием.
- Поэтому, когда виртуализация осуществляется на этом уровне, мы создаём эмулятор, который получает все инструкции от виртуальных машин, например, если виртуальная машина хочет получить доступ к принтеру, эта инструкция будет передана в этот эмулятор.
- Затем эмулятор интерпретирует, какой это тип инструкции, и затем сопоставляет эту инструкцию с инструкцией хост-машины, а затем эта инструкция будет выполняться на хост-машине, а результаты будут переданы эмулятору, а эмулятор вернёт её виртуальной машине.
- Этот метод простой в реализации, но так как каждая инструкция должна интерпретироваться перед отображением, слишком много времени расходуется и производительность снижается.
Виртуализация на уровне аппаратного уровня абстракции (HAL)
- Как и в случае виртуализации на уровне ISA, производительность снижается из-за интерпретации каждой инструкции, поэтому для преодоления этой виртуализации мы используем уровень HAL.
- В этом типе мы сопоставляем виртуальные ресурсы с физическими ресурсами.
- Мы не интерпретируем каждую инструкцию, а просто проверяем, является ли она привилегированной или нет.
- Если инструкция не является привилегированной, мы просто разрешаем нормальное выполнение, потому что виртуальные и физические ресурсы уже сопоставлены, поэтому доступ к ним простой.
- Но если инструкция является привилегированной, мы передаём управление VMM (Virtual Machine Monitor), и она соответствующим образом обрабатывает инструкцию.
- Может быть много виртуальных машин, работающих одновременно на одной и той же хост-системе, поэтому, если привилегированные инструкции, такие как управление памятью или задачи планирования, не обрабатываются должным образом, система может дать сбой.
- Даже после многих улучшений существуют определенные исключения, которые не могут быть обнаружены этим методом, что является недостатком этого типа виртуализации.
Виртуализация на уровне операционной системы (OS)
- При виртуализации на уровне HAL каждая виртуальная машина создается с нуля, то есть путем установки OS, наборов приложений, сетевых систем и т. д.
- В облаке иногда нам нужно инициализировать 100 виртуальных машин одновременно. Если мы используем виртуализацию на уровне аппаратного уровня абстракции (HAL), это может занять слишком много времени.
- Таким образом, чтобы преодолеть это в виртуализации на уровне операционной системы, мы разделяем операционную систему между виртуальными машинами и оборудованием.
- Поэтому мы сохраняем базовую ОС и устанавливаем только различия в каждой отдельной виртуальной машине.
- Например, если мы хотим установить разные версии Windows на виртуальных машинах (ВМ), вы сохраняете базовую операционную систему Windows одинаковой и устанавливаете только различия между каждой виртуальной машиной.
- Недостатком этого типа является то, что вы можете установить только те операционные системы в виртуальных машинах, чья родительская семья OS такая же, как, например, вы не можете установить Ubuntu на виртуальной машине, базовой операционной системой которой является Windows.
Виртуализация на уровне библиотеки или языка программирования
- Когда разработчики разрабатывают определенные приложения, они спасают пользователя от всех деталей кодирования, предоставляя им Application User Interface (API).
- Это дало новую возможность для виртуализации.
- В этом типе мы используем библиотечные интерфейсы для предоставления другой виртуальной среды (VE) для этого приложения.
- Короче говоря, мы предоставляем пользователю эмулятор, с помощью которого пользователь может запускать приложения различных OS.
- Примером этого является инструмент WINE, который использовался в основном пользователями Mac для игры Counter Strike 1.6, которая в начале была доступна только для Windows.
Виртуализация на уровне приложений
- В этом типе виртуализации виртуальные машины запускаются как приложение в операционной системе хоста.
- Мы создаём уровень виртуализации, который присутствует над операционной системой хоста, и он инкапсулирует все приложения из основной OS.
- Когда все приложения загрузятся, Host OS предоставит им среду выполнения. Но уровень виртуализации заменяет часть этой среды выполнения и предоставляет виртуальную среду для виртуализированных приложений.
Кулер (система охлаждения) совокупность вентилятора и радиатора, охлаждающих центральный процессор. Блок питания залог стабильной и долговечной работы компьютера. Отвечает за обеспечение корректного питания всех компонентов компьютера.