Ettevõte Vivo, mille turuosa nutitelefonide turul on umbes 10% (5. koht nutitelefonide tootjate seas), esitles esmakordselt ametlikku avatud väljaannet operatsioonisüsteemi BlueOS (Blue River OS) tuumast. BlueOSi operatsioonisüsteem on arenenud alates 2018. aastast ja seda kasutatakse juba Vivo Watch seeria nutikellades. Vivo töötab ka BlueOSi kasutuselevõtu kallal nutiklaasidesse, robotitesse, nutiterminalidesse ja tarbijate AI-seadmetesse. Tuuma kood on kirjutatud Rusti keeles ja avatud Apache 2.0 litsentsi all. BlueOSi süsteemiraamistikud on samuti kirjutatud Rustis.
Operatsioonisüsteem BlueOS arene tõlgata algselt silmas pidades turvafunktsioone ning see kasutab Rusti keelt, et vältida mäluhalduse vigadest tingitud haavatavusi, mis Google'i ja Microsofti statistika järgi moodustavad 70% kõikidest operatsioonisüsteemide haavatavustest. BlueOSi mälukaitse tagamiseks kasutatakse kombinatsiooni intelligentsetest näidikutest töö ajal ja Rusti keele poolt pakutavatest kompileerimise kontrollidest (objektide omamise jälgimine, muutuja laenamise kontroll ja objektide eluaja arvestamine).
BlueOSi tuum (Blue River Kernel) on optimeeritud minimaalsete ressursside tarbeks ja seda saab kasutada sisseehitatud platvormidel, mobiilseadmetes ja asjade interneti süsteemides. Miinimumkonfiguratsioonis vajab tuum tööks vaid 13 KB RAM-i. Samuti toetab tuum kaasaegseid protsessorite arhitektuure, sealhulgas ARM ja RISC-V. Tuuma peal on rakendatud standardne C teek, mis toetab POSIXis määratletud programmisliideseid, samuti rust-std teek.
Tuum pakub ülesannete ajakava, failisüsteemi, mälu haldamise mehhanismi, võrgu kihti ja draiverite komplekti. Toetatakse mitmeid ülesannete ajastamise algoritme, sealhulgas nii algoritme, mis jagavad ajakvante protsesside vahel võrdselt, kui ka reaalaegseid algoritme, mis põhinevad prioriteetide arvutamisel. Saadaval on mitmed mäluhaldusalgoritmid, mis on optimeeritud erinevate kasutusstsenaariumide jaoks.
Pakutakse oma failisüsteemi klassikalise hierarhilise arhitektuuri põhjal, mis põhineb inode'il, samuti failisüsteeme tmpfs, devfs, sysfs, procfs, nfs ja fat32. TCP/IP protokollipakk toetab POSIX Socket API-d, socketfd-d ja andmete töötlemist blokeerivas ja mitteblokeerivas režiimis ning seda saab kasutada mitme võrkaardi konfiguratsioonides. Andmete edastamise kulude vähendamiseks kasutatakse zero-copy arhitektuuri, mis välistab vahebufferdamise.
Draiverite arendamiseks pakutakse kihti riistvarale juurdepääsu abstrakteerimiseks, mis võimaldab luua draivereid Rust'i keeles ning ka tõsta teisi C keeles juba olemasolevaid draivereid teistest kernelitest. Tuumadokumendid piirduvad praegu ainult kompileerimise ja testimise juhistega, samuti näpunäidetega oma süsteemikutsungite rakendamiseks ja põhitüüpide kirjeldamiseks. Testimiseks on soovitatav kasutada QEMU-d (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) või Raspberry Pi Pico2 arendustahvel.
Allikas: opennet.ru
