Maestro skärmdump
Rost har fått tillräckligt med popularitet till en sådan grad att det har blivit ett av de som valts ut att integreras som sekundärspråk i Linux, såväl som i andra operativsystem, så är fallet med Android, som redan har en del av koden i Rust, Windows som också har gett godkännandet bl.
Rust har visat sig vara ett robust språk och har skapat ett sådant förtroende Vissa operativsystem har till och med skapats med detta programmeringsspråk och bara för att nämna några har vi: Redox, Vi har även Kernels skrivna från grunden som t.ex Kerla eller kärnan som används i satellit som Kina nyligen skjutit upp.
Anledningen till att nämna detta är att jag nyligen kom över en nyhet som fångade min uppmärksamhet och det är att Ett projekt presenterades där en kärna skriven i Rust utvecklas och som är delvis kompatibel med Linux.
Namnet på detta projekt är "Lärare" och som sagt, är en Unix-liknande kärna skriven i Rust som implementerar en delmängd av systemanrop från Linux-kärnan tillräckligt för att skapa standardarbetsmiljöer. Som sådant är "Maestro"-projektet inte något nytt, eftersom utvecklaren nämner att projektet föddes 2018, men vid den tiden skrevs det i C och på grund av Rusts olika fördelar och egenskaper skrevs projektet om från noll.
På projektsidan Orsakerna till förändringen beskrivs:
I det ögonblicket bestämde jag mig för att byta till Rust (mitt första projekt på detta språk), vilket representerade flera fördelar:
- Starta om projektet från början, med hjälp av lärdomar från tidigare misstag.
- Var lite mer innovativ än att bara skriva en Linux-liknande kärna i C. Använd trots allt bara Linux vid tillfället.
- Använd säkerheten i Rust-språket för att dra fördel av vissa kärnprogrammeringssvårigheter. Genom att använda Rust-skrivsystemet kan du överföra en del av ansvaret för minnessäkerhet från programmeraren till kompilatorn.
Vid kärnutveckling är felsökning mycket svårt av flera anledningar:
- Dokumentation är ofta svårt att hitta och BIOS-implementationer kan vara buggiga (oftare än du tror).
- Vid uppstart har kärnan full tillgång till minne och kan skriva där den inte ska (till exempel sin egen kod).
- Det är inte lätt att felsöka minnesläckor. Verktyg som valgrind kan inte användas.
- gdb kan användas med QEMU och VMWare, men kärnan kan bete sig annorlunda när den körs på en annan emulator eller virtuell maskin. Dessa emulatorer kanske inte stöder gdb (t.ex. VirtualBox).
- Vissa funktioner saknas från gdb-stöd i QEMU eller VMWare och gdb kan till och med krascha ibland
I relation med egenskaper hos projektet, sticker det ut att kärnan är monolitisk och stöds för närvarande endast på x86-system i 32-bitarsläge. Kärnkodbasen täcker cirka 49 tusen rader och är körbar både på riktig hårdvara och i virtualiserade miljöer, såsom QEMU eller VirtualBox.
I den nuvarande utvecklingen av "Maestro", 31 % har genomförts (135 av 437) av Linux-systemanrop. Detta är tillräckligt för att ladda en konsolmiljö baserad på Bash och Musl standard C-bibliotek. Dessutom kan den Maestro-baserade miljön köra vissa verktyg från GNU coreutils-sviten och grundläggande paket från vilket Unix-system som helst. För närvarande pågår arbete med att implementera en nätverksstack och det pågår även arbete med att utveckla en
Bland de Maestros tillgängliga funktioner sticker ut det följande::
- Styrenheter för PS/2-tangentbord och terminal med textläge och partiellt stöd för ANSI-sekvenser.
- Minnestilldelningssystem med stöd för virtuellt minne.
- Uppgiftsschemaläggare baserad på round-robin-algoritmen med stöd för POSIX-signaler.
- Definition av PCI-enheter.
- IDE/PATA-kontroller.
- Ext2 filsystem.
- Stöd för virtuella filsystem /tmp och /proc.
- Möjlighet att montera FS-, MBR- och GPT-diskpartitioner.
- initramfs stöd.
- RTC-kontroll för timer och exakt tid.
- Stöd för att ladda kärnmoduler.
- Möjlighet att köra körbara filer i ELF-format.
För intresserad av att lära sig lite mer om projektet, kan du kontrollera detaljerna I följande länk. När det gäller de som är intresserade av projektkoden bör de veta att det är det distribueras under MIT-licensen.