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 pensi che necessitino di miglioramenti?
Se non hai intenzione di renderlo simile a UNIX, finisci con ancora più domande a cui rispondere: i processi dovrebbero 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? Quale grado di isolamento vuoi fornire tra le attività? Dove vuoi che cada sulla scala monolitica vs. micro-kernel? In che misura (se ce ne sono) vuoi che supporti le operazioni distribuite?
Mi piacerebbe in genere consiglio contro lo studio del kernel di Linux per la vostra ispirazione. Questo non è nulla contro il kernel Linux stesso, ma un semplice fatto che Linux è destinato principalmente all'uso in produzione, non all'istruzione. Ha un sacco di ottimizzazioni, hack di compatibilità con le versioni precedenti, ecc., Che sono estremamente utili per la produzione ma hanno maggiori probabilità di distrarre che educare.
Se riesci a trovarlo, una copia del libro di Lion ( Lions 'Commentary on UNIX 6th Edition , con codice sorgente , di John Lions) è un punto di partenza molto più semplice. 6ª Edizione UNIX era ancora abbastanza piccolo e semplice da leggere e capire abbastanza rapidamente, senza essere un sistema di giocattoli semplificato.
Se stai pensando di scegliere come target x86 (almeno principalmente) potresti anche voler guardare MMURTL V 1.0 di Richard Burgess. Questo presenta un sistema per x86 che utilizza l'hardware x86 molto più come previsto inizialmente dai progettisti di CPU, qualcosa che la maggior parte dei sistemi reali evita a favore della portabilità verso altre CPU. Come puoi immaginare, questo tende ad essere orientato molto più pesantemente verso la fine hardware delle cose. Le copie stampate sembrano essere costose e difficili da trovare, ma puoi scaricare il testo e il codice gratuitamente.
Fortunatamente, ci sono anche molte altre possibilità: la progettazione e l'implementazione del sistema operativo , ad esempio di Andrew Tanenbaum e Albert Woodhull.