I sistemi operativi permettono agli utenti di interagire con i componenti hardware del computer, e sono composti da centinaia di migliaia di righe di codice. Solitamente sono scritti con i seguenti linguaggi di programmazione: C, C++ e Assembly.

Passaggi

  1. 1
    Impara a programmare prima di iniziare. Il linguaggio Assembly è fondamentale, ed è fortemente consigliato conoscere un altro linguaggio di basso livello come C.
  2. 2
    Decidi su che supporto vuoi caricare il tuo sistema operativo. Può essere un floppy, un CD, un DVD, una memoria flash, un disco rigido o un altro PC.
  3. 3
    Decidi cosa dovrà fare il tuo sistema operativo. Avrai bisogno di conoscere il tuo obiettivo sin dall'inizio, che si tratti di un sistema operativo completo di GUI (interfaccia grafica per l'utente) o di un sistema più essenziale.
  4. 4
    Scegli le piattaforme che potranno eseguire il tuo sistema operativo. Se hai dei dubbi, scegli le piattaforme X86 (32bit), perché la maggior parte dei computer usano processori X86.
  5. 5
    Decidi se vuoi creare il tuo sistema da zero, oppure appoggiarti su un kernel già esistente. Linux from Scratch ad esempio è un progetto per coloro che vogliono costruire la propria versione di Linux. Leggi i consigli per trovare il collegamento al progetto.
  6. 6
    Decidi se userai il tuo Bootloader o uno già esistente come Grand Unified Bootloader (GRUB). Anche se scrivere da solo il tuo bootloader ti darà molte informazioni sul BIOS e sull'hardware, potrebbe rallentarti nella programmazione del kernel. Leggi la sezione " Consigli".
  7. 7
    Decidi che linguaggio di programmazione usare. Anche se è possibile scrivere un sistema operativo in BASIC o Pascal, è consigliato usare C o Assembly. Assembly è necessario, perché alcune parti vitali del sistema operativo lo richiedono. C++ invece, contiene delle parole chiave che necessitano di un sistema operativo completo per essere eseguite.
    • Per compilare un sistema operativo da codice C o C++, dovrai usare un compilatore. Dovresti perciò leggere il manuale d'uso del tuo compilatore. Cercalo nella scatola del programma o sul sito del produttore. Avrai bisogno di conoscere molti aspetti intricati del tuo compiler e, per sviluppare C++, dovrai conoscere il funzionamento del tuo compiler e il suo ABI. Dovrai comprendere i diversi formati di eseguibili (ELF, PE, COFF, binario semplice, ecc.) e sapere che il formato di proprietà di Windows, PE (.exe), è protetto da copyright.
  8. 8
    Decidi che API (application programming interface o interfaccia di programmazione di un’applicazione) usare. Un buon API è POSIX, che è ben documentato. Tutti i sistemi Unix supportano almeno parzialmente POSIX, perciò sarà molto facile importare i programmi Unix sul tuo sistema operativo.
  9. 9
    Decidi il tuo design. Esistono kernel monolitici e micro kernel. I kernel monolitici implementano tutti i servizi nel kernel, mentre i micro ne hanno uno piccolo in combinazione con dei daemon (processi in background) dell'utente che implementano i servizi. In genere, i kernel monolitici sono più veloci, ma i microkernel sono più affidabili e gli errori sono isolati meglio.
  10. 10
    Valuta se sviluppare il sistema operativo lavorando in gruppo. In questo modo il processo sarà più veloce e ridurrai gli errori.
  11. 11
    Non cancellare del tutto il tuo disco rigido. Ricorda, formattare il tuo disco, eliminerà tutti i dati ed è un processo irreversibile! Usa GRUB o un altro manager dell'avvio per avviare il tuo computer con il doppio sistema operativo, almeno finché il tuo non è completamente funzionante.
  12. 12
    Parti dal basso. Inizia dalle piccole cose, come mostrare del testo e delle interruzioni prima di occuparti di aspetti come la gestione della memoria e il multitasking.
  13. 13
    Fai un backup dell'ultimo codice sorgente funzionante. Se farai qualche errore terribile o se il computer su cui stavi sviluppando il sistema si guasta, è un ottima idea avere sempre una copia di backup.
  14. 14
    Testa il tuo nuovo sistema operativo con una macchina virtuale. Invece di riavviare continuamente il tuo computer ogni volta che vuoi fare una modifica o trasferire dei file dal tuo computer di sviluppo al tuo computer di prova, puoi usare una macchina virtuale per eseguire il tuo sistema operativo direttamente sul tuo computer. Alcuni esempi di macchine virtuali: VMWare (che offre gratuitamente un server), l'alternativa open-source Bochs, Microsoft Virtual PC (non compatibile con Linux), e xVM VirtualBox. Leggi i "Consigli" per maggiori informazioni.
  15. 15
    Rilascia una "versione di prova". Questo consentirà agli utenti di indicarti i problemi del tuo sistema operativo.
  16. 16
    Ricorda, un sistema operativo dovrebbe essere facile da usare per qualunque utente.
    Pubblicità

Consigli

  • Non iniziare un sistema operativo per imparare a programmare. Se non conosci già C, C++, Pascal, o un altro linguaggio di programmazione alla perfezione, inclusi manipolazione dei pointer, manipolazione dei bit di basso livello, bit shifting, assembly, ecc., non sei pronto per creare un sistema operativo.
  • Se vuoi semplificare le cose, valuta se usare dei modelli di Linux come Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd, o SUSE Studio e SUSE KIWI. Il sistema operativo però sarà di proprietà della compagnia che ti ha offerto il servizio (anche se hai diritto di distribuirlo, modificarlo ed eseguirlo sotto licenza GPL).
  • Dopo che hai finito lo sviluppo, decidi se il tuo sistema sarà open source o di tua proprietà.
  • Usa siti web come OSDev e OSDever per aiutarti nello sviluppo. Nota che per la maggior parte dei casi, la comunità OSDev.org preferirà che ti limiti a usare la loro wiki, e non a fare domande sui forum. Se decidi di iscriverti al forum, esistono dei prerequisiti: Dovrai conoscere a fondo C o C++, e Assembly x86. Dovrai anche comprendere i concetti generali e complessi della programmazione, come le Linked Lists, le Code, ecc. La comunità OSDev, nel suo regolamento, dichiara esplicitamente che non farà da baby sitter ai programmatori inesperti. Se stai cercando di creare un tuo sistema operativo, dovresti essere un vero esperto di programmazione. Dovrai anche leggere il manuale del processore, per conoscere l'architettura del processore che ospiterà il tuo sistema, ad esempio x86 (Intel), ARM, MIPS, PPC, ecc. Puoi trovarli facilmente su Google. Non iscriverti ai forum di OSDev.org per fare domande banali. Riceverai risposte sgarbate e nessuno ti aiuterà.
  • Può essere una buona idea creare una nuova partizione per sviluppare il sistema operativo.
  • Cerca di identificare i problemi e gli errori.
  • Per maggiori informazioni, visita queste fonti.
Pubblicità

Avvertenze

  • Non riuscirai a creare un sistema completo e funzionante in due settimane. Cerca di creare un sistema che si avvii come prima cosa, poi passa agli aspetti più avanzati.
  • Se farai qualcosa di stupido, come scrivere byte casuali su porte I\O casuali, farai crashare il tuo sistema operativo, e potresti (in teoria) distruggere il tuo hardware. Per una dimostrazione, esegui 'cat /dev/port' su Linux come root. Il tuo computer crasherà.
  • Assicurati di implementare delle misure di sicurezza se vuoi usare il tuo sistema operativo.
  • Eseguire un sistema operativo scritto male può corrompere del tutto il tuo disco rigido. Fai attenzione.
  • Non credere che programmare un sistema operativo sia facile. Esistono spesso delle interdipendenze intricate. Ad esempio, per creare un sistema operativo che sia in grado di gestire più processori, il tuo programma di gestione della memoria dovrà riuscire a bloccare le risorse usate da un processore in modo che non possano accedervi due processori contemporaneamente. Per creare questi blocchi avrai bisogno di uno scheduler che gestisca l'attività dei processori. Lo scheduler a sua volta dipende dalla presenza di un programma della gestione della memoria. Questo è un caso di dipendenza. Non esiste una procedura standard per risolvere problemi come questo; ogni programmatore di sistema operativi deve essere abbastanza capace da trovare una soluzione personale a questo tipo di problemi.
Pubblicità

Cose che ti Serviranno

  • Un buon computer.
  • Una CPU per l'architettura che svilupperai.
  • Abbastanza RAM per eseguire una macchina virtuale.
  • Un sistema operativo 'host' per sviluppare le prime fasi del tuo nuovo sistema operativo.
  • Un editor di codice con colori per le diverse sintassi.
  • Un compiler
  • Un lettore di floppy disk (facoltativo)

Informazioni su questo wikiHow

wikiHow è una "wiki"; questo significa che molti dei nostri articoli sono il risultato della collaborazione di più autori. Per creare questo articolo, 75 persone, alcune in forma anonima, hanno collaborato apportando nel tempo delle modifiche per migliorarlo. Questo articolo è stato visualizzato 76 739 volte
Pubblicità