Il-fehim attwali tiegħi:
1) KVM
KVM (Magni Virtwali bbażati fuq il-kernel) huwa hypervisor (VMM – Virtual Machine Manager) li jaħdem bħala modulu fuq Linux OS. Hemm bżonn ta' hypervisor sabiex jitħaddem xi softwer f'ambjent (virtwali) li ma jeżistix u fl-istess ħin jaħbi minn dan is-software il-ħardwer fiżiku reali li fuqu jaħdem dan is-software. L-hypervisor jaġixxi bħala "spacer" bejn il-ħardwer fiżiku (host) u l-OS virtwali (mistieden).
Peress li KVM huwa modulu standard tal-qalba tal-Linux, jirċievi l-goodies kollha meħtieġa mill-qalba (ġestjoni tal-memorja, scheduler, eċċ.). U għalhekk, fl-aħħar, dawn il-benefiċċji kollha jmorru għall-mistednin (peress li l-mistednin jaħdmu fuq hypervisor li jaħdem fuq/fil-kernel tal-Linux OS).
Il-KVM huwa mgħaġġel ħafna, iżda minnu nnifsu mhux biżżejjed li tħaddem OS virtwali, għax... Dan jeħtieġ emulazzjoni I/O. Għal I/O (CPU, diski, netwerk, vidjo, PCI, USB, portijiet tas-serje, eċċ.) KVM juża QEMU.
2) QEMU
QEMU (Quick Emulator) huwa emulator għal diversi apparati li jippermettilek tħaddem sistemi operattivi ddisinjati għal arkitettura waħda fuq oħra (per eżempju, ARM -> x86). Minbarra l-proċessur, QEMU jimita diversi apparati periferali: karti tan-netwerk, HDD, karti tal-vidjo, PCI, USB, eċċ.
Taħdem hekk:
L-istruzzjonijiet/kodiċi binarju (per eżempju, ARM) huma kkonvertiti f'kodiċi intermedju indipendenti mill-pjattaforma bl-użu tal-konvertitur TCG (Tiny Code Generator) u mbagħad dan il-kodiċi binarju indipendenti mill-pjattaforma jiġi kkonvertit f'istruzzjonijiet/kodiċi fil-mira (per eżempju, x86).
ARM –> intermedju_code –> x86
Essenzjalment, tista 'tħaddem magni virtwali fuq QEMU fuq kwalunkwe ospitanti, anke b'mudelli ta' proċessuri anzjani li ma jappoġġjawx Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Madankollu, f'dan il-każ, se taħdem bil-mod ħafna, minħabba l-fatt li l-kodiċi binarju ta 'eżekuzzjoni jeħtieġ li jiġi kkompilat mill-ġdid fuq il-fly darbtejn, bl-użu ta' TCG (TCG huwa kompilatur Just-in-Time).
Dawk. QEMU innifsu huwa mega cool, iżda jaħdem bil-mod ħafna.
3) Ċrieki ta 'protezzjoni
Il-kodiċi tal-programm binarju fuq il-proċessuri jaħdem għal raġuni, iżda jinsab f'livelli differenti (ċrieki / ċrieki ta 'protezzjoni) b'livelli differenti ta' aċċess għad-dejta, mill-aktar privileġġjati (Ring 0), għall-aktar limitati, regolati u "bil-ġewż issikkat ” (Ċirku 3 ).
Is-sistema operattiva (kernel OS) taħdem fuq Ring 0 (modalità kernel) u tista 'tagħmel dak kollu li trid bi kwalunkwe data u apparat. L-applikazzjonijiet tal-utent joperaw fil-livell Ring 3 (mod tal-utent) u ma jitħallewx jagħmlu dak kollu li jridu, iżda minflok iridu jitolbu aċċess kull darba biex iwettqu operazzjoni partikolari (għalhekk, l-applikazzjonijiet tal-utent għandhom biss aċċess għad-dejta tagħhom stess u ma jistgħux “jikseb fi” kaxxa tar-ramel ta’ xi ħadd ieħor). Ċirku 1 u 2 huma maħsuba għall-użu mis-sewwieqa.
Qabel l-invenzjoni ta 'Intel VT-x / AMD SVM, l-hypervisors dam fuq Ring 0, u l-mistednin dam fuq Ring 1. Peress li Ring 1 m'għandux biżżejjed drittijiet għat-tħaddim normali tal-OS, b'kull sejħa privileġġata mis-sistema mistieden, il- hypervisor kellu jimmodifika din is-sejħa fuq il-fly u jesegwixxiha fuq Ring 0 (bħal kif tagħmel QEMU). Dawk. mistieden binarju MHUX ġie esegwit direttament fuq il-proċessur, u kull darba għadda minn diversi modifiki intermedji fuq il-fly.
L-overhead kien sinifikanti u din kienet problema kbira, u mbagħad il-manifatturi tal-proċessuri, indipendentement minn xulxin, ħarġu sett estiż ta 'struzzjonijiet (Intel VT-x / AMD SVM) li ppermettew li jeżegwixxu kodiċi OS mistieden. DIRETTAMENT fuq il-proċessur ospitanti (bypassing kwalunkwe passi intermedji għaljin, kif kien il-każ qabel).
Bil-miġja ta 'Intel VT-x / AMD SVM, inħoloq livell ġdid speċjali ta' Ring -1 (nieqes wieħed). U issa l-hypervisor jimxi fuqu, u l-mistednin jimxu fuq Ring 0 u jiksbu aċċess privileġġjat għas-CPU.
Dawk. eventwalment:
- host jimxi fuq Ring 0
- mistednin jaħdmu fuq Ring 0
- hypervisor jimxi fuq Ring -1
4) QEMU-KVM
KVM jagħti lill-mistednin aċċess għal Ring 0 u juża QEMU biex jimita l-I/O (proċessur, diski, netwerk, vidjo, PCI, USB, portijiet tas-serje, eċċ. li l-mistednin "ara" u jaħdmu magħhom).
Għalhekk QEMU-KVM (jew KVM-QEMU) :)
KREDITI
P.S. It-test ta 'dan l-artikolu kien oriġinarjament ippubblikat fil-kanal Telegram
Ikteb fil-kummenti fejn ma nifhimx is-suġġett sew jew jekk hemmx xi ħaġa xi żżid.
Grazzi!
Sors: www.habr.com