Компьютер как набор виртуальных машин

Операционная система обычно считает, что управляет процессором, памятью и устройствами напрямую. Гипервизор — специальный слой между «железом» и системами — подменяет эту картину виртуальными ресурсами. Каждой виртуальной машине он показывает собственный процессор, объём памяти и устройства, хотя физически они общие.

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

Почему системы не мешают друг другу

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

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

Где это особенно полезно

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

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