Firma Vivo otworzyła kod jądra BlueOS, napisanego w języku Rust

Firma Vivo, zajmująca około 10% światowego rynku smartfonów (5. miejsce wśród producentów smartfonów), zaprezentowała pierwsze oficjalne otwarte wydanie jądra systemu operacyjnego BlueOS (Blue River OS). System operacyjny BlueOS rozwija się od 2018 roku i jest już używany w inteligentnych zegarkach z serii Vivo Watch. Vivo pracuje również nad zastosowaniem BlueOS w inteligentnych okularach, robotach, inteligentnych terminalach i urządzeniach AI dla konsumentów. Kod jądra jest napisany w języku Rust i udostępniony na licencji Apache 2.0. Systemowe ramy BlueOS również zostały napisane w Rust.

System operacyjny BlueOS początkowo został opracowany z myślą o zapewnieniu bezpieczeństwa i wykorzystuje język Rust, aby zapobiegać pojawianiu się luk bezpieczeństwa spowodowanych błędami w zarządzaniu pamięcią, które według statystyk Google i Microsoft stanowią 70% wszystkich luk w systemach operacyjnych. Aby zapewnić bezpieczne zarządzanie pamięcią w BlueOS, stosuje się kombinację inteligentnych wskaźników w czasie wykonywania oraz sprawdzeń na etapie kompilacji, zapewnianych przez język Rust (śledzenie własności obiektów, sprawdzanie pożyczania zmiennych, uwzględnianie czasu życia obiektów).

Jądro BlueOS (Blue River Kernel) jest zoptymalizowane pod kątem minimalnego zużycia zasobów i może być używane na platformach wbudowanych, urządzeniach mobilnych oraz w systemach Internetu Rzeczy. W minimalnej konfiguracji jądro wymaga jedynie 13 KB pamięci RAM do pracy. Jednocześnie jądro obsługuje nowoczesne architektury procesorów, w tym ARM i RISC-V. Na jądro nałożona jest standardowa biblioteka C, która obsługuje interfejsy programowe określone w standardzie POSIX, a także biblioteka rust-std.

Jądro zapewnia harmonogram zadań, system plików, mechanizm zarządzania pamięcią, stos sieciowy oraz zestaw sterowników. Obsługiwanych jest kilka algorytmów planowania zadań, w tym algorytmy do równomiernego rozdzielania kwantów czasu pomiędzy procesami oraz algorytmy do pracy w czasie rzeczywistym na podstawie obliczania priorytetów. Dostępne są różne algorytmy alokacji pamięci, zoptymalizowane pod kątem różnych scenariuszy użycia.

Dostarczana jest własna struktura plików z klasyczną architekturą hierarchiczną opartą na inode, a także systemy plików tmpfs, devfs, sysfs, procfs, nfs i fat32. Stos TCP/IP obsługuje POSIX Socket API, socketfd oraz przetwarzanie danych w trybie blokującym i nieblokującym, i może być używany w konfiguracjach z wieloma kartami sieciowymi. Aby zredukować narzuty związane z przesyłaniem danych, zastosowano architekturę zero-copy, eliminującą pośrednie buforowanie.

W celu tworzenia sterowników oferowana jest warstwa do abstrakcji dostępu do sprzętu, pozwalająca na pisanie sterowników w języku Rust, a także przenoszenie sterowników napisanych w C, które zostały już stworzone dla innych jąder. Dokumentacja do jądra na razie ogranicza się do instrukcji dotyczących kompilacji i testowania, a także wskazówek dotyczących implementacji własnych wywołań systemowych oraz opisu podstawowych typów danych. Do testowania zaleca się użycie QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) lub płytki Raspberry Pi Pico2.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster