Π‘Π»Π΅Π΄ 8 ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈΡ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡ Xen 4.21. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΡΠ°ΡΡΠΈΠ΅ Π²Π·Π΅Ρ Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°ΡΠΎ Amazon, Arm, EPAM Systems ΠΈ AMD. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv2+. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Linux Foundation.
ΠΠ»ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Xen 4.21:
- ΠΠ±Π΅Π·ΠΏΠ΅ΡΠ΅Π½Π° Π΅ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Linux stubdomain, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° Π΅ΠΉΠΌΡΠ»Π°ΡΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ΄ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π». ΠΠΎΠ΄Π΅Π»ΡΡ Linux stubomains Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° QUBES OS ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π·Π° Π΅ΠΉΠΌΡΠ»Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° QEMU, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ Π² QEMU Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π³ΠΎΡΡΡΠ²Π°ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
- ΠΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° x86:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ° PDX (Page inDeX), ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Xen Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel Sierra Forest ΠΈ Granite Rapids ΠΏΡΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ (sparse memory map), Π΄ΠΎΠΏΡΡΠΊΠ°ΡΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ°Π·Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π² MTRR (Memory Type Range Registers) Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ° BAR (Base Address Register) Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΡΠΎ PCI ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Xen, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΎΡ Π³ΠΎΡΡΡΠ²Π°ΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ HVM. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² MTRR Π·Π° ΠΎΡΡΠ°Π·Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° PCI ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π° Π°ΡΡΠΈΠ±ΡΡ UC (uncacheable), ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠΌΠΈΡΠ»Π΅Π½ Π·Π° ΡΠ΅Π°Π»Π½ΠΈ PCI ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° PCI ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Xen.
- ΠΠ° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ AMD Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² Π΄ΡΠ°ΠΉΠ²Π΅Ρ amd-cppc/amd-cppc-epp, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΠΎΡΠ°ΡΠ° Π½Π° CPU Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. Π Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ CPPC (Collaborative Processor Performance Control), ΠΊΠΎΠΉΡΠΎ, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ acpi-cpufreq, Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ ΡΡΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎ-Π±ΡΡΠ·Π° ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ.
- Π Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π° ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ°ΡΠ° xenstore-stubdom, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° xenstored Π±Π΅Π· ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Dom0, Π·Π° ΠΏΠ°ΡΠ°Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ PVH Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° live-ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
- ΠΠ° Dom0 Π² ΡΠ΅ΠΆΠΈΠΌ PVH Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Resizable BAR (Resizable Base Address Register), ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠ»Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° PCI Express ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ, Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π² ΠΏΡΠΈΠ²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Π±Π»ΠΎΠΊΠΎΠ²Π΅.
- ΠΡΠ²Π΅Π΄Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° PCI ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² domU ΡΡΠ΅Π΄ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ HVM (ΠΏΡΠ»Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ) Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ dom0 ΡΠ°Π±ΠΎΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ PVH (Ρ ΠΈΠ±ΡΠΈΠ΄Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠ°ΡΠ°Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ).
- ΠΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ARM:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ° (ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Ρ ΡΠ»Π°Π³Π° "-fstack-protector"), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠ°Π½Π°ΡΠΈΠΉΡΠΊΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΈ Π² ΡΡΠ΅ΠΊΠ° β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ. ΠΡΠΈ ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ, ΠΊΠ°Π½Π°ΡΠΈΠΉΡΠΊΠΈΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π° Ρ Π΄ΡΡΠ³ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ Π½Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΠΈ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° eSPI (Extended Shared Peripheral Interrupts), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΎΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡ GICv3.1.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° SMMU (System Memory Management Unit) ΠΏΡΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° PCIe ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Ρ ΠΎΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ PCI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡΠ΅ΡΠ²ΡΡΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ SoC Renesas R-Car.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Cortex-R52 ΠΈ Cortex-R82 Ρ MPU (Memory Protection Unit).
- Π ΠΏΠΎΡΡΠ° Π½Π° Xen Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° RISC-V Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° UART ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡ (APLIC/IMSIC) Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡ.
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ, ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ MISRA-C Π·Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΡΠ°ΡΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° GCC ΠΈ Clang Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°, Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΠ΅Π³Π° ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²Π΅ΡΡΠΈΠΈ GCC 5.1, Clang 11, Binutils 2.25 ΠΈ GNU Make 3.80.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
