Найти тему

Зачем нужна VM, и как устроена память: Польза

Польза

Для чего виртуализация вообще людям нужна? Идея -- уйти от каких-то конкретных деталей машины.

  • Упрощение разработки -- польза, например, высокоуровневых языков.
  • Безопасность -- виртуальная память позволяет пользователям не знать конкретные физ. адреса, с которыми они работают.
  • Стабильность
  • Прозрачное управление ресурсами (если мыслить о памяти как о ресурсе, GC -- относительно прозрачный сложный менеджер ресурсов). Если посмотреть на большинство современных сборщиков мусора, это достаточно сложные программные компоненты с десятками тысяч строк кода, с достаточно сложными алгоритмами, но для обычного пользователя эта компонента является практически несуществующей -- практически нет даже операций для ызаимодействия с GC, а те, что есть, достаточно дурацкие. Явная инициализация сборщиков мусора, финализация в той джаве -- достаточно неудобные.
  • Организация обратной совместимости -- во многих компьютерных системах накапливается гигантское количество legacy-кода, который часто и по финансовым, и по практическим причинам невозможно переписать, и поэтому, если legacy-код можно продолжать исполнять, то это создаст людям достаточно большую гибкость в управлении ресурсами.Например, VirtualBox -- это изначально был небольшой немецкий стартап под названием AnnoTek, который работал ровно над следующим: была такая ОС -- OS/2 от IBM -- достаточно хорошая ОС, которая по маркетинговым причинам не полетела, была завалена Windows. Но за время ее существования было написано большое количество софта для нее, в т.ч. для немецкий банков. И вот эти вот немецкие банки очутились в очень странной ситуации -- у них было написано много ПО, важного для их функционирования, но у них не было компьютеров, на которых они могли бы исполнять эти программы, ибо OS/2 в какое-то время перестала поддерживаться и запускаться на более современных компьютерах.AnnoTek, осознав такую картину мира, написали гипервизор, который был способен исполнять ту самую OS/2, и продавали его банкам. Стартап затем купил Sun, но это совсем другая история. Вот такой типичный пример, когда виртуализация сильно помогла с обратной совместимостью.
  • Облачные вычисления -- классический пример виртуализующих технологий, в частности, один из важных аспектов виртуализации -- балансировка нагрузки; именно благодаря виртуализации можно покупать на Амазоне очень странные компьютеры, которые вообще в природе не существуют, либо потому что они слишком мощные, либо наоборот, но тем не менее, Амазон создает достаточно непрерывную верификацию именно за счет того, что при помощи виртуализации можно очень тонко контролировать реальное количество ресурсов, доступные компьютеру, и при этом ситуация с программами абсолютно не меняются -- программы, написанные под тот же Linux или Windows, точно так же продолжают исполняться, просто их менеджер ресурсов (в данном случае -- гипервизор, который контролирует контекст исполнения VM, отдает ему ровно столько ресурсов, за сколько уплачено).
  • Создание новых сущностей. Понятно, что такая технология виртуализации может моделировать что-то существующее (например, старые компьютеры, на которых исполнялся OS/2). Так как это программная модель, то на ней можно написать модель чего угодно, например, модель несуществующего компьютера (придумать свой идельный компьютер, придумать модель для него, а затем начать писать программы для него, и потом когда-нибудь воплотить его в кремнии), так что виртуализация позволяет делать прототипы и осуществлять раннюю разработку сложных компьютерных систем.Если вдуматься, JVM -- тоже компьютер, просто компьютер, никогда не существовавший, компьютер с объектно-ориентированным набором инструкций.

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

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

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

Вот эти вот аспекты -- это аспекты, которые существуют примерно в любой системе управления, в любой VM.

Зачем нужна VM, и как устроена память: Польза