Quello che devi fare è progettare il sistema operativo. Anche se, ad esempio, decidi che dovrebbe essere un sistema simile a UNIX, ci sono ancora molte decisioni da prendere. Quanto vuoi che sia UNIX? Quali parti di UNIX ti piacciono e quali ritieni debbano essere migliorati?
Se non sei impostato come UNIX, alla fine rispondi anche a più domande: i processi devono formare un albero o sono "piatti"? Che tipo di comunicazione tra processi vuoi supportare? Vuoi che sia multiutente o solo multi-tasking (o possibilmente single-tasking)? Vuoi che sia un sistema in tempo reale? Che livello di isolamento vuoi fornire tra le attività? Dove vuoi che cada sulla scala monolitica vs. micro-kernel? Fino a che punto (se esiste) vuoi supportare l'operazione distribuita?
In genere consiglio contro di studiare il kernel Linux per la tua ispirazione. Questo non è niente contro il kernel di Linux stesso, ma un semplice fatto che Linux è destinato principalmente all'uso di produzione, non all'educazione. Ha un sacco di ottimizzazione, hack di compatibilità con le versioni precedenti, ecc., Che sono estremamente utili per la produzione, ma con maggiori probabilità di distrarre rispetto all'educazione.
Se riesci a trovarlo, una copia del libro di Lion ( Commentario dei Lions su UNIX 6th) L'edizione , con codice sorgente , di John Lions) è un punto di partenza molto più semplice. La sesta edizione UNIX era ancora piccola e abbastanza semplice da leggere e capire abbastanza velocemente, senza essere un sistema giocattolo troppo semplificato.
Se hai intenzione di indirizzare l'x86 (almeno in primo luogo) potresti anche voler dare un'occhiata a MMURTL V 1.0 di Richard Burgess. Questo presenta un sistema per x86 che usa l'hardware x86 molto di più come i progettisti della CPU inizialmente intendevano - qualcosa che i sistemi più reali si rifiutano di privilegiare la portabilità ad altre CPU. Come puoi immaginare, questo tende ad essere orientato molto più pesantemente verso la fine dell'hardware delle cose. Le copie stampate sembrano costose e difficili da trovare, ma puoi scaricare gratuitamente il testo e il codice .
Fortunatamente, ci sono anche molte altre possibilità - Progettazione e implementazione del sistema operativo , ad esempio da Andrew Tanenbaum e Albert Woodhull.