A véleményetekre lennék kíváncsi. Elgondolkoztam, hogy mikor mondhatom hogy egy gép virtualizált és mikor, hogy emulált. Ha az elméleti definícióját nézzük, akkor minimális az eltérés:
- Az emuláció lényege, hogy egy teljesen eltérő környezetben teszi lehetővé a programok futását. Az emulátor tehát egy olyan (szoftver-hardver) eszköz, ami megvalósítja ezt a kompatibilitást.
- Virtualizáció során egy látszólagos környezetet hozunk létre, ami érinthet egy vagy több hardver vagy szoftver elemet.
Válasz 1:
Ez alapján minden emuláció, mert egy virtualPC vagy ESXi is több hardvert emulál. Pl. a vidókártyát, vagy a floppy meghajtót. Talán a legjobb választóvonal az lehetne, hogy a CPU-t emuláljuk-e. De itt bejön az, hogy a VT ide vagy oda, a ring 0-ba tartozó (guest operációs rendszer kernel egy része) kódot mindenféle trükkökkel tudják csak futtatni. Régebbi gépeken VT hiányában (S775-ön a kisebb CPU-ból az Intel kispórolta) szintén leginkább emulációhoz hasonló kód átalakító-trap beszúró átalakítás szükséges.
Válasz 2:
Egy határozott különbséget lehet húzni a kettő közé. Ha a CPU-t regiszterestül, ALU-val és FPU-val együtt emuláljuk és a bináris kód ezen fut, akkor emuláció. (Példa: dolphin-emu, bochs) Ha a bináris kód nagy része (90% fölött) natívan a fizikai gép CPU-ján fut átalakítás nélkül, akkor virtualizáció. (pl. virtualbox)
Az elmélet alapján az első válasz a korrekt. Ha azt nézem, hogy a gyakorlatban mire használjuk az elnevezéseket, akkor a második. Ehhez a másodikhoz hozzá lehet adni azt is, hogy az emuláció és a virtualizáció sebessége között hatalmas különbség (>10x) van az esetek többségében.