The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск эмулятора QEMU 6.0"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск эмулятора QEMU 6.0" +/
Сообщение от Аноним (56), 07-Май-21, 06:18 
> Просветите чем эмулятор от гипервизора отличаются и как они связаны?

Под гипервизором обычно понимают "программу уровнем выше ядра". Если ядро - supervisor mode, то над ним может быть hypervisor mode. Супервизор супервизоров. Взаимоотношение ядро <-> гипервизор немного похоже на взаимоотношение программа <-> супервизор (aka ядро). Только теперь caller - ядро, а исполнитель - железо и, вот, гипервизор.

Идея в том что железо, конечно, рубит привилегированые операции guest'а. А обрабатывает исключения гипервизор, который арбитрирует потуги, делит ресурсы, а при случае подвирает ОС и их ядрам что вон те привилегированные запросы к железу - прокатили. Хоть они и ни разу не - проц кинул исключение, гипервизор пришел, посмотрел, что-то сделал, вернул результат как будто и правда сработало. Операционка не заметила подвоха и ее ядро работае как будто всем и рулит, хоть это уже и не так. Плюс этого подхода в том что большую часть операций guest все же напрямую или почти напрямую делает на реальном железе - и скорость выполнения близка к железной.

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

Под эмулятором же обычно понимают "программную реализацию оборудования". Простой пример: запускаем программу, программа читает опкоды из вон того бинарного потока и глядя на них делает то же что делал бы настоящий железный проц (меняет внутреннее состояние так же как настоящий проц). При этом совершенно не обязательно обладать тем процом, проц хоста может быть любым, лишь бы программу эмулятора мог запустить. Этот номер можно провернуть и с всеми остальными железками, так что эмулятор может эмулировать и вообще целиком всю систему. Поэтому какой-нибудь x86 может на раз прикинуться Raspberry Pi, хоть у него и нет ARM'овского процессора (точность и полнота эмуляции отдельный вопрос, но все же).

Эмуляция сильно гибче - можно изобразить вообще совсем все, незвисимо от возможностей и архитектуры своего железа. Вопрос в том с какой скоростью. Некто на AtMega сэмулировал ARMv5 с MMU и загрузил там убунту наример. Просто это был очень медленный "ARM" из-за того что "хост" убогий по фичам и слабосильный.

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

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск эмулятора QEMU 6.0, opennews, 30-Апр-21, 13:00  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру