Vivo ettevõte, mis omab umbes 10% maailma nutitelefonide turust (5. koht nutitelefonide tootjate seas), esitles esimest ametlikku avatud versiooni BlueOS (Blue River OS) operatsioonisüsteemi tuumast. BlueOS operatsioonisüsteemi on arendatud alates 2018. aastast ning seda kasutatakse juba Vivo Watch seeria nutikellades. Vivo töötab ka BlueOS rakendamise nimel nutikaites, robotites, nutiterminalides ja tarbijate AI-seadmetes. Tuuma kood on kirjutatud Rust keeles ja see on avalikustatud Apache 2.0 litsentsi all. BlueOS süsteemi raamistikud on samuti kirjutatud Rustis.
BlueOS operatsioonisüsteem areneb algselt põhirõhuga turvalisusele ja kasutab Rust keelt, et vältida mäluhalduse vigade tõttu tekkivaid haavatavusi, mis Google'i ja Microsofti statistika kohaselt moodustavad 70% kõikidest haavatavustest operatsioonisüsteemides. BlueOS-i mäluga ohutuks töötamiseks kasutatakse kombinatsiooni nutikatest näidikutest töötamise ajal ja Rust keelest saadud kompileerimise ajal tehtud kontrollidest (objektide omamise jälgimine, muutujate laenamise kontrolid, objektide eluea arvestamine).
BlueOS-i tuum (Blue River Kernel) on optimeeritud minimaalsete ressursside tarbimise jaoks ja võib töötada sisseehitatud platvormidel, mobiilseadmetes ja asjade Interneti süsteemides. Minimaalses konfiguratsioonis vajab tuum oma tööks vaid 13 KB RAM-i. Tuum toetab kaasaegseid protsessorite arhitektuure, sealhulgas ARM ja RISC-V. Tuuma peal on rakendatud C standardbiblioteek, mis toetab POSIX standardis määratletud rakendusliideseid, samuti rust-std raamatukogu.
Tuum pakub ülesannete ajastajat, failisüsteemi, mälu haldamise mehhanismi, võrgustiku kihti ja komplekti draivereid. Toetatakse mitmeid ülesannete ajastamise algoritme, sealhulgas algoritme, mis jagavad aja kvante protsesside vahel ühtlaselt, ning reaalajas töötluse algoritme, mis põhinevad prioriteetide arvutamisel. Saadaval on mitmed mälu eraldamise algoritmid, mis on optimeeritud erinevate kasutusstsenaariumite jaoks.
Pakutakse klassikalise hierarhilise arhitektuuriga failisüsteemi, mis põhineb inode-l, ning failisüsteeme nagu tmpfs, devfs, sysfs, procfs, nfs ja fat32. TCP/IP kiht toetab POSIX Socket API, socketfd ja andmete töötlemist blokeerivas ja mitte-blokeerivas režiimis ning seda saab kasutada mitme võrgukaardi konfiguratsioonides. Andmete edastamise kulude vähendamiseks rakendatakse zero-copy arhitektuuri, mis välistab vahepealse puhversalade loomise.
Draiverite väljatöötamiseks on pakutud riistvarale juurdepääsu abstraktsioonikiht, mis võimaldab luua draivereid Rust keeles ning üle viia C keeles juba loodud draivereid teistele tuumadele. Tuuma dokumentatsioon on hetkel piiratud koostamis- ja testimisjuhiste ning süsteemikutsungite rakendamise nõuannete ja põhitehtede andmete kirjeldustega. Testimiseks on soovitatav kasutada QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) või Raspberry Pi Pico2 plaati.
Allikas: opennet.ru
