Maestro skærmbillede
Rust har fået nok popularitet i en sådan grad, at det er blevet et af dem, der er valgt til at blive integreret som et sekundært sprog i Linux, såvel som i andre operativsystemer, som det er tilfældet med Android, som allerede har en del af koden i Rust, Windows, der også har givet godkendelsen bl.a.
Rust har vist sig at være et robust sprog og har skabt en sådan tillid Nogle operativsystemer er endda blevet oprettet med dette programmeringssprog, og for blot at nævne nogle få, har vi: Redox, Vi har også Kerneler skrevet fra bunden som f.eks Kerla eller kernen, der bruges i satellit, som Kina for nylig opsendte.
Grunden til at nævne dette er, at jeg for nylig stødte på en nyhed, der fangede min opmærksomhed, og det er at Der blev præsenteret et projekt, hvor en Kernel skrevet i Rust udvikles og som er delvist kompatibel med Linux.
Navnet på dette projekt er "Lærer" og som nævnt, er en Unix-lignende kerne skrevet i Rust, der implementerer et undersæt af systemkald fra Linux-kernen tilstrækkelig til at skabe standard arbejdsmiljøer. Som sådan er "Maestro"-projektet ikke noget nyt, da udvikleren nævner, at projektet blev født i 2018, men på det tidspunkt blev det skrevet i C og grundet Rusts forskellige fordele og karakteristika blev projektet omskrevet fra nul.
På projektsiden Årsagerne til ændringen er beskrevet:
I det øjeblik besluttede jeg at skifte til Rust (mit første projekt på dette sprog), som repræsenterede flere fordele:
- Genstart projektet fra begyndelsen ved at bruge erfaringer fra tidligere fejl.
- Vær lidt mere innovativ end bare at skrive en Linux-lignende kerne i C. Brug trods alt bare Linux på det tidspunkt.
- Brug Rust-sprogets sikkerhed til at drage fordel af nogle kerneprogrammeringsproblemer. Brug af Rust-skrivesystemet giver dig mulighed for at overføre noget af ansvaret for hukommelsessikkerhed fra programmøren til compileren.
I kerneudvikling er fejlfinding meget vanskelig af flere årsager:
- Dokumentation er ofte svær at finde, og BIOS-implementeringer kan være buggy (oftere end du tror).
- Ved opstart har kernen fuld adgang til hukommelse og kan skrive hvor den ikke skal (f.eks. sin egen kode).
- Fejlfinding af hukommelseslækager er ikke let. Værktøjer som valgrind kan ikke bruges.
- gdb kan bruges med QEMU og VMWare, men kernen kan opføre sig anderledes, når den køres på en anden emulator eller virtuel maskine. Desuden understøtter disse emulatorer muligvis ikke gdb (f.eks. VirtualBox).
- Nogle funktioner mangler fra gdb-understøttelse i QEMU eller VMWare, og gdb kan endda gå ned nogle gange
I forbindelse med karakteristika ved projektet, skiller det sig ud, at kernen er monolitisk og understøttes i øjeblikket kun på x86-systemer i 32-bit-tilstand. Kernekodebasen dækker omkring 49 tusind linjer, der kan eksekveres både på rigtig hardware og i virtualiserede miljøer, såsom QEMU eller VirtualBox.
I den nuværende udvikling af "Maestro", 31 % er gennemført (135 af 437) af Linux-systemopkald. Dette er nok til at indlæse et konsolmiljø baseret på Bash og Musl standard C-biblioteket. Derudover kan det Maestro-baserede miljø køre nogle hjælpeprogrammer fra GNU coreutils-pakken og grundlæggende pakke fra ethvert Unix-system. I øjeblikket arbejdes der på at implementere en netværksstack og der arbejdes også på at udvikle en
Blandt de Maestros tilgængelige funktioner skiller sig ud det følgende::
- Controllere til PS/2-tastatur og terminal med teksttilstand og delvis understøttelse af ANSI-sekvenser.
- Hukommelseallokeringssystem med understøttelse af virtuel hukommelse.
- Opgaveplanlægning baseret på round-robin-algoritmen med understøttelse af POSIX-signaler.
- Definition af PCI-enheder.
- IDE/PATA controller.
- Ext2 filsystem.
- Understøttelse af /tmp og /proc virtuelle filsystemer.
- Mulighed for at montere FS-, MBR- og GPT-diskpartitioner.
- initramfs support.
- RTC controller til timer og præcis tid.
- Understøttelse af indlæsning af kernemoduler.
- Mulighed for at køre eksekverbare filer i ELF-format.
for interesseret i at lære lidt mere om projektet, kan du kontrollere detaljerne I det følgende link. Hvad angår dem, der er interesseret i projektkoden, bør de vide, at det er det distribueret under MIT-licensen.