Captură de ecran Maestro
Rugina a câștigat destulă popularitate în așa măsură încât a devenit unul dintre cele alese pentru a fi integrate ca limbă secundară în Linux, precum și în alte sisteme de operare, așa este cazul Android, care are deja o parte din cod în Rust, Windows care și a dat, printre altele, aprobarea.
Rugină sa dovedit a fi un limbaj robust și a generat o asemenea încredere Unele sisteme de operare au fost create chiar cu acest limbaj de programare și doar pentru a menționa câteva avem: redox, Avem și Kernel-uri scrise de la zero, cum ar fi Kerla sau Kernel-ul folosit în satelit pe care China l-a lansat recent.
Motivul pentru care menționez acest lucru este că recent am dat peste o știre care mi-a atras atenția și anume că A fost prezentat un proiect în care este dezvoltat un Kernel scris în Rust și care este parțial compatibil cu Linux.
Numele acestui proiect este "Profesor" și după cum am menționat, este un nucleu asemănător Unix scris în Rust care implementează un subset de apeluri de sistem din nucleul Linux suficiente pentru a crea medii de lucru standard. Ca atare, proiectul „Maestro” nu este ceva nou, din moment ce dezvoltatorul menționează că proiectul s-a născut în 2018, dar la acel moment era scris în C și datorită diferitelor beneficii și caracteristici ale Rust, proiectul a fost rescris din zero.
Pe pagina proiectului Motivele schimbării sunt descrise:
În acel moment am decis să trec la Rust (primul meu proiect în această limbă), care a reprezentat câteva avantaje:
- Reporniți proiectul de la început, folosind lecțiile învățate din greșelile anterioare.
- Fii puțin mai inovator decât să scrii un nucleu asemănător Linux în C. La urma urmei, folosește doar Linux la momentul respectiv.
- Utilizați securitatea limbajului Rust pentru a profita de unele dificultăți de programare a nucleului. Utilizarea sistemului de scriere Rust vă permite să transferați o parte din responsabilitatea pentru siguranța memoriei de la programator la compilator.
În dezvoltarea nucleului, depanarea este foarte dificilă din mai multe motive:
- Documentația este adesea dificil de găsit, iar implementările BIOS-ului pot avea erori (mai des decât credeți).
- La pornire, nucleul are acces deplin la memorie și poate scrie acolo unde nu ar trebui (propriul său cod, de exemplu).
- Depanarea scurgerilor de memorie nu este ușoară. Unelte precum valgrind nu pot fi folosite.
- gdb poate fi folosit cu QEMU și VMWare, dar nucleul se poate comporta diferit atunci când este rulat pe un emulator sau o mașină virtuală diferită. De asemenea, acești emulatori pot să nu accepte gdb (de exemplu, VirtualBox).
- Unele funcții lipsesc din suportul gdb în QEMU sau VMWare și gdb poate chiar să se blocheze uneori
În raport cu caracteristicile proiectului, se remarcă faptul că Kernel-ul este monolitic și în prezent este acceptat numai pe sistemele x86 în modul pe 32 de biți. Baza de cod de kernel acoperă aproximativ 49 de mii de linii, fiind executabilă atât pe hardware real, cât și în medii virtualizate, precum QEMU sau VirtualBox.
În dezvoltarea actuală a „Maestro”, 31% au fost implementate (135 din 437) a apelurilor de sistem Linux. Aceasta este suficient pentru a încărca un mediu de consolă bazat pe Bash și biblioteca standard C Musl. În plus, mediul bazat pe Maestro poate rula unele utilitare din suita GNU coreutils și pachete de bază din orice sistem Unix. În prezent, se lucrează la implementarea unei stive de rețea și se lucrează și la dezvoltarea unui
Printre Caracteristicile disponibile ale Maestro ies în evidență următoarele::
- Controlere pentru tastatură și terminal PS/2 cu mod text și suport parțial pentru secvențe ANSI.
- Sistem de alocare a memoriei cu suport pentru memorie virtuală.
- Programator de sarcini bazat pe algoritmul round-robin cu suport pentru semnale POSIX.
- Definiția PCI devices.
- Controler IDE/PATA.
- Sistem de fișiere Ext2.
- Suport pentru sistemele de fișiere virtuale /tmp și /proc.
- Abilitatea de a monta partiții de disc FS, MBR și GPT.
- suport initramfs.
- Controler RTC pentru cronometru și timp precis.
- Suport pentru încărcarea modulelor kernelului.
- Abilitatea de a rula fișiere executabile în format ELF.
Pentru interesat să afle puțin mai multe despre proiect, puteți verifica detaliile În următorul link. Cât despre cei interesați de codul proiectului, ar trebui să știe că este distribuit sub licența MIT.