Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΡΠ° Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Android, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Google Π΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π»Π° ΡΡΡΠΌΡΠ΅ΡΠ° pvmfm Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ ΠΎΡ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° pVM Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Android Virtualization Framework. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π°, ΡΡΡΠΌΡΠ΅ΡΡΡ Π±Π΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π½Π°Π΄ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΡΡ U-Boot, Π² ΡΠΈΠΉΡΠΎ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΡΡ Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
ΠΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π½ΠΈΡΡ Π½Π° Rust ΡΡΡΠΌΡΠ΅Ρ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Android 14, Π° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ crate-ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° Rust. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΠΏΠ°ΠΊΠ΅ΡΡΡ smccc Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ARM ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ PSCI (Power State Coordination Interface) ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° SMCCC (SMC Calling Convention), ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡΡ aarch64-paging Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ virtio-drivers Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ VirtIO. ΠΡΠ²Π΅Π½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Android, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Oak, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π·Π°ΡΠΈΡΠ΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ (TEE, Trusted Execution Environment).
Π₯ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΡΡ pVM ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π½Π½ΠΈΡ Π΅ΡΠ°ΠΏ ΠΎΡ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΡΠ»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ Ρ ΠΎΡΡ-ΡΡΠ΅Π΄Π°ΡΠ°, Π±Π΅Π· Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Ρ ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π€ΡΡΠΌΡΠ΅ΡΡΡ pvmfm (Protected Virtual Machine Firmware) ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΈ Π²Π·Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΡΠ΅Π»ΠΎΡΡΡΠ° ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π·Π° Π³ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π½Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅.
ΠΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° βΠΏΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ Π½Π° Π΄Π²Π΅ΡΠ΅β, ΠΏΡΠΈΠ»Π°Π³Π°Π½ΠΎ ΠΎΡ Google Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Android. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΠΎΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΠΎΡ ΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ: ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (C/C++) ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. ΠΡ ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ»Π΅Π΄Π²Π°, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ (ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½), ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° Google ΠΎΠΊΠΎΠ»ΠΎ 70% ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠΊΡΠΈΡΠΈ Π² Android, ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
Rust Π΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ Π²ΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠΈΡΠΊΡΡ ΠΎΡ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΡΡ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Ρ ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ°. Π Rust Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΡΠ΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈΡΠ΅, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ Π²Π·Π΅ΠΌΠ°Π½Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ (ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ), Π° ΡΡΡΠΎ ΠΈ ΡΡΠ΅Π· ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ (immutable) Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΠ»Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈΡΠ΅, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΠΎΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ unsafe, ΡΡΠΉ ΠΊΠ°ΡΠΎ Rust Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, Π° Π² ΠΊΠΎΠ΄Π°, ΡΠ°Π±ΠΎΡΠ΅Ρ Π±Π΅Π· ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ Π½Π°Π΄ ΠΆΠ΅Π»Π΅Π·ΠΎΡΠΎ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ° ΠΊΡΠΌ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ MMIO. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Rust Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΠΎΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΎΡΡΠ°Π²ΡΡ Π΄Π° ΡΠ΅ ΠΆΠ΅Π»Π°Π΅, Π½ΠΎ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ»Π΅Π΄ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠΈΡΠ΅ offset_of, slice_ptr_get ΠΈ slice_ptr_len.
Π‘ΡΠ΅Π΄ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½ΡΠΆΠ΄Π°ΡΠ° ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠΎΠ»Π΅ΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ ΡΡΠ΅Π· Π³ΠΎΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π°Π΄ unsafe-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π² Π΅Π΄Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ²Π»ΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ°ΡΡΠΈ.
Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°Π½ΡΠ½ΠΈΡ ΠΊΠΎΠ΄, ΡΡΠ°ΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΡΡΡΠΌΡΠ΅ΡΠ° pVM Π·Π°Π΅ΠΌΠ°ΡΠ΅ 220 kB, Π° Π½ΠΎΠ²ΠΈΡΡ - 460 kB, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ²Π° Π² ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΠΌ ΠΎΡ Π½ΡΠΊΠΎΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΡΠΌΠ°ΡΠ½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ°ΡΠΈ ΠΈ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΡΡΠ°Π²Π½ΠΈΠΌ. ΠΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π° ΡΠ΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π΅ ΠΏΠΎ-Π²Π°ΠΆΠ΅Π½ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ°Ρ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅Ρ, Π΄Π° ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»ΡΡ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΡΠ»ΡΠΆΠ°Π²Π°ΡΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ (Trusted Application) Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Trusty, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° TEE-ΡΡΠ΅Π΄Π° (Trusted Execution Environment) Π·Π° Android, ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ Android Π½Π° ΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π°. Trusty ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° Pixel ΠΈ Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Rust Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ (ΡΠ΄ΡΠΎΡΠΎ ΠΎΡΡΠ°Π²Π° Π½Π° C).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
