
Kuptimi im aktual:
1) KVM
KVM (Virtual Machine e Bazuar nĂ« Linux) Ă«shtĂ« njĂ« hipervizor (VMM â Menaxheri i MakinerisĂ« Virtuale), qĂ« funksionon si njĂ« modul nĂ« sistemin operativ Linux. Hipervizori nevojitet pĂ«r tĂ« ekzekutuar ndonjĂ« software nĂ« njĂ« mjedis tĂ« pamundur (virtual) dhe, po ashtu, pĂ«r tĂ« fshehur nga ky software pajisjet fizike reale, mbi tĂ« cilat funksionon ky software. Hipervizori vepron si njĂ« ândĂ«rmjetĂ«sâ mes pajisjes fizike (hostit) dhe sistemit operativ virtual (mysafir).
Duke qenë se KVM është një modul standard i bërthamës Linux, ai merr nga bërthama të gjitha avantazhet e nevojshme (puna me kujtesën, planifikuesi, etj.). Prandaj, në fund, të gjitha këto përfitime i shkojnë edhe mysafirëve (pasi mysafirët funksionojnë mbi hipervizorin, i cili funksionon në/në bërthamën e sistemit operativ Linux).
KVM është shumë i shpejtë, por ai vetëm nuk mjafton për të ekzekutuar një sistem operativ virtual, sepse për këtë nevojitet një imitim I/O. Për I/O (procesori, diskët, rrjeti, video, PCI, USB, porta seriale, etj.) KVM përdor QEMU.
2) QEMU
QEMU (Quick Emulator) â njĂ« emulator pĂ«r pajisje tĂ« ndryshme, i cili lejon qĂ« tĂ« ethet sisteme operative tĂ« destinuara pĂ«r njĂ« arkitekturĂ«, tĂ« funksionojnĂ« nĂ« njĂ« tjetĂ«r (pĂ«r shembull, ARM â> x86). PĂ«rveç procesorit, QEMU emulon pajisje periferike tĂ« ndryshme: karta rrjeti, HDD, karta grafike, PCI, USB etj.
Funksionon kështu:
Udhëzimet/kodi binar (për shembull, ARM) konvertohen në kod ndërmjetës, të pavarur nga platforma, përmes konvertuesit TCG (Tiny Code Generator), dhe pastaj ky kod i pavarur nga platforma konvertohet në instruksione/kod përfundimtar (për shembull, x86).
ARM â> kod_ndĂ«rmjetĂ«s â> x86
Në thelb, mund të ekzekutoni makina virtuale në QEMU në çdo host, edhe me modele të lashta procesorësh, që nuk mbështesin Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Megjithatë, në këtë rast, do të funksionojë shumë ngadalë, për shkak se kodi binar i ekzekutueshëm duhet të rikonvertohet në flutur dy herë, përmes TCG (TCG është një kompiler Just-in-Time).
Pra, QEMU është i shkëlqyer vetë për vetë, por funksionon shumë ngadalë.
3) Rringat e mbrojtjes

Kodi binar i programeve në procesorë nuk funksionon thjesht kështu, por ndodhet në nivele të ndryshme (unaza / Protection rings) me nivele të ndryshme qasjeje në të dhëna, nga më privilegjuari (Ring 0), deri te ai më i kufizuar, rregullohet dhe "me vida të ngushta" (Ring 3).
Sistemi operativ (kernel i OS) punon në Ring 0 (kernel mode) dhe mund të bëjë çfarëdo me çdo të dhëna dhe pajisje. Aplikacionet e përdoruesve punojnë në nivelin Ring 3 (user mode) dhe nuk kanë të drejtë të bëjnë çdo gjë që duan, por çdo herë duhet të kërkojnë qasje për të realizuar një operacion të caktuar (në këtë mënyrë, aplikacionet e përdoruesve kanë qasje vetëm në të dhënat e tyre dhe nuk mund të "hyjnë" në "sandbox-in" e të tjerëve). Ring 1 dhe 2 janë të destinuara për përdorim nga drejtuesit.
Para shpikjen e Intel VT-x / AMD SVM, hipervizorët punonin në Ring 0, ndërsa mysafirët punonin në Ring 1. Duke qenë se Ring 1 nuk kishte mjaft privilegje për funksionimin normal të OS-së, për çdo thirrje privilegjuar nga sistemi mysafir, hipervizorit i duhej të modifikonte në kohë reale këtë thirrje dhe ta ekzekutonte në Ring 0 (afërsisht ashtu siç bën QEMU). Domethënë, kodi binar i mysafirit Nà nuk ekzekutohej drejtpërdrejt në procesor, por çdo herë kalonte nëpër disa modifikime ndërmjetëse në kohë reale.
Shpenzimet ishin tĂ« konsiderueshme dhe kjo ishte njĂ« problem i madh dhe atĂ«herĂ« prodhuesit e procesorĂ«ve, pĂ«rveç tĂ« tjerĂ«ve, lançuan njĂ« grup tĂ« avancuar instruksionesh (Intel VT-x / AMD SVM), duke lejuar ekzekutimin e kodit tĂ« sistemeve mysafire DREJTPĂRDREJT nĂ« procesorin e hostit (duke kaluar çdo hap tĂ« ndĂ«rmjetĂ«m tĂ« shtrenjtĂ«, siç kishte ndodhur mĂ« parĂ«).
Me ardhjen e Intel VT-x / AMD SVM, u krijua një nivel i ri special Ring -1 (minus një). Dhe tani mbi të punon hipervizori, ndërsa mysafirët punojnë në Ring 0 dhe marrin qasje privilegjuar në CPU.
Domethënë, në fund:
- hosti punon në Ring 0
- mysafirët punojnë në Ring 0
- hipervizori punon në Ring -1
4) QEMU-KVM
KVM ofron akses për mysafirët në Ring 0 dhe përdor QEMU për të emuluar I/O (procesori, diskët, rrjeti, video, PCI, USB, porta seriale etj., të cilat "shikojnë" dhe me të cilat punojnë mysafirët).
Prandaj QEMU-KVM (ose KVM-QEMU) đ
KREDITE
P.S. Teksti i këtij artikulli u publikua fillimisht në kanalin Telegram si një përgjigje ndaj pyetjes së një prej anëtarëve të kanalit.
Shkruani në komentet, në cilat vende nuk e kuptoj saktë temën ose nëse ka diçka për të shtuar.
Faleminderit!
Burimi: habr.com
