Выпуск аперацыйнай сістэмы Redox OS 0.7, напісанай на мове Rust

Пасля паўтары гадоў распрацоўкі апублікаваны выпуск аперацыйнай сістэмы Redox 0.7, распрацаванай з выкарыстаннем мовы Rust і канцэпцыі мікраядра. Напрацоўкі праекту распаўсюджваюцца пад вольнай ліцэнзіяй MIT. Для тэставання Redox OS прапанаваны ўсталявальныя і Live-выявы, памерам 75 МБ. Зборкі сфарміраваны для архітэктуры x86_64 і даступныя для сістэм з UEFI і BIOS.

Пры падрыхтоўцы новага выпуску асноўная ўвага была ўдзелена забеспячэнню работы на рэальным абсталяванні. Асноўныя навіны:

  • Цалкам перапісаны загрузнік, у якім уніфікаваны і пераважна напісаны на Rust код для загрузкі на сістэмах з BIOS і UEFI. Змена загрузніка дазволіла істотна пашырыць спектр падтрымоўванага абсталявання.
  • У ядры апроч выпраўлення памылак праведзена праца па падвышэнні прадукцыйнасці і пашырэнню падтрымкі абсталявання. Спецыфічныя для CPU зменныя перакладзены на выкарыстанне рэгістра GS. Забяспечана адлюстраванне (мапінг) усёй фізічнай памяці, спынена выкарыстанне рэкурсіўных старонак памяці. Асэмблерны код у inline-устаўках перапісаны для паляпшэння сумяшчальнасці з будучымі выпускамі кампілятара.
  • Дададзена пачатковая падтрымка архітэктуры AArch64.
  • Ажыццёўлены пераход на апрацоўку ўсіх файлавых шляхоў у кадоўцы UTF-8.
  • Код для працы з ACPI AML (ACPI Machine Language) Specification – uefi.org перанесены з ядра ў фонавы працэс acpid, выкананы ў карыстацкай прасторы.
  • Змесціва Initfs перанесена ў новы файл, што спрасціла фармаванне пакетаў.
  • Файлавая сістэма RedoxFS перапісаная і перакладзеная на выкарыстанне механізму CoW (Copy-on-Write), пры якім змены не перазапісваюць інфармацыю, а захоўваюцца ў новае месца, што дазволіла дамагчыся істотнага падвышэння надзейнасці. З новых магчымасцяў RedoxFS адзначаецца падтрымка транзакцыйных абнаўленняў, шыфраванні дадзеных з выкарыстаннем алгарытму AES, а таксама запэўненні дадзеных і метададзеных лічбавымі подпісамі. Забяспечана сумеснае выкарыстанне кода ФС у сістэме і загрузніку.
  • Прадоўжана ўдасканаленне якая развіваецца праектам стандартнай Сі-бібліятэкі Relibc, здольнай працаваць не толькі ў Redox, але і ў дыстрыбутывах на базе ядра Linux. Унесеныя змены спрасцілі перанос розных праграм у Redox і вырашылі праблемы са шматлікімі праграмамі і бібліятэкамі, напісанымі на мове Сі.
  • Падрыхтавана версія кампілятара rustc, здольная запускацца ў Redox. З якія застаюцца задач адзначаецца аптымізацыя прадукцыйнасці і адаптацыя пакетнага мэнэджара cargo для працы ў асяроддзі Redox.

Выпуск аперацыйнай сістэмы Redox OS 0.7, напісанай на мове Rust

Аперацыйная сістэма развіваецца ў адпаведнасці з філасофіяй Unix і запазычае некаторыя ідэі з SeL4, Minix і Plan 9. Redox выкарыстоўвае канцэпцыю мікраядра, пры якім на ўзроўні ядра забяспечваецца толькі ўзаемадзеянне паміж працэсамі і кіраванне рэсурсамі, а ўся астатняя функцыянальнасць вынесена ў бібліятэкі, якія могуць выкарыстоўвацца як ядром, так і карыстацкімі праграмамі. Усе драйверы выконваюцца ў прасторы карыстача ў ізаляваных sandbox-акружэннях. Для сумяшчальнасці з існуючымі праграмамі прадастаўляецца спецыяльная POSIX-праслойка, якая дазваляе запускаць многія праграмы без партавання.

У сістэме прымяняецца прынцып «усё ёсць URL». Напрыклад, для запісу ў лог можа выкарыстоўвацца URL "log://", для ўзаемадзеяння паміж працэсамі "bus://", для сеткавага ўзаемадзеяння "tcp://" і да т.п. Модулі, якія могуць быць рэалізаваны ў форме драйвераў, пашырэнняў ядра і карыстацкіх прыкладанняў, могуць рэгістраваць свае апрацоўшчыкі URL, напрыклад, можна напісаць модуль звароту да партоў уводу/высновы і прывязаць яго да URL "port_io://", пасля чаго можна выкарыстоўваць яго для доступу да 60 порце праз адкрыццё URL "port_io://60".

Карыстальніцкае асяроддзе ў Redox пабудавана на базе ўласнай графічнай абалонкі Orbital (не блытаць з іншай абалонкай Orbital, якая выкарыстоўвае Qt і Wayland) і тулкіта OrbTk, які прадстаўляе API, падобны на Flutter, React і Redux. У якасці web-браўзэра прымяняецца Netsurf. Праектам таксама развіваецца ўласны пакетны мэнэджар, набор стандартных утыліт (binutils, coreutils, netutils, extrautils), камандная абалонка ion, стандартная Сі-бібліятэка relibc, vim-падобны тэкставы рэдактар ​​sodium, сеткавы стэк і файлавая сістэма. Канфігурацыя задаецца на мове Toml.

Крыніца: opennet.ru

Дадаць каментар