Општи принципи рада КЕМУ-КВМ

Општи принципи рада КЕМУ-КВМ

Моје тренутно разумевање:

1) КВМ

КВМ (Виртуелна машина заснована на кернелу) је хипервизор (ВММ - Виртуал Мацхине Манагер) који ради као модул на Линук ОС-у. Хипервизор је неопходан да би се неки софтвер покренуо у непостојећем (виртуелном) окружењу и, у исто време, сакрио од овог софтвера прави физички хардвер на коме овај софтвер ради. Хипервизор делује као „слој“ између физичког хардвера (хост) и виртуелног ОС (гост).

Пошто је КВМ стандардни модул Линук кернела, он добија све погодности (управљање меморијом, планер, итд.) од кернела. И сходно томе, на крају све ове погодности иду гостима (јер гости раде на хипервизору који ради на/у Линук кернелу).

КВМ је веома брз, али сам по себи није довољан за покретање виртуелног ОС, јер ово захтева И/О емулацију. За И/О (процесор, дискови, мрежа, видео, ПЦИ, УСБ, серијски портови, итд.) КВМ користи КЕМУ.

2) КЕМУ

КЕМУ (Куицк Емулатор) је емулатор различитих уређаја који вам омогућава да покренете оперативне системе дизајниране за једну архитектуру на другој (на пример, АРМ –> к86). Поред процесора, КЕМУ емулира различите периферне уређаје: мрежне картице, ХДД, видео картице, ПЦИ, УСБ итд.

ради овако:

Инструкције/бинарни код (на пример, АРМ) се конвертују у међуплатформски независан код помоћу ТЦГ (Тини Цоде Генератор) претварача, а затим се овај бинарни код независан од платформе конвертује у циљне инструкције/код (на пример, к86).

АРМ –> постављање –> к86

У ствари, можете покренути виртуелне машине на КЕМУ на било ком хосту, чак и са старијим моделима процесора који не подржавају Интел ВТ-к (Интел Виртуализатион Тецхнологи) / АМД СВМ (АМД Сецуре Виртуал Мацхине). Међутим, у овом случају ће радити веома споро, због чињенице да је извршни бинарни код потребно два пута поново компајлирати у ходу, користећи ТЦГ (ТЦГ је компајлер Јуст-ин-Тиме).

Оне. КЕМУ је сам по себи мега кул, али ради веома споро.

3) Заштитни прстенови

Општи принципи рада КЕМУ-КВМ

Бинарни програмски код на процесорима не функционише тек тако, већ се налази на различитим нивоима (прстенови / Заштитни прстенови) са различитим нивоима приступа подацима, од најпривилегованијих (Ринг 0), до најограниченијих, регулисаних и „са затегнути завртњи” (прстен 3 ).

Оперативни систем (кернел ОС) ради на прстену 0 (режим кернела) и може да ради шта год жели са било којим подацима и уређајима. Корисничке апликације раде на нивоу Ринг 3 (кориснички режим) и немају право да раде шта желе, већ сваки пут морају да траже приступ за обављање једне или друге операције (дакле, корисничке апликације имају приступ само својим подацима и не могу „ући“ у „туђе сандбок“). Прстен 1 и 2 су за употребу возача.

Пре проналаска Интел ВТ-к / АМД СВМ, хипервизори су радили на прстену 0, а гости на прстену 1. Пошто прстен 1 нема довољно дозвола да би ОС исправно функционисао, хипервизор је морао да измени овај позив у ходу са сваким привилегованим позивом госта и извршите га на прстену 0 (слично као КЕМУ). Оне. бинарни гост НЕ се извршавао директно на процесору, и сваки пут је пролазио кроз неколико средњих модификација у ходу.

Режијски трошкови су били значајни и представљали су велики проблем, а онда су произвођачи процесора, независно једни од других, објавили проширени сет инструкција (Интел ВТ-к / АМД СВМ) који су омогућавали извршавање кода гостујућег ОС-а ДИРЕКТНО на хост процесору (заобилазећи све скупе међукораке, као што је то било раније).

Са појавом Интел ВТ-к / АМД СВМ, створен је посебан нови ниво Ринг -1 (минус један). И сада хипервизор ради на њему, а гости раде на прстену 0 и добијају привилеговани приступ ЦПУ-у.

Оне. коначно:

  • домаћин ради на прстену 0
  • гости раде за Ринг 0
  • хипервизор који ради на прстену -1

4) КЕМУ-КВМ

КВМ даје гостима приступ Рингу 0 и користи КЕМУ да емулира И/О (процесор, дискови, мрежа, видео, ПЦИ, УСБ, серијски портови, итд. које гости "виде" и са којима раде).

Отуда КЕМУ-КВМ (или КВМ-КЕМУ) :)

КРЕДИТИ
Слика за привлачење пажње
Прстенови за заштиту слике

ПС Текст овог чланка је првобитно објављен на Телеграм каналу @РУ_Воип као одговор на питање једног од чланова канала.

Напишите у коментарима где не разумем добро тему или да ли има шта да се дода.

Хвала!

Извор: ввв.хабр.цом

Додај коментар