Что такое виртуальная машина?

время 4 МИН
звезда звезда звезда ЛЕГКО
Виртуальные машины

Эта статья для тех кто хочет развеять туман волшебства вокруг термнина виртуальная машина, поехали!🙂

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

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

Так уж случилось, операционных систем есть огромное множество с разной степенью популярности, а программы, как правило, пишутся под конкретную ОС, так скажем, программа, написанная под Mac OS, не запуститься под Windows или Linux. И вот представьте, вам нужно запустить позарез программу, у которой нет версии для вашей ОС. Грусть, печаль, безысходность. Нужен либо еще один ПК, либо ухитриться и поставить вторую операционную систему рядом с уже имеющейся и тогда вам придется только лишь перезагрузить компьютер и зайти в другую ОС, долго и не очень удобно.

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

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

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

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

Еще варианты в быту: поставить Windows XP чтоб поиграть в Казаков или Hitman 2, программа для умного дома Home Assistant вообще распространяется как образ с ОС которую либо запускать на реальном железе либо все в той же виртуальной машине

Спасибо, что заглянули,
добавляйтесь в Telegram канал и будьте в курсе новинок.
Если Вам было интересно, можете поддержать автора

Что еще почитать?

Что такое контейнеры?

2023, 19 АВГУСТА
время 5 МИН
звезда звезда звезда СРЕДНЕ
Основы
linux
containers
Расскажу понятно про Linux-контейнеры
на главную