Я знаю, это звучит очень общий вопрос.
Представьте, что 2 ОС работают с использованием виртуализации, например виртуализации на уровне операционной системы. Как обрабатывается параллелизм, если обе размещенные ОС используют один и тот же ресурс, и как это работает?
Виртуализированные ОС на самом деле никогда не видят физические ресурсы, они «думают», что работают на другом оборудовании, что эмулируется уровнем виртуализации; Итак, хотя виртуальная машина думает, что у нее есть контроллер SCSI и локальный диск SCSI, возможно, это фактически соответствует файлу в файловой системе на LUN в SAN.
Параллельный доступ обрабатывается уровнем виртуализации в зависимости от типа ресурса; если на хосте четыре физических процессора и две виртуальные машины хотят использовать по одному, они могут безопасно делать это одновременно, но их рабочая нагрузка будет фактически разделена между двумя физическими процессорами. Если же есть только один физический ЦП, то планировщик хоста будет обрабатывать параллелизм и выделять каждой виртуальной машине некоторое время ЦП. Тот же принцип применяется к каждому ресурсу (диску, сети и т. Д.).
Обычно гостевым ОС не разрешен доступ к физическому оборудованию. Они могут увидеть виртуальное представление. Например, у них есть виртуальные диски, которые обычно сопоставляются с файлами (но не обязательно). Порты Com, Printer, Network и т. Д. Работают одинаково.
ВМ, с точки зрения ОС хоста, является процессом, и этому процессу назначаются ресурсы, как и любому другому процессу. Это относится к обработке ввода-вывода, очередям ЦП и т. Д.
это очень кратко и, конечно, не вдаваясь в SMP, VT и VT-d