αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΌαž‘αŸ…αž“αŸƒ QEMU-KVM

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΌαž‘αŸ…αž“αŸƒ QEMU-KVM

αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ–

1) KVM

KVM (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎαžαžΊαžŽαŸ‚αž›) αž‚αžΊαž‡αžΆ hypervisor (VMM - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž) αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž›αž“αŸ…αž›αžΎ Linux OS αŸ” Hypervisor αž‚αžΊαžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“ (αž“αž·αž˜αŸ’αž˜αž·αž) αž αžΎαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αž›αžΆαž€αŸ‹αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž“αžΌαžœαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” Hypervisor αžŠαžΎαžšαžαž½αž‡αžΆ "spacer" αžšαžœαžΆαž„ hardware (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“) αž“αž·αž„ virtual OS (guest) αŸ”

αžŠαŸ„αž™αžŸαžΆαžš KVM αž‚αžΊαž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž›αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸƒαžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… αžœαžΆαž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαžαžΊαžŽαŸ‚αž› (αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αŸ”αž›αŸ”)αŸ” αž αžΎαž™αžαžΆαž˜αž“αŸ„αŸ‡ αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹ αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž”αžΆαž“αž‘αŸ…αžŠαž›αŸ‹αž—αŸ’αž‰αŸ€αžœ (αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž—αŸ’αž‰αŸ€αžœαž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎ hypervisor αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ/αž€αŸ’αž“αž»αž„ Linux OS kernel)αŸ”

KVM αž˜αžΆαž“αž›αŸ’αž”αžΏαž“αž›αžΏαž“αžŽαžΆαžŸαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžαŸ’αž›αž½αž“αžœαžΆαžœαžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αž·αž˜αŸ’αž˜αž·αžαž‘αŸαž–αŸ’αžšαŸ„αŸ‡ ... αž“αŸαŸ‡αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ I/O αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ I/O (CPU, disks, network, video, PCI, USB, serial ports αŸ”αž›αŸ”) KVM αž”αŸ’αžšαžΎ QEMU αŸ”

2) QEMU

QEMU (Quick Emulator) αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž˜αž½αž™αž“αŸ…αž›αžΎαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αž§αž‘αžΆαž αžšαžŽαŸ ARM -> x86) αŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαžαž½αžšαž€αŸ’αž”αžΆαž› QEMU αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž§αž”αž€αžšαžŽαŸαž‚αŸ’αžšαžΏαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž•αŸ’αžŸαŸαž„αŸ—αŸ– αž€αžΆαžαž”αžŽαŸ’αžαžΆαž‰ HDD αž€αžΆαžαžœαžΈαžŠαŸαž’αžΌ PCI USB αŸ”αž›αŸ”

αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αž“αŸαŸ‡αŸ–

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†/αž›αŸαžαž€αžΌαžŠαž‚αŸ„αž›αž–αžΈαžš (αž§αž‘αžΆαž αžšαžŽαŸ ARM) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαž€αžΌαžŠαž―αž€αžšαžΆαž‡αŸ’αž™αž“αŸƒαžœαŸαž‘αž·αž€αžΆαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜ αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αŸ’αž›αŸ‚αž„ TCG (Tiny Code Generator) αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž›αŸαžαž€αžΌαžŠαž‚αŸ„αž›αž–αžΈαžšαž―αž€αžšαžΆαž‡αŸ’αž™αž“αŸƒαžœαŸαž‘αž·αž€αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†/αž€αžΌαžŠαž‚αŸ„αž›αžŠαŸ… (αž§αž‘αžΆαž αžšαžŽαŸ x86)αŸ”

ARM -> intermediate_code -> x86

αžŸαŸ†αžαžΆαž“αŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž›αžΎ QEMU αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŽαžΆαž˜αž½αž™ αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αŸ‰αžΌαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine)αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžœαžΆαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΊαžαžŽαžΆαžŸαŸ‹ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž›αŸαžαž€αžΌαžŠαž‚αŸ„αž›αž–αžΈαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž…αž„αž€αŸ’αžšαž„αž‘αžΎαž„αžœαž·αž‰αž—αŸ’αž›αžΆαž˜αŸ—αž–αžΈαžšαžŠαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ TCG (TCG αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆ)αŸ”

αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” QEMU αžαŸ’αž›αž½αž“αžœαžΆαž˜αžΆαž“αž—αžΆαž–αžαŸ’αžšαž‡αžΆαž€αŸ‹αžαŸ’αž›αžΆαŸ†αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΊαžαžŽαžΆαžŸαŸ‹αŸ”

3) αž…αž·αž‰αŸ’αž…αŸ€αž“αž€αžΆαžšαž–αžΆαžš

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΌαž‘αŸ…αž“αŸƒ QEMU-KVM

αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαž“αŸ…αž›αžΎ processors αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž αŸαžαž»αž•αž›αž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ (αž…αž·αž‰αŸ’αž…αŸ€αž“/αž…αž·αž‰αŸ’αž…αŸ€αž“αž€αžΆαžšαž–αžΆαžš) αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž…αžΆαž”αŸ‹αž–αžΈαž―αž€αžŸαž·αž‘αŸ’αž’αž·αž”αŸ†αž•αž»αž (Ring 0) αžšαž αžΌαžαžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αžαž€αŸ†αžŽαžαŸ‹αž”αŸ†αž•αž»αž αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž“αž·αž„ "αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αŸ’αžšαžΆαž”αŸ‹αžŠαŸ‚αž›αžšαžΉαžαž”αž“αŸ’αžαžΉαž„ (αž…αž·αž‰αŸ’αž…αŸ€αž“ 3) αŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš (OS αžαžΊαžŽαŸ‚αž›) αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ Ring 0 (αžšαž”αŸ€αž”αžαžΊαžŽαŸ‚αž›) αž αžΎαž™αž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αžœαžΆαž…αž„αŸ‹αž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžŽαžΆαž˜αž½αž™αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αž˜αŸ’αžšαž·αž Ring 3 (αž‘αž˜αŸ’αžšαž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹) αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž…αž„αŸ‹αž”αžΆαž“αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰αžαŸ’αžšαžΌαžœαžαŸ‚αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžšαžΆαž›αŸ‹αž–αŸαž›αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™ (αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™αž˜αž·αž“αž’αžΆαž… "αž‘αž‘αž½αž›αž”αžΆαž“ αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ "αž”αŸ’αžšαž’αž”αŸ‹αžαŸ’αžŸαžΆαž…αŸ‹αžšαž”αžŸαŸ‹αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž) αŸ” Ring 1 αž“αž·αž„ 2 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαŸ”

αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž Intel VT-x / AMD SVM αž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αž–αžŸαŸ‹αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ Ring 0 αž αžΎαž™αž—αŸ’αž‰αŸ€αžœαž”αžΆαž“αžšαžαŸ‹αž“αŸ…αž›αžΎ Ring 1αŸ” αžŠαŸ„αž™αžŸαžΆαžš Ring 1 αž˜αž·αž“αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αž˜αŸ’αž˜αžαžΆαžšαž”αžŸαŸ‹ OS αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž“αžΈαž˜αž½αž™αŸ—αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœ hypervisor αžαŸ’αžšαžΌαžœαž€αŸ‚αž”αŸ’αžšαŸ‚αž€αžΆαžšαž αŸ…αž“αŸαŸ‡αž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžœαžΆαž“αŸ…αž›αžΎ Ring 0 (αž…αŸ’αžšαžΎαž“αžŠαžΌαž… QEMU αžŠαŸ‚αžš)αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž—αŸ’αž‰αŸ€αžœαž‚αŸ„αž›αž–αžΈαžš НЕ αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž›αžΎαžαž½αžšαž€αŸ’αž”αžΆαž› αž αžΎαž™αžšαžΆαž›αŸ‹αž–αŸαž›αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αž†αžΆαž”αŸ‹αŸ—αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαžŸαž‚αžΊαžŸαŸ†αžαžΆαž“αŸ‹ αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αž‰αŸ’αž αžΆαž’αŸ†αž˜αž½αž™ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αž processor αžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™αž–αžΈαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž”αž“αŸ’αžαŸ‚αž˜ (Intel VT-x / AMD SVM) αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠ OS αž—αŸ’αž‰αŸ€αžœ αžŠαŸ„αž™β€‹αž•αŸ’αž‘αžΆαž›αŸ‹ αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αžšαŸ†αž›αž„αž‡αŸ†αž αžΆαž“αž˜αž’αŸ’αž™αž˜αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ’αž›αŸƒαžŠαžΌαž…αž€αžšαžŽαžΈαž˜αž»αž“) αŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ Intel VT-x / AMD SVM αž€αž˜αŸ’αžšαž·αž Ring αžαŸ’αž˜αžΈαž–αž·αžŸαŸαžŸ -1 (αžŠαž€αž˜αž½αž™) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αŸ” αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡ hypervisor αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžœαžΆ αž αžΎαž™αž—αŸ’αž‰αŸ€αžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ Ring 0 αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎ CPU αŸ”

αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αžαŸ–

  • αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ Ring 0
  • αž—αŸ’αž‰αŸ€αžœαž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž›αžΎ Ring 0
  • hypervisor αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ Ring -1

4) QEMU-KVM

KVM αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž—αŸ’αž‰αŸ€αžœαž…αžΌαž›αž”αŸ’αžšαžΎ Ring 0 αž“αž·αž„αž”αŸ’αžšαžΎ QEMU αžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ I/O (processor, disks, network, video, PCI, USB, serial ports αŸ”αž›αŸ” αžŠαŸ‚αž›αž—αŸ’αž‰αŸ€αžœ "αžƒαžΎαž‰" αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™)αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ QEMU-KVM (ឬ KVM-QEMU) :)

αž₯αžŽαž‘αžΆαž“
αžšαžΌαž”αž—αžΆαž–αžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž€αŸ‹αž‘αžΆαž‰αž€αžΆαžšαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ
αžšαžΌαž”αžαžαžšαž”αžŸαŸ‹ αž…αž·αž‰αŸ’αž…αŸ€αž“αž€αžΆαžšαž–αžΆαžš

PS αž’αžαŸ’αžαž”αž‘αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžŠαŸ†αž”αžΌαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž†αžΆαž“αŸ‚αž› Telegram @RU_Voip αž‡αžΆαž…αž˜αŸ’αž›αžΎαž™αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αž†αžΆαž“αŸ‚αž›αž˜αž½αž™αŸ”

αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž™αž›αŸ‹αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž¬αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αŸ”

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽ!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹