Una grande sfida

Con il passare del tempo mi convinco sempre di più che se vuoi sopravvivere in questo mondo devi fare cose che nessuno osa fare (o comunque fare cose che in pochi fanno) e seguire percorsi che nessuno ha ancora seguito. L' omologazione è una brutta bestia! Ti fa diventare uguale a tutti gli altri soffocando i tuoi istinti e la tua creatività.
Ed è proprio per questo che ho deciso di buttarmi in un progetto difficile che non tutti hanno il coraggio di fare: scrivere un sistema operativo da zero. E' un' impresa ardua (ma non impossibile) che richiede parecchie conoscenze (molte delle quali non ho ancora) ma è per questo che è una sfida affascinante. Inoltre un progetto di questo tipo mi permetterebbe di accrescere notevolmente la mia conoscenza sull' architettura di un computer e su come un computer funziona realmente al suo interno. Sapete quante cose bisogna sapere per poter essere in grado di scrivere un sistema oeprativo? Dovrò leggere libri che trattano la teoria dei sistemi operativi (avevo pensato ai libri del prof. Tanenbaum), dovrò rispolverare ed imparare in maniera approfondita il linguaggio assembly, dovrò certamente migliorare le mie conoscenze del C (su cui credo di basare gran parte del progetto), dovrò leggere i manuali operativi relativi ai processori Intel a 32 bit perchè è su questi che è finalizzato il sistema operativo e sono sicuro che dovrò chiedere aiuto molte volte nei forum dove si ritrovano gli appassionati di "operating system development".

Scrivere un sistema operativo è secondo molti la sfida di programmazione più difficile per un programmatore. Ci vorranno mesi (forse anni) per vedere qualche risultato concreto, però alla fine avrò raggiunto una conoscenza inestimabile.
Attualmente non ho ancora delle idee precise su come deve essere progettato il sistema operativo anche se avrei qualche idea generale sulla sua struttura.

In questi giorni ho iniziato a leggere dei manuali che trattano il linguaggio assembly per i processori Intel a 32 bit. E' il primo passo e la strada è ancora lunga...

A questo punto fatemi un in bocca al lupo e se avete dei consigli fatemi sapere.

42 commenti:

    Hai intenzione di fare tutto da solo?
    Comunque Buona fortuna ;)

    Si! Ovviamente sarà un sistema operativo molto "basilare".
    All' inzio dovrà solo gestire correttamente la macchina, nient' altro.

    Poi col tempo si potranno aggiungere nuove funzionalità, interfaccia grafica, protocolli di rete, nuovi driver, ecc...

    On 21 gennaio 2008 alle ore 19:51 Anonimo ha detto...

    È un'impresa titanica ma fattibile. Di sicuro ne devi avere di tempo "da perdere" :D per la realizzazione. Cmq quoto i libri di Tanembaum, sono davvero ben fatti. Io mi ero studiato "Architettura dei Computer" (edz. Utet) per l'esame di informatica 2 al 1° anno (non tutto il libro, ovviamente). Letto quello ti si apre un mondo da esplorare :)

    Ah... buon lavoro

    mi candido per provare il beta. ciao vecchio!

    On 21 gennaio 2008 alle ore 20:53 Anonimo ha detto...

    Ti auguro tanta fortuna! La voglio anche io la beta!

    Ciao!

    Accidenti! Buona fortuna!
    Anni fa mi ero messo in testa di fare qualcosa del genere per gli Apple II con il loro 6502. Ma poi ho deciso che il livello era troppo vicino alla macchina... :-)
    In bocca al lupo!

    Più grandi sono le sfide, più grandi saranno i risultati...
    Devo averla letta da qualche parte...!

    Auguri, comunque vada sarà un successo.

    On 22 gennaio 2008 alle ore 10:24 Anonimo ha detto...

    Sono rimasto di stucco quando ho letto l'incipit del tuo post, ma poi mi sono reso conto che tu puoi farcela. In bocca al lupo.

    P.S.: Quoto Paso, di tempo ne devi avere!

    In bocca al lupo!!!
    Se vuoi... ti faccio il logo! ;)

    Allora non avrai più tempo per bloggare mi sa... :-D

    On 22 gennaio 2008 alle ore 15:17 Anonimo ha detto...

    soltanto una cosa:
    buona fortuna!

    da ignorante totale non posso che augurarti in bocca al lupastro! penso che sia una cosa fantastica :) il consiglio è sgrat.. non uccidere tutti i tuoi neuroni :P

    Un sistema operativo? per PC?
    Credo si debba fare in assembly e poi solo per un pc o una famiglia di questi.
    Le cose che vedo aver successo di questi tempi e sulle quali punterei sono sono le singole applicazioni customizzate da assemblare , tipo ce embedded. Usi (e paghi) solo la minima parte che ti serve. Pero' per arrivare al grande pubblico devi essere piu' generalista...
    In bocca al lupo e speriamo di risentirti.
    ciao

    Premetto che non ci capisco nulla, ma mi unisco anch'io per augurarti un buon lavoro, e... divertiti!!!
    Ciao

    On 23 gennaio 2008 alle ore 19:30 Anonimo ha detto...

    Ma tu sei tutto matto =D
    Il minimo è in bocca al lupo!!!!

    Io trovo difficolta ad utilizzare un sistema operativo e c'è chi invece ne vuole creare =D maddo' un'impresa impossibile!!!! =)

    Cmq secondo me devi stare attento ad i tempi, mi spiego..puo' essere che man man che passano i giorni, i mesi la tua voglia diminuisca sempre piu' nell'impresa...quindi stai attento e non farti passare mai la voglia di questo tuo progetto ;) =D

    On 24 gennaio 2008 alle ore 12:10 Anonimo ha detto...

    in bocca al lupo, un mio amico l'aveva presentato alla maturità, ma si era fatto un bel mazzo.

    On 24 gennaio 2008 alle ore 20:47 Anonimo ha detto...

    Urca! Un bell'impegno degno di un "in bocca al lupo" grande.
    Un passo alla volta e tanta pazienza il progetto prenderà forma. Dalla tua parte :o)
    Un saluto

    Chiara

    Se serve grafica, documentazione, beta testing... io sono disponibile!

    E buona fortuna!

    grazie a tutti per il supporto!
    sto studiando parecchio, ci vuole ancora parecchio tempo prima di "metter giù qualcosa" :)

    il beta testing fallo fare anche a noi incapaci, non solo ai tuoi colleghi smanettoni superesperti.
    se lo riuscirà a utilizzare uno come me, allora potrà essere diffuso anche tra noi mortali...
    tienici informati.
    ciao vecchio

    Concordo con il mio socio
    Pinotto (em),
    Ciao da Gianni :-)

    On 4 febbraio 2008 alle ore 23:36 Anonimo ha detto...

    tu ti sei messo in mente di fare un SO, io mi sono messo in mente di imparare ad usare e smanettare su Opera che è un'altra alternativa a firefox se nn lo sapevi. oggi l'ho installato e ho iniziato a impostarmi le icone a modo mio più comodo, in futuro capirò i comandi vocali, le scorciatoie, i comandi col mouse, ecc...cmq te lo consiglio: è veloce e si dice anche sicuro (lo usa molta poca gente!)

    ciao!

    On 18 febbraio 2008 alle ore 16:15 Anonimo ha detto...

    Progetto non solo ambizioso, ma ambiziosissimo :) Se devo essere sincero sincero (è il secondo post che leggo, t'ho preso x caso su google) da solo la vedo moooolto difficile...cmq, ricordo che su Onda Quadra (ezine di qualche anno fa...chissà se qualcuno se la ricorda) un certo Andreageddon (se non ricordo male io ;)) aveva iniziato una serie di articoli proprio con le basi per un OS. Ovvio, non voglio farti sostituire un Tanenbaum con questo, ma penso possa tornarti utile x una panoramica...

    Ciao ;)

    Mi piace fare la voce fuori dal coro :) Non avertene, ma hai considerato che:

    1. realizzare soltanto il kernel sarà un'impresa: se poi vuoi ricorrere all'approccio a microkernel avrai da gestire i temuti errori di sincronizzazione

    2. dovrai scrivere i driver. Non mi pare che ci siano molti costruttori che forniscono le specifiche dei loro dispositivi. Tra questi ci quelli per i dischi SATA, quelli per la scheda di rete e quelli per i controller USB.

    3. scrivere uno scheduler che gestisca i processi è già un bel casino; fare uno che si «mangi» anche la gestione dei thread sarà da impazzire.

    4. dovrai riscrivere qualche pezzo della libreria C, specialmente quella delegata alla gestione dei file.

    5. dovrai implementare un filesystem. Magari all'inizio potrai allocarlo in RAM per le simulazioni (visto che i driver del disco rigido non so se li avrai scritti).

    6. Come mai l'esigenza di un altro kernel (perché penso si tratti di questo, non di un intero SO!). Abbiamo l'infrastruttura GNU, i kernel Linux e *BSD. Abbiamo Minix. Se aiutassi il progetto HURD forse sarebbe più costruttivo e avresti più soddisfazioni.

    Fammi sapere cos'hai deciso :) e salutami il tuo vecchio compare Ghetto!

    @ tutti: è da molto che non posto più sul blog perchè ovviamente sto dedicando molto tempo a questo progetto. Vi ringrazio per il supporto che mi avete dato con i vostri commenti... e chissà, forse potrei pubblicare qualche altro post a breve!

    @ jakaiser: in realtà tutto nasce da un' idea che ho cercato per lungo tempo e che (forse) mi è venuta. Partendo da questa idea, ho deciso di non appoggiarmi a sistemi preesistenti ma di creare tutto da capo. Il motivo di questa scelta è che il sistema operativo che ho in mente di sviluppare, non è come tutti gli altri, ha un obiettivo specifico che lo differenzia da tutti i sistemi operativi in circolazione e concettualmente è molto "diverso" da un Windows o un Linux. Per questo ha bisogno di un ambiente completamente nuovo.

    Per ora non posso dire altro...

    On 21 marzo 2008 alle ore 12:32 Anonimo ha detto...

    Spero che tu nel frattempo non sia stramazzato.

    Hai intenzione di creare un nuovo linux?
    E come sta andando?

    L.H.

    On 5 aprile 2008 alle ore 12:24 Anonimo ha detto...

    Baserai il tuo sistema su microkernel o kernel monolitico?

    @ Blaster: la struttura è a microkernel.

    On 9 maggio 2008 alle ore 14:23 Anonimo ha detto...

    Allora non ho che da dirti una cosa: sucida xD

    Cavolo, credevo di arrivare in fondo e trovare una data vecchissima...invece sei ancora convinto! Che dire? Vai avanti così, ma, non è per gufare, ma secondo me da solo è impossibile.
    Anche Torwald Fece molto da solo, ma poi si fece aiutare!

    On 22 maggio 2008 alle ore 15:42 Anonimo ha detto...

    Quoto pienamente Alex, e stai attento, perchè costruire un kernel che faccia anche solo init, è un grande passo, e porta via tantissimo tempo.
    Figurati poi una roba a microkernel.

    On 28 maggio 2008 alle ore 22:33 Anonimo ha detto...

    Come procede il lavoro?
    c'è già una prima alpha disponibile?
    Tienici almeno aggiornato sull'avanzamento dei lavori :)

    Ciao

    On 4 luglio 2008 alle ore 10:49 Anonimo ha detto...

    mo lo sai cosa stai dicendo.
    crare un sistema operativo.
    per creare linux ci lavorano migliaia di persone ogni giorno.
    Ed e stato creato da zero ma con migliaia di persone che erano preparate credo piu di te.


    cmq i bocca al lupo sper che tu ci riesca anche se credo che sia una cosa quasi impossibile.
    byby

    On 16 luglio 2008 alle ore 23:20 Anonimo ha detto...

    grande idea! complimenti!
    ti stimo per questo.
    ti suggerisco: usa non suoni banali come usano windows, linux e mac, ma usa canzoni rock o elettronica... per esempio che effetto farebbe se all'apertura del sistema operativo ci fosse rigth now dei korn e quando si chiude come to daddy di aphex twin? qualcosa di divino!
    o semplicemnte quando si carica male qualcosa o c'è un errore al posto del solito clic ci sia un "fottiti" accattivante? troppo divino!
    va beh bella pe te!
    enjoy the void!

    Potresti essere il pioniere di una nuova evoluzione. La multimedialità fà nascere e sviluppa le innovazioni. Buon pomeriggio da Tiziano

    On 27 ottobre 2008 alle ore 19:01 Anonimo ha detto...

    hei come va? sono un pò di mesi che non ti fai vivo! a che punto sei con il tuo progetto? dai informaci un pò!
    io sono alle prese con vista a 64bit e trovare i programmi compatibili XD

    ciao!

    sei ancora???
    beh ho visto che il blog ormai è morto e mi sà anche il progetto, ma non te preogube, se è troppo difficile...

    beh, che dire... anche se personalmente dubito che riuscirai a portare a fondo il tuo progetto, ti ammiro! se non altro, arriverai un giorno a dire: c'ho provato, ma non solo, sono sicuro che ne' uscirai vincente... sembra una contraddizione vero? ho appena detto che penso che non riuscirai e poi ho detto che ne' uscirai vincente... in realtà è perchè penso che acquisirai tanta di quell'esperienza/conoscenza, che COMUNQUE sarai un vincente.
    per ultimo; in bocca al lupo che sta dentro il culo della balena :P

    We ciao! Sono Krusa, non so se ti ricordi di me (ero nel vecchio forum di fumetti "gente del ghetto" che amministravi), sono passato di qui e ti volevo fare un saluto!
    Ciao!

    P.s. mamma mia! ti sei messo in un bel progetto!!

    Krusa.

    On 13 febbraio 2010 alle ore 21:27 Anonimo ha detto...

    ciao, il progetto e' ancora attivo?
    secondo me c'e la farai pero' se puoi tienici informati perche' se hai abbandonato fai molto male... io ti vorrei aiutare ma conosco solo batch e autoit...

    On 27 febbraio 2010 alle ore 09:15 Anonimo ha detto...

    Mi sono dimenticato di dirti:
    IN BOCCA AL LUPO!

    Gianluigi

    On 12 ottobre 2014 alle ore 16:47 Antonio ha detto...

    Sicuramente è difficile ma è possibile, ti posso consigliare il libro di tanenmbaum che è molto pratico, evita quello di schilberchatz, o come si chiama.
    Comunque adesso siamo nel 2014, ben 6 anni dopo che hai scritto questo post, hai implementato il tuo sistema operativo?