L’OsDev in Italia – Ovvero uno sguardo agli OS amatoriali nel belpaese Parte 3

con qualche mese di ritardo, eccoci al terzo ed ultimo capitolo del nostro piccolo (e sicuramente incompleto) viaggio sul panorama dell’osdev italiano.

Che come avete potuto constatare dalle puntate precedenti tutto é stato fuorché improduttivo. L’ultima volta ci siamo fermati con FluxOS, nato come erede di MatrixOS di WindowUninstall.

Facciamo appunto un piccolo salto indietro nel tempo, per tornare ai periodi di miusos, italios, matrixos, etc, in quel periodo un altro os nasceva (e qui ci sta un pó di autopubblicitá) seguendo la guida OsFromScratch di Silvio Abruzzo, ed era il sistema operativo DreamOS (ovvero il mio sistema operativo). Questo OS nacque dal mio desiderio covato negli anni di voler scrivere il mio Sistema Operativo (non mento se dico che uno dei motivi che mi spinse ad imparare a programmare, oltre al fatto che mi affascinava, era proprio il voler imparare a scrivere il mio OS, e vedere il computer funzionare eseguendo interamente codice scritto da me).

DreamOS oramai in sviluppo dal 2001 ha avuto periodi altalenanti fra il: “non se lo fila nessuno” ad “avere una piccola comunitá di gente che lo seguiva”. Nei primi anni si era creato un piccolo gruppo di 4 o 5 sviluppatori che riusciva a portarne avanti lo sviluppo, il canale su irc viaggiava su una media di 10-20 persone giornaliere).

E l’os, grazie anche ai preziosi consigli di Silvio appunto, cresceva velocemente, e nel giro di un paio d’anni si era implementato:

  • Bootloader (scritto da 0)
  • Gestione IRQ
  • Driver per DMA
  • CLI minimale
  • Prime routine per gestire il lettore floppy (identificazione, accensione e spegnimento del lettore)
  • Gestione base Task
  • Gestione memoria fisica

Purtroppo piú lo sviluppo andava avanti e piú veniva a galla il grosso problema del sistema, ovvero l’essere stato scritto senza avere un piano ben preciso, seguendo guide, e senza avere una idea di quel che si voleva/doveva implementare per andare avanti, questo durante l’implementazione del gestore della memoria paginata cominció a venire a galla, mostrando anche le limitazioni di come era stato strutturato il codice, alcune lacune etc. Tutte queste difficoltá mi portarono alla decisione di ricominciare a scrivere l’os da 0, avendo questa volta un’idea  ben precisa di cosa andava fatto, cosa serviva, e cosa volevo. E fu cosí che nel 2007 nasceva il nuovo dreamos. Lo sviluppo per i primi mesi andó avanti abbastanza spedito, ma come molte volte accade le cose nel tempo cominciarono a peggiorare, l’abbandono progressivo di tutti coloro che mi avevano aiutato nel progetto (compreso alcuni sviluppatori storici), la diminuzione continua del tempo libero, portarono lo sviluppo dell’os a rallentare sempre di piú. Ma non a fermarsi, infatti vennero sviluppati comunque:

  • Gestione memoria Fisica
  • Gestione memoria logica con il supporto per uno spazio di indirizzamento dedicato per ogni processo (quando verranno implementati)
  • Gestione VFS (Virtual File System)
  • Passaggio definitivo a GRUB come boootloader
  • Driver Mouse.

Il 2012 é stato un anno travagliato per DreamOS, infatti per quasi 8 mesi non sono stati fatti aggiornamenti degni di nota, e i commit sul repository erano limitati a uno o due ogni paio di mesi, questo a causa di un bug che nella gestione dei task che ha bloccato lo sviluppo per molto tempo, e che non si riusciva ad individuare. In questi giorni la causa del bug é stata individuata, e si sta lavorando per cercare di risolverla. Nel frattempo eccone una screenshot:

Se siete interessati i sorgenti li trovate su: https://github.com/inuyasha82/DreamOs , mentre il sito (anche se non molto aggiornato) lo trovate su: http://www.dreamos.org.

Bene veniamo ora ai giorni nostri ed esploriamo quali sono i progetti nati e morti negli ultimi anni.

Davide Gessa, nel 2009, dava i natali al suo progetto di Sistema operativo, dal nome iniziale di SpiderPig Os (http://code.google.com/p/spiderpigos/). Come per molti altri osdever italiani, anche in questo causo l’autore si é avvicinato all’osdev grazie al sistema operativo ItaliOS e osfromscratch (che dire il buon Silvio Abruzzo é in qualche modo il padre putativo di molti OS italiani!!!!).

Inizialmente l’idea di Davide (in arte dak) era di creare un fork di italios stesso per portarlo avanti, ma non soddisfatto dal codice sorgente decise di creare un suo progetto da zero, sfruttando le molte risorse disponibili sulla rete.

SpiderPig Os é  un sistema operativo basato su un kernel ibrido,  scritto in C e x86 assembly.  Qui possiamo veder qualche screenshot:

SpiderPig Os gui

O in versione command line:

SpiderPig OS cli

Uno degli obiettivi principali di dak oltre ovviamente all’apprendimento, era la portabilitá dell’os, quindi quello che cercó di fare era uno layer di astrazione della cpu, il piú generico possibilie, questo lo portó a riscrivere il kernel in C++, generando il successore abstractOs (http://code.google.com/p/abstractos/), che conteneva anche un port per il processore z80. Qui possiamo vedere una screenshot di abstractOS in azione:

In pratica il codice di AbstractOS era una “classizazione” di quello di spiderpig. Un post che parlava di spiderpigOs nel blog dell’autore lo trovate qua: http://davidegessa.wordpress.com/2010/02/11/spiderpig-os/

Un altro os interessante, sviluppato sempre in italia é TylyOS (giá ClearOS), sviluppato da due ragazzi italiani Luca “morgoth90” Salmine e Leonardo “minibill” Taglialegne. Questo progetto é nato intorno al 2008, e portato avanti fino intorno al 2010.

Fra le caratteristiche implementate ci sono:

  • Basic scheduling
  • Pipe fra processi
  • Caricamento da file ELF
  • Basi cli
I sorgenti del progetto li trovate qua: https://github.com/miniBill/tylyos/ e come al solito vi delizio con una screenshot dell’os: 
TylyOS

Un’altro piccolo progetto,ancora in fase di sviluppo, si chiama MichiamophilOS, di Filippo Bedendo Bordon (michiamophil). É nato poco più di un’anno fá, partendo da zero (sempre ispirato da italios 🙂:)
Le caratteristiche finora implementate sono:

  • Gestore della memoria paginata
  • Scheduler Round Robin
  • Rudimenti della modalità vesa
Ecco alcune screenshot: 
MichiamoPhilOS cli

e con la grafica vesa abilitata:

MichiamoPhilOS  Vesa Mode

I sorgenti sono stati recentemente messi su github, e li trovate qua: https://github.com/michiamophil/michiamophilos

Quelli visti in questa serie di articoli sono solo alcuni degli os nati in italia, purtroppo non li posso citare tutti perche sono molti, di alcuni non riesco piú a reperirne del materiale, o semplicemente l’autore non ha mai pubblicato i sorgenti (almeno per quanto ne ricordo io), e soprattutto per ragioni di spazio. Altri nomi di OS che mi vengono in mente che sono stati sviluppati nel passato sono

  • MiusOS  – Di Mius. L’autore era andato parecchio avanti nello sviluppo dell’os, Purtroppo che io sappia non ha mai pubblicato i sorgenti.
  • Smile – Creato da un Utente del forum di questo sito, qualche informazione la trovate qua: http://smile.pikkolamakkia.com/
  • MarkIx – http://iglu.cc.uniud.it/?page_id=207 il cui link fu postato nel nostro forum e del quale sono riuscito a reperire questo articolo.

Che dire, come vedete in italia molta gente si é avvicinata all’osdev e ha portato avanti il suo progetto chi per breve tempo, chi per anni, chi ha cambiato completamente nome. L’universo osdev italiano che ho delineato io (quello che sto per scrivere é semplicemente una mia opinione) é di un universo popolato, ma a differenza di altri settori molto discontinuo, le persone si avvicinano all’osdev iniziano i loro progetti, li portano avanti e dopo qualche tempo si stufano e lo abbandonano la, a prendere la polvere Infatti quello che ho notato stilando questa serie di articoli é proprió un alternarsi di periodi di intensa attivitá per l’osdev in italia, contro periodi quasi di calma piatta. Per esempio quando ho iniziato io a sviluppare sistemi operativi intorno al 2003 si stava nel periodo di massimo fermento della comunitá italiana, nuovi progetti nascevano continuamente, nel canale di #italios si stava mediamente in 15-20 persone, la metá delle quali aveva il suo progetto o contribuiva ad almeno un progetto italiano, poi intorno al 2005 2006 questo interesse ha iniziato a scemare, i canali si sono svuotati (complice anche il declino di irc), i progetti a non venir portati piú avanti, e pochi os nuovi nascevano. Poi gli ultimi anni invece hanno conosciuto un piccolo ritorno di fiamma per questa materia dando nuovamente luce a diversi progetti.  Probabilmente i motivi di questo problema sono imputabili a diversi fattori quali:

  • Spesso la maggior parte della gente inizia con delle idee di progetto, che poi durante lo sviluppo si rendono conto che sono irrealizzabili, o raggiungibili solo dopo secoli d lavoro 🙂
  • La consapevolezza che un progetto di OS non attira utenti e che probabilmente nessuno mai lo utilizzerá (io quando ho scoperto che un tizio aveva forkato il mio OS, cambiatogli nome e spacciato per suo ero incazzato da una parte, ma soddisfatto dall’altra! Qualcuno aveva ritenuto degno il mio OS di essere copiato!! 🙂 E poi quando recentemente un collega mi fa: “Ehi tu lo conosci DreamOS?” addirittura mi sono quasi commosso!!!)
  • La consapevolezza che molto proabilmente quel progetto non arriverá mai ad essere usabile e potrá funzionare su un numero di macchine lmitatissimo (ci sono decine di migliaia di driver da scrivere… per esempio)
  • La lentezza con la quale si ottengono risultati tangibili (uno inizia con la frase: mi piacerebbe fare un os semplice con uno algoritmo di scheduling scemo e una semplicissima gui, pensando che gli vorranno poche settimane, mentre molto probabilmente ci vorranno mesi e forse anni)
  • La difficoltá dello sviluppo (si fare OS é difficile!!! e lungo)

Certo dal mio punto di vista l’osdev ha anche molti lati positivi! Ve ne cito alcuni:

  • Si conosce molto meglio l’architettura sulla quale si sviluppa
  • Si impara a programmare in Assembly
  • Dovendo lavorare ad un livello di astrazione estremamente basso, si impara a padroneggiare al meglio il linguaggio di programmazione scelto.
  • La programmazione a basso livello ci aiuta a uscire dai paradigmi classici del java, dei framework dove tutto é gia pronto e ci costringe spesso a “reinventare la ruota” e a pensare diversamente ai problemi, a scomporli nei loro passi piú elementari. Ad entrare ancora piú nel dettaglio. Per esempio, tutti sappiamo stampare del testo a schermo con un linguaggio di alto livello utilizzando cose tipo printf, System.out.print, e affini, ma in un os tutto questo non c’é quindi dobbiamo entrare nel dettaglio di queste funzioni, ricostruirle, capire come sono fatte. Rendendoci piú versatili anche come programmatori.
  • Dopo aver realizzato un OS tutto sembrerá piú facile 😀 (va be questa forse é un pó esagerata, ma in parte é cosí :D)
Concludiamo con alcune piccole constatazioni sugli os appena presentati:

Il pioniere dell’osdev in italia é stato Silvio Abruzzo con il suo OS

L’os che forse é stato riscritto piú volte é spiderpigOS

Quello piú avanzato probabilmente é fluxos

E il piú longevo credo che sia il mio DreamOS, ancora in sviluppo dopo credo 7 o 8 anni 🙂

E l’os piú giovane e ancora in sviluppo sembrerebbe michiamophilos 🙂

Che dire spero che qualcuno troverá questi articoli interessanti, li criticherá, mi insulterá, ma almeno vorra dire che li avró letti. Spero fra qualche anno di fare un 4 capitolo raccontando quanto successo nel frattempo (magari presentando nuovi progetti)

Per le puntate precedenti:

http://www.osdev.it/?p=103 La prima puntata

http://www.osdev.it/?p=145 La seconda puntata.

Se avete altri os da propormi (anche i vostri) mandatemi 4 righe e qualche screenshot, e se accumulo altro materiale potrei fare una quarta puntaa.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *