ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Moss Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Linux-совмСстимоС ядро Π½Π° языкС Rust

ПослС 8 мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ядра Moss, частично совмСстимого с Linux. Код написан Π½Π° языкС Rust с ассСмблСрными вставками ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π’ настоящСС врСмя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Aarch64, ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² QEMU ΠΈ протСстировано Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… Raspberry Pi 4, Jetson Nano, AMD Kria ΠΈ imx8. По ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядро Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, Ρ‚Π°ΠΊΠΈΡ… x86_64 ΠΈ RISC-V, благодаря прослойкС для абстрагирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ оборудования.

На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Moss Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ 51 систСмный Π²Ρ‹Π·ΠΎΠ² Linux ΠΈ обСспСчСна бинарная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с прилоТСниями для Linux, достаточная для запуска ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Bash ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° BusyBox. Из особСнностСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Moss отмСчаСтся использованиС ΠΌΠΎΠ΄Π΅Π»ΠΈ async/await для обСспСчСния асинхронного выполнСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ядра, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ основныС классы Π²Π·Π°ΠΈΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π’ Ρ„ΠΎΡ€ΠΌΠ΅ асинхронно выполняСмых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ всС Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности:

  • БистСма управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ страниц памяти Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ CoW (Copy-on-Write), Ρ‚Π°Π±Π»ΠΈΡ† страниц памяти, асинхронных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ копирования памяти ΠΌΠ΅ΠΆΠ΄Ρƒ ядром ΠΈ пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (page fault) Π½Π° сторонС ядра ΠΈ пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • БистСма управлСния процСссами с ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ Ρ‡Π΅Ρ€Π΅Π· IPI (inter-processor interrupt). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° отвСтвлСния процСссов Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² clone(). ВозмоТности для доставки сигналов процСссам ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ.
  • Асинхронно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ слой VFS (Virtual File System), Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ устройство Ramdisk, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ FAT32 ΠΈ устройство devtmpfs.
  • Вынос основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ libkernel, Π½Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌ.
  • HAL-прослойка (Hardware Abstraction Layer) для обСспСчСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ оборудования.
  • ВСстовый Π½Π°Π±ΠΎΡ€, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ 230 тСстов.

Из сущСствСнных ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ отмСчаСтся отсутствиС сСтСвой подсистСмы ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ лишь ΡƒΡ€Π΅Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π€Π‘ Fat32 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ упомянуто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Linux, созданиС TCP/IP стСка, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ ΠΈ прСдоставлСниС ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (ext2/4).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ