การเปิดตัวระบบปฏิบัติการ 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 รีดอกซ์ใช้แนวคิดของไมโครเคอร์เนล ซึ่งมีเพียงการโต้ตอบระหว่างกระบวนการและการจัดการทรัพยากรในระดับเคอร์เนลเท่านั้น และอื่นๆ ทั้งหมด ฟังก์ชันการทำงานถูกวางไว้ในไลบรารีที่สามารถใช้ได้ทั้งเคอร์เนลและแอปพลิเคชันผู้ใช้ ไดรเวอร์ทั้งหมดทำงานในพื้นที่ผู้ใช้ในสภาพแวดล้อมแซนด์บ็อกซ์ที่แยกจากกัน เพื่อความเข้ากันได้กับแอปพลิเคชันที่มีอยู่จึงมีการจัดเตรียมเลเยอร์ POSIX พิเศษไว้ซึ่งช่วยให้คุณสามารถเรียกใช้หลายโปรแกรมโดยไม่ต้องย้ายพอร์ต

ระบบใช้หลักการ “ทุกอย่างคือ URL” ตัวอย่างเช่น URL “log://” สามารถใช้สำหรับการบันทึก “bus://” สำหรับการโต้ตอบระหว่างกระบวนการ “tcp://” สำหรับการโต้ตอบเครือข่าย ฯลฯ โมดูลซึ่งสามารถนำไปใช้ในรูปแบบของไดรเวอร์ ส่วนขยายเคอร์เนล และแอปพลิเคชันผู้ใช้ สามารถลงทะเบียนตัวจัดการ URL ของตนเองได้ ตัวอย่างเช่น คุณสามารถเขียนโมดูลการเข้าถึงพอร์ต I/O และผูกเข้ากับ URL "port_io:// " หลังจากนั้นคุณสามารถใช้เพื่อเข้าถึงพอร์ต 60 ได้โดยเปิด URL “port_io://60”

สภาพแวดล้อมผู้ใช้ใน Redox สร้างขึ้นบนพื้นฐานของเชลล์กราฟิกของ Orbital เอง (เพื่อไม่ให้สับสนกับเชลล์ Orbital อื่นที่ใช้ Qt และ Wayland) และชุดเครื่องมือ OrbTk ซึ่งมี API ที่คล้ายกับ Flutter, React และ Redux Netsurf ถูกใช้เป็นเว็บเบราว์เซอร์ โปรเจ็กต์นี้ยังกำลังพัฒนาตัวจัดการแพ็คเกจของตัวเอง ชุดยูทิลิตี้มาตรฐาน (binutils, coreutils, netutils, extrautils), เชลล์คำสั่ง ion, relibc ไลบรารี C มาตรฐาน, โปรแกรมแก้ไขข้อความที่มีลักษณะคล้าย vim, สแต็กเครือข่าย และไฟล์ ระบบ. การกำหนดค่าถูกตั้งค่าเป็นภาษา Toml

ที่มา: opennet.ru

เพิ่มความคิดเห็น