Выпуск Muen 1.0, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ микроядра для создания высоконадёТных систСм

ПослС восьми Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π» свСт выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Muen 1.0, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ядро раздСлСния (Separation kernel), отсутствиС ошибок Π² исходных тСкстах ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ матСматичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ надёТности. Π―Π΄Ρ€ΠΎ доступно для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64 ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… систСмах, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ уровня надёТности ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ отсутствия сбоСв. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написаны Π½Π° языкС Ада ΠΈ Π΅Π³ΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅ SPARK 2014. Код распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv3.

Π―Π΄Ρ€ΠΎ раздСлСния прСдставляСт собой микроядро, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для исполнСния ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², взаимодСйствиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Тёстко Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ. Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ основана Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Intel VT-x ΠΈ прСдусматриваСт Π² Ρ‚ΠΎΠΌ числС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ скрытых ΠΊΠ°Π½Π°Π»ΠΎΠ² связи. Π―Π΄Ρ€ΠΎ раздСлСния Π±ΠΎΠ»Π΅Π΅ минималистично ΠΈ статично ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ микроядрами, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ число ситуаций, способных привСсти ΠΊ сбою.

Π―Π΄Ρ€ΠΎ выполняСтся Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ VMX ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ, Π° всё ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Π½Π΅ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ VMX ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с гостСвыми систСмами. Доступ ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ производится с использованиСм Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Intel VT-d DMA ΠΈ Ρ€Π΅ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ привязку PCI-устройств ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, запускаСмым ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Muen.

Выпуск Muen 1.0, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ микроядра для создания высоконадёТных систСм

Из возмоТностСй Muen отмСчаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° многоядСрных систСм, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… страниц памяти (EPT, Extended Page Tables), MSI (Message Signaled Interrupts), Ρ‚Π°Π±Π»ΠΈΡ† Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² страниц памяти (PAT, Page Attribute Table). Muen Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт фиксированный Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π½Π° Π±Π°Π·Π΅ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Intel VMX, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ runtime, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, систСму Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΊΡ€Π°Ρ…ΠΎΠ², ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ статичСского назначСния рСсурсов Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ», систСму ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ раздСляСмой памяти для взаимодСйствия Π²Π½ΡƒΡ‚Ρ€ΠΈ запускаСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ запуск ΠΏΠΎΠ²Π΅Ρ€Ρ… Muen ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с 64-разрядным ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, 32- ΠΈΠ»ΠΈ 64-разрядных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, 64-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языках Ada ΠΈ SPARK 2014, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин с Linux ΠΈ самодостаточных «unikernel» Π½Π° Π±Π°Π·Π΅ MirageOS.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² выпускС Muen 1.0:

  • ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ со спСцификациями ядра (устройство ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°), систСмы (систСмныС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Tau0 ΠΈ инструмСнтарий) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ всС аспСкты Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ инструмСнтарий Tau0 (Muen System Composer), Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ систСмных ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… сСрвисов, запускаСмых ΠΏΠΎΠ²Π΅Ρ€Ρ… Muen. Π‘Ρ€Π΅Π΄ΠΈ прСдоставляСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ AHCI (SATA), Device Manager (DM), Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, систСмный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Ρ‚.ΠΏ.
  • Linux-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ muenblock (рСализация Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… раздСляСмой памяти Muen) ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π½Π° использованиС API blockdev 2.0.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ инструмСнты для управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  • БистСмныС ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° использованиС SBS (Signed Block Stream) ΠΈ CSL (Command Stream Loader) для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ цСлостности.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ AHCI-DRV, написанный Π½Π° языкС SPARK 2014 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ интСрфСйс ATA, ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ дисковыС Ρ€Π°Π·Π΄Π΅Π»Ρ‹.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° unikernel ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² MirageOS ΠΈ Solo5.
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ для языка Ада ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ выпуска GNAT Community 2021.
  • БистСма Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с эмулятора Bochs Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ окруТСния QEMU/KVM.
  • Π’ ΠΎΠ±Ρ€Π°Π·Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Linux задСйствовано ядро Linux 5.4.66.

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