Как работает ОЗУ на виртуальной машине?

1032
Commissar Vasili Karlovic

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

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

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

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

1 ответ на вопрос

2
Jamie Hanrahan

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

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

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

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

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

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

есть еще один метод, называемый * раздувание памяти *, поддерживаемый как virtualbox, так и vmware для некоторых гостевых ОС, который также позволяет гостю изменять объем памяти, но это не тонкая подготовка phuclv 6 лет назад 0
Как я видел, «раздувание» - это скорее механизм, который является частью тонкой подготовки. Это позволяет HV легко отнимать оперативную память у гостя или увеличивать объем оперативной памяти, выделенной гостю. «Раздувание» относится к используемому методу: выделение и обращение к целой куче виртуальной памяти, что приводит к частному выделению ОЗУ - после этого HV может «переместить» эту ОЗУ на другую сторону. Если вы _не_ не выполняете тонкую настройку, то есть если вся ОЗУ, которая разрешена для гостя, фактически выделяется гостю при запуске гостя, то "раздувание" будет совершенно бессмысленным. Jamie Hanrahan 6 лет назад 0

Похожие вопросы