Schermata del Maestro
La ruggine ha guadagnato abbastanza popolarità a tal punto che è diventato uno di quelli prescelti per essere integrato come linguaggio secondario in Linux, così come in altri sistemi operativi, come è il caso di Android, che ha già parte del codice in Rust, Windows che ha anche ha dato l'approvazione, tra gli altri.
Ruggine ha dimostrato di essere un linguaggio robusto e ha generato tanta fiducia Alcuni sistemi operativi sono stati addirittura realizzati con questo linguaggio di programmazione e solo per citarne alcuni abbiamo: Redox, Abbiamo anche kernel scritti da zero come Kerla o il kernel utilizzato nel file satellite lanciato recentemente dalla Cina.
Il motivo per cui lo dico è che recentemente mi sono imbattuto in una notizia che ha attirato la mia attenzione e basta È stato presentato un progetto in cui è sviluppato un Kernel scritto in Rust e che è parzialmente compatibile con Linux.
Il nome di questo progetto è "Maestro" e come accennato, è un kernel simile a Unix scritto in Rust che implementa un sottoinsieme di chiamate di sistema dal kernel Linux sufficienti per creare ambienti di lavoro standard. In quanto tale, il progetto "Maestro" non è qualcosa di nuovo, poiché lo sviluppatore menziona che il progetto è nato nel 2018, ma a quel tempo era scritto in C e, a causa dei diversi vantaggi e caratteristiche di Rust, il progetto è stato riscritto da zero.
Nella pagina del progetto Si descrivono le ragioni del cambiamento:
In quel momento ho deciso di passare a Rust (il mio primo progetto in questa lingua), che rappresentava diversi vantaggi:
- Riavviare il progetto dall'inizio, utilizzando le lezioni apprese dagli errori precedenti.
- Sii un po' più innovativo rispetto a scrivere semplicemente un kernel simile a Linux in C. Dopotutto, usa semplicemente Linux in quel momento.
- Usa la sicurezza del linguaggio Rust per sfruttare alcune difficoltà di programmazione del kernel. L'uso del sistema di scrittura Rust consente di trasferire parte della responsabilità per la sicurezza della memoria dal programmatore al compilatore.
Nello sviluppo del kernel, il debugging è molto difficile per diversi motivi:
- La documentazione è spesso difficile da trovare e le implementazioni del BIOS possono essere difettose (più spesso di quanto si pensi).
- All'avvio, il kernel ha pieno accesso alla memoria e può scrivere dove non dovrebbe (il proprio codice, ad esempio).
- Risolvere le perdite di memoria non è facile. Non è possibile utilizzare strumenti come valgrind.
- gdb può essere utilizzato con QEMU e VMWare, ma il kernel potrebbe comportarsi diversamente se eseguito su un emulatore o macchina virtuale diverso. Inoltre, questi emulatori potrebbero non supportare gdb (ad esempio VirtualBox).
- Alcune funzionalità mancano dal supporto gdb in QEMU o VMWare e gdb potrebbe anche bloccarsi a volte
In relazione con caratteristiche del progetto, risalta che il Kernel è monolitico ed è attualmente supportato solo su sistemi x86 in modalità a 32 bit. La base di codice del kernel copre circa 49mila righe, essendo eseguibili sia su hardware reale che in ambienti virtualizzati, come QEMU o VirtualBox.
Nell'attuale sviluppo di «Maestro», Il 31% è stato implementato (135 di 437) delle chiamate di sistema Linux. Questo è sufficiente per caricare un ambiente console basato su Bash e sulla libreria C standard Musl. Inoltre, l'ambiente basato su Maestro può eseguire alcune utilità dalla suite GNU coreutils e il pacchetto di base da qualsiasi sistema Unix. Attualmente si sta lavorando sull'implementazione di uno stack di rete e si sta lavorando anche sullo sviluppo di un
Tra i Le funzionalità disponibili di Maestro risaltano il seguente::
- Controller per tastiera e terminale PS/2 con modalità testo e supporto parziale per sequenze ANSI.
- Sistema di allocazione della memoria con supporto per la memoria virtuale.
- Pianificatore di attività basato sull'algoritmo round-robin con supporto per segnali POSIX.
- Definizione di dispositivi PCI.
- Controller IDE/PATA.
- File system Ext2.
- Supporto per file system virtuali /tmp e /proc.
- Possibilità di montare partizioni del disco FS, MBR e GPT.
- supporto initramfs.
- Controller RTC per timer e ora precisa.
- Supporto per il caricamento dei moduli del kernel.
- Possibilità di eseguire file eseguibili in formato ELF.
Per interessato a saperne di più sul progetto, puoi controllare i dettagli nel seguente link Per quanto riguarda coloro che sono interessati al codice del progetto, dovrebbero sapere che lo è distribuito con licenza MIT.