1

Я установил виртуальную машину Linux с VBox, а основной операционной системой является Windows. Я хотел бы понять, как ОЗУ работает на виртуальной машине.

  • Распределяет ли хост гостевой ОЗУ как единый сервис?
  • или ОЗУ непосредственно выделено гостем?

Короче говоря, хост выглядит как гость как одно приложение, или гостевая система напрямую назначает свои потребности аппаратному обеспечению? Я не изучал информатику или что-то еще, поэтому я воспринимаю проблему следующим образом:

  • Если я выполняю один расчет в гостевой системе, а хост-система воспринимает гостя как единый сервис, то расчет будет одним из многих сервисов, которые гость производит в то время, и мой расчет будет иметь задержку.
  • Если гость напрямую соединяется с ОЗУ, то другие службы уже выделены в ОЗУ, и они колеблются, а новые будут назначаться быстрее.

1 ответ1

2

Во-первых: распределение оперативной памяти всегда находится под окончательным контролем операционной системы хоста.

Помимо этого, это зависит.

С помощью простого гипервизора вы просто сообщаете гипервизору, сколько оперативной памяти получает каждая виртуальная машина. Этот объем вычитается из доступной оперативной памяти вашей хост-системы, когда виртуальная машина запускается и "используется" гипервизором, пока она работает. Операционная система, работающая на виртуальной машине, работает как всегда, выделяя оперативную память процессам и операционным системам. Старый Microsoft "Virtual PC", который широко использовался для запуска "XP Mode" в Windows 7, работает таким образом. VirtualBox тоже. В обоих случаях, если вы сконфигурируете виртуальную машину на 1 ГБ ОЗУ и запустите ее, у вашего хоста внезапно будет на 1 ГБ меньше "доступной" ОЗУ. Обычно он не очень эффективен в использовании ОЗУ, но прост в реализации.

При использовании более сложного гипервизора объем, выделяемый виртуальной машине, является просто верхним пределом. Гостевая ОС видит столько ОЗУ как "общее", но за кулисами часть или даже большая часть того, что гость думает о том, что ОЗУ может быть виртуальной, насколько это касается хоста. Это особенно верно в отношении того, что Windows называет "свободной" или "нулевой" ОЗУ в гостевой системе - поскольку у нее нет интересующего контента, нет необходимости хранить ее где-либо. Но даже оперативная память, которую гость считает "используемой", может быть виртуальной на хосте с содержимым в файле подкачки или в отображенном файле.

Гостевая ОС продолжает обрабатывать ОЗУ, как и всегда, но если гостевая ОС ссылается на часть этой ОЗУ, которой еще нет, гипервизор может выделить гостевой памяти больше фактической ОЗУ. (Другими словами, ссылка на память, которая, кажется, работает без ошибки страницы в гостевой системе, может вызвать ошибку страницы в хосте.) В пределах общего объема доступной оперативной памяти и настроенных пределов гипервизор регулирует объем оперативной памяти, который находится "в" гостевой ОС, чтобы попытаться сохранить низкий уровень ошибок страниц на узле.

Это обычно называется "тонкой подготовкой". Это более сложно реализовать в гипервизоре, но приводит к более эффективному использованию оперативной памяти хоста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .