Rust-da Linux nüvəsi üçün təhlükəsiz sürücülərin yazılması üçün çərçivə

Intel-də işləyən və Crates.io-nun inkişafına nəzarət edən komitədə olan Josh Triplett Açıq Mənbə Texnologiya Sammitində çıxış edir. təqdim etdi sistem proqramlaşdırma sahəsində Rust dilini C dili ilə paritetə ​​gətirmək məqsədi daşıyan işçi qrup.

Yaradılma mərhələsində olan işçi qrupda Rust tərtibatçıları Intel mühəndisləri ilə birlikdə sistem proqramlaşdırması üçün Rust-da tətbiq edilməli olan funksionallığı müəyyən edən spesifikasiyalar hazırlayacaqlar. Sistem proqramlaşdırması çox vaxt aşağı səviyyəli manipulyasiya tələb edir, məsələn, imtiyazlı prosessor göstərişlərini yerinə yetirmək və prosessorun vəziyyəti haqqında ətraflı məlumat əldə etmək. Rust üçün artıq işlənib hazırlanan oxşar xüsusiyyətlərdən adsız strukturlara, birliklərə, montaj dili əlavələrinə (“asm!” makrosu) və BFLOAT16 üzən nöqtəli nömrə formatına dəstək qeyd olunur.

Josh hesab edir ki, sistem proqramlaşdırmasının gələcəyi Rusta məxsusdur və müasir reallıqda C dili keçmiş illərdə Assambleyanın tutduğu yerə iddialıdır. Pas
tərtibatçıları nəinki yaddaşla aşağı səviyyədə işləmək nəticəsində yaranan C dilinə xas olan problemlərdən azad edir, həm də ondan müasir proqramlaşdırma paradiqmalarının hazırlanmasında istifadə etmək imkanı yaradır.

Hələlik müzakirələr Göstəriləcək tamaşalar
Josh, Linux nüvəsinə Rust dilində drayverləri inkişaf etdirmək qabiliyyətini əlavə etmək ideyası ilə gəldi, bu, boşaldıqdan sonra yaddaşa giriş kimi problemlərdən azad, minimum səylə daha təhlükəsiz və daha yaxşı sürücülər yaratmağa imkan verəcək, null. göstəricidən imtina və buferin aşılması.

Linux nüvəsinin sabit filialının saxlanmasına cavabdeh olan Greg Kroah-Hartman, məsələn, C ilə müqayisədə real üstünlüklərə malik olduğu təqdirdə Rust dilində drayverlərin inkişafı üçün çərçivə əlavə etməyə hazır olduğunu bildirdi. Kernel API üzərində bağlamalar. Bundan əlavə, Greg bu çərçivəni yalnız bir seçim kimi nəzərdən keçirir, defolt olaraq aktiv deyil, belə ki, Rust nüvədən qurma asılılığı kimi daxil olmasın.

Məlum oldu ki, artıq bir neçə komanda bu istiqamətdə işləyir. Məsələn, "Fish in a Barrel" şirkətinin tərtibatçıları подготовили təhlükəsizliyi artırmaq üçün interfeyslər və nüvə strukturları üzərində bir sıra mücərrəd təbəqələrdən istifadə edərək Rust dilində Linux nüvəsi üçün yüklənə bilən modulların yazılması üçün alətlər dəsti. Layers, yardım proqramından istifadə edərək, mövcud nüvə başlıq faylları əsasında avtomatik olaraq yaradılır bağlayıcı. Clang təbəqələrin qurulması üçün istifadə olunur. İnterlayerlərə əlavə olaraq yığılmış modullar staticlib paketindən istifadə edir.

Paralel inkişaf edir Başqa bir layihə daxili sistemlər və IoT cihazları üçün drayverlərin hazırlanmasına yönəldilib, bu da kernel başlıq faylları əsasında təbəqələr yaratmaq üçün bindgen-dən istifadə edir. Çərçivə nüvədə dəyişiklik etmədən sürücü təhlükəsizliyini təkmilləşdirməyə imkan verir - kerneldə sürücülər üçün əlavə izolyasiya səviyyələri yaratmaq əvəzinə, daha təhlükəsiz Rust dilindən istifadə edərək kompilyasiya mərhələsində problemlərin qarşısını almaq təklif olunur. Ehtimal olunur ki, belə bir yanaşma, müvafiq audit aparmadan tələsik mülkiyyət sürücülərini inkişaf etdirən avadanlıq istehsalçıları tərəfindən tələb oluna bilər.

Nəzərdə tutulan funksionallığın hamısı hələ həyata keçirilməyib, lakin çərçivə artıq iş üçün kifayət qədər uyğundur və Raspberry Pi 9512 lövhəsində təchiz edilmiş LAN3 USB Ethernet nəzarətçisi üçün işləyən sürücü yazmaq üçün istifadə edilmişdir.Mövcud smsc95xx sürücüsü, C dili. Qeyd olunur ki, Rust-da drayver hazırlayarkən modulun ölçüsü və iş vaxtı komponentlərindən əlavə xərclər əhəmiyyətsizdir, bu da çərçivədən məhdud resursları olan cihazlar üçün istifadə etməyə imkan verir.

Mənbə: opennet.ru

Добавить комментарий