ನನ್ನ ಪ್ರಸ್ತುತ ತಿಳುವಳಿಕೆ:
1) ಕೆವಿಎಂ
KVM (ಕರ್ನಲ್-ಆಧಾರಿತ ವರ್ಚುವಲ್ ಮೆಷಿನ್) ಹೈಪರ್ವೈಸರ್ ಆಗಿದೆ (VMM - ವರ್ಚುವಲ್ ಮೆಷಿನ್ ಮ್ಯಾನೇಜರ್) Linux OS ನಲ್ಲಿ ಮಾಡ್ಯೂಲ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ (ವರ್ಚುವಲ್) ಪರಿಸರದಲ್ಲಿ ಕೆಲವು ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಈ ಸಾಫ್ಟ್ವೇರ್ ಚಲಾಯಿಸುವ ನೈಜ ಭೌತಿಕ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ಈ ಸಾಫ್ಟ್ವೇರ್ನಿಂದ ಮರೆಮಾಡಲು ಹೈಪರ್ವೈಸರ್ ಅಗತ್ಯವಿದೆ. ಹೈಪರ್ವೈಸರ್ ಭೌತಿಕ ಯಂತ್ರಾಂಶ (ಹೋಸ್ಟ್) ಮತ್ತು ವರ್ಚುವಲ್ ಓಎಸ್ (ಅತಿಥಿ) ನಡುವೆ "ಸ್ಪೇಸರ್" ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
KVM ಲಿನಕ್ಸ್ ಕರ್ನಲ್ನ ಪ್ರಮಾಣಿತ ಮಾಡ್ಯೂಲ್ ಆಗಿರುವುದರಿಂದ, ಇದು ಕರ್ನಲ್ನಿಂದ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಪಡೆಯುತ್ತದೆ (ಮೆಮೊರಿ ನಿರ್ವಹಣೆ, ಶೆಡ್ಯೂಲರ್, ಇತ್ಯಾದಿ.). ಮತ್ತು ಅದರ ಪ್ರಕಾರ, ಕೊನೆಯಲ್ಲಿ, ಈ ಎಲ್ಲಾ ಪ್ರಯೋಜನಗಳು ಅತಿಥಿಗಳಿಗೆ ಹೋಗುತ್ತವೆ (ಅತಿಥಿಗಳು Linux OS ಕರ್ನಲ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಹೈಪರ್ವೈಸರ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದರಿಂದ).
KVM ತುಂಬಾ ವೇಗವಾಗಿದೆ, ಆದರೆ ವರ್ಚುವಲ್ OS ಅನ್ನು ಚಲಾಯಿಸಲು ಅದು ಸಾಕಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ... ಇದಕ್ಕೆ I/O ಎಮ್ಯುಲೇಶನ್ ಅಗತ್ಯವಿದೆ. I/O ಗಾಗಿ (CPU, ಡಿಸ್ಕ್ಗಳು, ನೆಟ್ವರ್ಕ್, ವಿಡಿಯೋ, PCI, USB, ಸೀರಿಯಲ್ ಪೋರ್ಟ್ಗಳು, ಇತ್ಯಾದಿ.) KVM QEMU ಅನ್ನು ಬಳಸುತ್ತದೆ.
2) QEMU
QEMU (ಕ್ವಿಕ್ ಎಮ್ಯುಲೇಟರ್) ವಿವಿಧ ಸಾಧನಗಳಿಗೆ ಎಮ್ಯುಲೇಟರ್ ಆಗಿದ್ದು ಅದು ಒಂದು ಆರ್ಕಿಟೆಕ್ಚರ್ಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ಇನ್ನೊಂದರಲ್ಲಿ ಚಲಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ARM -> x86). ಪ್ರೊಸೆಸರ್ ಜೊತೆಗೆ, QEMU ವಿವಿಧ ಬಾಹ್ಯ ಸಾಧನಗಳನ್ನು ಅನುಕರಿಸುತ್ತದೆ: ನೆಟ್ವರ್ಕ್ ಕಾರ್ಡ್ಗಳು, HDD, ವೀಡಿಯೊ ಕಾರ್ಡ್ಗಳು, PCI, USB, ಇತ್ಯಾದಿ.
ಇದು ಈ ರೀತಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:
ಸೂಚನೆಗಳು/ಬೈನರಿ ಕೋಡ್ (ಉದಾಹರಣೆಗೆ, ARM) ಅನ್ನು TCG (ಸಣ್ಣ ಕೋಡ್ ಜನರೇಟರ್) ಪರಿವರ್ತಕವನ್ನು ಬಳಸಿಕೊಂಡು ಮಧ್ಯಂತರ ಪ್ಲಾಟ್ಫಾರ್ಮ್-ಸ್ವತಂತ್ರ ಕೋಡ್ಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಈ ಪ್ಲಾಟ್ಫಾರ್ಮ್-ಸ್ವತಂತ್ರ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಗುರಿ ಸೂಚನೆಗಳು/ಕೋಡ್ಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, x86).
ARM –> intermediate_code –> x86
ಮೂಲಭೂತವಾಗಿ, Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD ಸುರಕ್ಷಿತ ವರ್ಚುವಲ್ ಮೆಷಿನ್) ಅನ್ನು ಬೆಂಬಲಿಸದ ಹಳೆಯ ಪ್ರೊಸೆಸರ್ ಮಾದರಿಗಳೊಂದಿಗೆ ನೀವು ಯಾವುದೇ ಹೋಸ್ಟ್ನಲ್ಲಿ QEMU ನಲ್ಲಿ ವರ್ಚುವಲ್ ಯಂತ್ರಗಳನ್ನು ಚಲಾಯಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಈ ಸಂದರ್ಭದಲ್ಲಿ, TCG (TCG ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ಕಂಪೈಲರ್) ಅನ್ನು ಬಳಸಿಕೊಂಡು ಎಕ್ಸಿಕ್ಯೂಟಿಂಗ್ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಫ್ಲೈನಲ್ಲಿ ಎರಡು ಬಾರಿ ಪುನಃ ಕಂಪೈಲ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಎಂಬ ಅಂಶದಿಂದಾಗಿ ಇದು ತುಂಬಾ ನಿಧಾನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಆ. QEMU ಸ್ವತಃ ಮೆಗಾ ತಂಪಾಗಿದೆ, ಆದರೆ ಇದು ತುಂಬಾ ನಿಧಾನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
3) ರಕ್ಷಣಾ ಉಂಗುರಗಳು
ಪ್ರೊಸೆಸರ್ಗಳಲ್ಲಿನ ಬೈನರಿ ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ ಒಂದು ಕಾರಣಕ್ಕಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ವಿವಿಧ ಹಂತಗಳಲ್ಲಿ (ರಿಂಗ್ಗಳು / ಪ್ರೊಟೆಕ್ಷನ್ ರಿಂಗ್ಗಳು) ವಿವಿಧ ಹಂತದ ಡೇಟಾ ಪ್ರವೇಶದೊಂದಿಗೆ, ಅತ್ಯಂತ ಸವಲತ್ತುಗಳಿಂದ (ರಿಂಗ್ 0), ಅತ್ಯಂತ ಸೀಮಿತ, ನಿಯಂತ್ರಿತ ಮತ್ತು “ಬೀಜಗಳನ್ನು ಬಿಗಿಗೊಳಿಸುವುದರೊಂದಿಗೆ” ಇದೆ. ” (ರಿಂಗ್ 3).
ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ (OS ಕರ್ನಲ್) ರಿಂಗ್ 0 (ಕರ್ನಲ್ ಮೋಡ್) ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ಡೇಟಾ ಮತ್ತು ಸಾಧನಗಳೊಂದಿಗೆ ತನಗೆ ಬೇಕಾದುದನ್ನು ಮಾಡಬಹುದು. ಬಳಕೆದಾರ ಅಪ್ಲಿಕೇಶನ್ಗಳು ರಿಂಗ್ 3 ಹಂತದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ (ಬಳಕೆದಾರ ಮೋಡ್) ಮತ್ತು ಅವರು ಬಯಸಿದ್ದನ್ನು ಮಾಡಲು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ, ಬದಲಿಗೆ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸಲು ಪ್ರತಿ ಬಾರಿ ಪ್ರವೇಶವನ್ನು ವಿನಂತಿಸಬೇಕು (ಹೀಗಾಗಿ, ಬಳಕೆದಾರ ಅಪ್ಲಿಕೇಶನ್ಗಳು ತಮ್ಮದೇ ಆದ ಡೇಟಾಗೆ ಮಾತ್ರ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತವೆ ಮತ್ತು "ಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ" ಬೇರೆಯವರ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ಗೆ) ರಿಂಗ್ 1 ಮತ್ತು 2 ಅನ್ನು ಚಾಲಕರು ಬಳಸಲು ಉದ್ದೇಶಿಸಲಾಗಿದೆ.
Intel VT-x / AMD SVM ಆವಿಷ್ಕಾರದ ಮೊದಲು, ಹೈಪರ್ವೈಸರ್ಗಳು ರಿಂಗ್ 0 ನಲ್ಲಿ ಓಡುತ್ತಿದ್ದರು ಮತ್ತು ಅತಿಥಿಗಳು ರಿಂಗ್ 1 ನಲ್ಲಿ ಓಡುತ್ತಿದ್ದರು. ರಿಂಗ್ 1 ಗೆ OS ನ ಸಾಮಾನ್ಯ ಕಾರ್ಯಾಚರಣೆಗೆ ಸಾಕಷ್ಟು ಹಕ್ಕುಗಳಿಲ್ಲದ ಕಾರಣ, ಅತಿಥಿ ವ್ಯವಸ್ಥೆಯಿಂದ ಪ್ರತಿ ವಿಶೇಷ ಕರೆಯೊಂದಿಗೆ, ಹೈಪರ್ವೈಸರ್ ಈ ಕರೆಯನ್ನು ಫ್ಲೈನಲ್ಲಿ ಮಾರ್ಪಡಿಸಬೇಕಾಗಿತ್ತು ಮತ್ತು ಅದನ್ನು ರಿಂಗ್ 0 ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗಿತ್ತು (QEMU ಮಾಡುವಂತೆ). ಆ. ಅತಿಥಿ ಬೈನರಿ ಅಲ್ಲ ಪ್ರೊಸೆಸರ್ನಲ್ಲಿ ನೇರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಯಿತು, ಮತ್ತು ಪ್ರತಿ ಬಾರಿ ಹಾರಾಡುತ್ತ ಹಲವಾರು ಮಧ್ಯಂತರ ಮಾರ್ಪಾಡುಗಳ ಮೂಲಕ ಹೋಯಿತು.
ಓವರ್ಹೆಡ್ ಗಮನಾರ್ಹವಾಗಿದೆ ಮತ್ತು ಇದು ದೊಡ್ಡ ಸಮಸ್ಯೆಯಾಗಿತ್ತು, ಮತ್ತು ನಂತರ ಪ್ರೊಸೆಸರ್ ತಯಾರಕರು, ಪರಸ್ಪರ ಸ್ವತಂತ್ರವಾಗಿ, ಅತಿಥಿ OS ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುವ ವಿಸ್ತೃತ ಸೆಟ್ ಸೂಚನೆಗಳನ್ನು (Intel VT-x / AMD SVM) ಬಿಡುಗಡೆ ಮಾಡಿದರು. ನೇರವಾಗಿ ಹೋಸ್ಟ್ ಪ್ರೊಸೆಸರ್ನಲ್ಲಿ (ಯಾವುದೇ ದುಬಾರಿ ಮಧ್ಯಂತರ ಹಂತಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡುವುದು, ಮೊದಲಿನಂತೆಯೇ).
ಇಂಟೆಲ್ ವಿಟಿ-ಎಕ್ಸ್ / ಎಎಮ್ಡಿ ಎಸ್ವಿಎಂ ಆಗಮನದೊಂದಿಗೆ, ವಿಶೇಷ ಹೊಸ ರಿಂಗ್ ಲೆವೆಲ್ -1 (ಮೈನಸ್ ಒನ್) ಅನ್ನು ರಚಿಸಲಾಗಿದೆ. ಮತ್ತು ಈಗ ಹೈಪರ್ವೈಸರ್ ಅದರ ಮೇಲೆ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ಅತಿಥಿಗಳು ರಿಂಗ್ 0 ನಲ್ಲಿ ರನ್ ಆಗುತ್ತಾರೆ ಮತ್ತು CPU ಗೆ ಸವಲತ್ತು ಪ್ರವೇಶವನ್ನು ಪಡೆಯುತ್ತಾರೆ.
ಆ. ಅಂತಿಮವಾಗಿ:
- ಹೋಸ್ಟ್ ರಿಂಗ್ 0 ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ
- ಅತಿಥಿಗಳು ರಿಂಗ್ 0 ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಾರೆ
- ಹೈಪರ್ವೈಸರ್ ರಿಂಗ್ -1 ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ
4) QEMU-KVM
KVM ಅತಿಥಿಗಳಿಗೆ ರಿಂಗ್ 0 ಗೆ ಪ್ರವೇಶವನ್ನು ನೀಡುತ್ತದೆ ಮತ್ತು I/O (ಪ್ರೊಸೆಸರ್, ಡಿಸ್ಕ್ಗಳು, ನೆಟ್ವರ್ಕ್, ವಿಡಿಯೋ, PCI, USB, ಸೀರಿಯಲ್ ಪೋರ್ಟ್ಗಳು, ಇತ್ಯಾದಿ ಅತಿಥಿಗಳು "ನೋಡುವ" ಮತ್ತು ಕೆಲಸ ಮಾಡುವ) ಅನುಕರಿಸಲು QEMU ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಆದ್ದರಿಂದ QEMU-KVM (ಅಥವಾ KVM-QEMU) :)
ಕ್ರೆಡಿಟ್ಗಳು
ಪಿಎಸ್ ಈ ಲೇಖನದ ಪಠ್ಯವನ್ನು ಮೂಲತಃ ಟೆಲಿಗ್ರಾಮ್ ಚಾನೆಲ್ನಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ
ನಾನು ವಿಷಯವನ್ನು ಸರಿಯಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದಿರುವ ಕಾಮೆಂಟ್ಗಳಲ್ಲಿ ಬರೆಯಿರಿ ಅಥವಾ ಸೇರಿಸಲು ಏನಾದರೂ ಇದ್ದರೆ.
ಧನ್ಯವಾದಗಳು!
ಮೂಲ: www.habr.com