Диспетчер виртуальных машин (VMM) и гипервизор относятся к одному и тому же?

Это возможно сделать с коллектором, который затем создает новый поток:

class Accumulator {
    public static void accept(List<Integer> list, Integer value) {
        list.add(value + (list.isEmpty() ? 0 : list.get(list.size() - 1)));
    }

    public static List<Integer> combine(List<Integer> list1, List<Integer> list2) {
        int total = list1.get(list1.size() - 1);
        list2.stream().map(n -> n + total).forEach(list1::add);
        return list1;
    }
}

Это используется как:

myIntStream.parallel()
    .collect(ArrayList<Integer>::new, Accumulator::accept, Accumulator::combine)
    .stream();

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

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

Я протестировал ее с помощью IntStream.range(0, 10000).parallel(), и она функционирует правильно.

0
задан peachykeen 3 March 2019 в 21:41
поделиться

2 ответа

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

0
ответ дан prl 3 March 2019 в 21:41
поделиться

Не читал книгу, поэтому не может комментировать, если вы не дадите какую-то конкретную выдержку из книги.

В общем, VMM относится к диспетчеру виртуальных машин, который является инструментом для управления виртуальной машиной с некоторого сервера (гипервизора), локального / удаленного.

Гипервизор, с другой стороны, относится к разделителю, который способен запускать на них виртуальные машины.

0
ответ дан Vikrant Pawar 3 March 2019 в 21:41
поделиться
Другие вопросы по тегам:

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