ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° , ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ βunikernelβ, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΠ΄ΡΠΎ Π½Π° ΠΠ‘ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΈ Π΄Π° Π±ΠΈΠ»ΠΎ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π·ΠΈΠΊΡΡ OCaml. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°ΡΠ° Π»ΠΈΡΠ΅Π½Π·ΠΈΡ ISC.
Π¦ΡΠ»Π°ΡΠ° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΡΠΈΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΡΠΈΠΊΡΠ΅ΠΏΡΠ½Π° ΠΊΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ Π² ΠΊΠΎΡΡΠΎ ΠΈ Π΄Π° Π΅ ΠΠ‘, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΄ΡΠΎ (ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° ), ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΡΡ Ρ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠΈΡΠ΅ Xen, KVM, BHyve ΠΈ VMM (OpenBSD), Π²ΡΡΡ Ρ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅Ρ Π² POSIX-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° ΡΡΠ΅Π΄Π° ΠΈΠ»ΠΈ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ Amazon Elastic Compute Cloud ΠΈ Google Compute Engine.
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Π½Π΅ ΡΡΠ΄ΡΡΠΆΠ° Π½ΠΈΡΠΎ ΠΈΠ·Π»ΠΈΡΠ½ΠΎ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° Π±Π΅Π· Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ MirageOS ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ Π΅ΡΠ°ΠΏΠ°: ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π² ΡΡΠ΅Π΄Π°ΡΠ° , ΡΠ±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°. Runtime Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π²ΡΡΡ Ρ Xen Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΎ ΡΠ΄ΡΠΎ , Π° Π·Π° Π΄ΡΡΠ³ΠΈΡΠ΅ Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠ΄ΡΠΎ .
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Ρ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈΡ Π΅Π·ΠΈΠΊ OCaml, ΠΊΡΠ°ΠΉΠ½ΠΈΡΡ ΠΎΠ±Π»ΠΈΠΊ Π½Π° ΡΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, DNS-ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π°Π΅ΠΌΠ° ΡΠ°ΠΌΠΎ 200 ΠΠ±). ΠΠΏΡΠΎΡΡΡΠ²Π° ΡΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄ΠΈΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° Π½ΠΎΠ²Π° ΡΡΠ΅Π΄Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° OCaml Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (DNS, SSH, OpenFlow, HTTP, XMPP ΠΈ Ρ.Π½.), ΡΠ°Π±ΠΎΡΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (sandbox-ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° unikernel):
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° unikernel MirageOS Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π° (βsandboxed process tenderβ), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ . ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° spt, ΡΠ΄ΡΠΎΡΠΎ Π½Π° MirageOS ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Linux, ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° Π±Π°Π·Π° seccomp-BPF;
- ΠΡΡΡΠ΅ΡΡΠ²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Solo5, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΊΡΠΌ unikernel ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠ° ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° Π±Π°Π·Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ hvt, spt ΠΈ muen (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ genode ΠΈ virtio Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ Π΄ΠΎ Π΅Π΄Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ);
- Π£ΠΊΡΠ΅ΠΏΠ΅Π½Π° Π΅ Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΈΡΠ΅ Π½Π° Π±Π°Π·Π° Solo5 (hvt, spt), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ SSP (Stack Smashing Protection).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
