Domanda

Una cosa che ho sempre desiderato fare è sviluppare il mio sistema operativo (non necessariamente sofisticato come Linux o Windows, ma migliore di un semplice boot loader che ho già realizzato).

Ho difficoltà a trovare risorse/guide che ti portino oltre la scrittura di un semplice sistema operativo "Hello World".

So che molte persone probabilmente mi consiglieranno di guardare Linux o BSD;ma il codice base per sistemi del genere è (presumibilmente) così grande che non saprei da dove cominciare.

Eventuali suggerimenti?

Aggiornamento:Per facilitare le persone che arrivano a questo post tramite Google, ecco alcune risorse per lo sviluppo del sistema operativo:

Altre risorse:

Ho trovato una bella risorsa chiamata MikeOS, "MikeOS è uno strumento di apprendimento per dimostrare come funzionano i sistemi operativi semplici.Utilizza la modalità reale a 16 bit per l'accesso al BIOS, quindi non necessita di driver complessi"

Aggiornato il 14/11/08

Ho trovato alcune risorse su Guida di Freebyte ai...Sistemi operativi liberi e non liberi che si collega a kit come OSKit e la libreria ExOS.Sembrano molto utili per iniziare lo sviluppo del sistema operativo.

Aggiornato il 23/02/09

Ric Tokio consigliato nanoos in questo domanda.Nanoos è un sistema operativo scritto in C++.

Aggiornato il 9/3/09

Dinah ha fornito alcune utili discussioni su Stack Overflow sugli aspiranti sviluppatori di sistemi operativi: Ostacoli nella creazione di un sistema operativo personalizzato discute quali insidie ​​potresti incontrare durante lo sviluppo di un sistema operativo e Sviluppo del sistema operativo è un discorso più generale.

Aggiornato il 9/7/09

LB ha fornito un collegamento al file Progetto Pintos, un sistema operativo didattico progettato per gli studenti che imparano a sviluppare sistemi operativi.

Aggiornato il 27/07/09 (Va ancora forte!)

Mi sono imbattuto in un corso sul sistema operativo online da Berkley con 23 conferenze.

TomOS è una forchetta di MikeOS che include un piccolo gestore di memoria e supporto per il mouse.Come MikeOS, è progettato per essere un progetto educativo.È scritto nell'assemblatore NASM.

Aggiornato l'8/4/09

Ho trovato il diapositive e altri materiali per accompagnare le lezioni online di Berkeley elencate sopra.

Aggiornato il 23/08/09

Tutto domande contrassegnate con osdev sullo stackoverflow

OS/161 è un sistema operativo accademico scritto in C che funziona su un hardware simulato.Questo sistema operativo è simile in Nachos.Grazie Novelocrat!

tanguena consiglia http://en.wikipedia.org/wiki/MicroC/OS-II, un sistema operativo progettato per sistemi embedded.C'è un libro compagno anche.

Sviluppo del kernel Linux di Robert Love è suggerito da Anders.Si tratta di uno "sguardo interno ampiamente acclamato al kernel Linux".

Aggiornato il 18/09/2009

Grazie Tim S.Van Haren per avercelo raccontato Cosmo, un sistema operativo scritto interamente in C#.

tgiphil ce ne parla Framework dell'Alleanza per i sistemi operativi gestiti (MOSA)., "un insieme di strumenti, specifiche e codice sorgente per favorire lo sviluppo di sistemi operativi gestiti basati sul Common Intermediate Language."

Aggiornamento del 24/09/2009

Steve ha trovato un paio di risorse per lo sviluppo su Windows utilizzando Visual Studio, dai un'occhiata Configurazione della guida di BrokenThorn con VS 2005 O Sezione VS di OSDev.

Aggiornato il 05/09/2012

kerneltrap.org non è più disponibile.Il kernel Linux v0.01 è disponibile da kernel.org

Aggiornato il 21/12/2012Uno sviluppo del sistema operativo di base tutorial progettato per essere un progetto di un semestre.Ti guida nella creazione di un sistema operativo con componenti di base.Ottimo inizio per i principianti.Imparentato carta.Grazie Srujan!

Aggiornato il 15/11/2013

Scrivere un semplice sistema operativo da zero.Grazie James Moore!

Aggiornato l'8/12/2013

Come realizzare un sistema operativo per computer Grazie ddtoni!

Aggiornato il 18/03/2014

ToAruOS un sistema operativo costruito principalmente da zero, inclusa la GUI

Aggiornato il 12 settembre 2016

Scrivere il proprio sistema operativo giocattolo

Aggiornato il 10 dicembre 2016

Scrivere un sistema operativo semplice: da zero (grazie @Tyler C)

È stato utile?

Soluzione

Ci sono molti link dopo questo breve panoramica di ciò che implica scrivere un sistema operativo per la piattaforma X86.

Il collegamento che sembra essere più promettente (www.nondot.org/sabre/os/articles) non è più disponibile, quindi dovrai consultare il Versione di Archive.org per leggerlo.

Alla fine della giornata il bootloader prende il codice macchina del kernel, lo mette in memoria e ci salta sopra.Puoi inserire qualsiasi codice macchina nel kernel che desideri, ma la maggior parte dei programmi C si aspetta un sistema operativo, quindi dovrai dire al tuo compilatore che non avrà tutto quello, altrimenti il ​​bootloader dovrà crearne una parte.

Il kernel quindi fa tutto il lavoro pesante e sospetto che sia il kernel di esempio che desideri.Ma c'è molta strada da fare tra avere un kernel che dice "Hello world" e avere un kernel che carica un interprete di comandi, fornisce servizi disco e carica e gestisce programmi.

Potresti prendere in considerazione l'idea di iscriverti ad ACM per avere accesso alla loro letteratura più vecchia: ci sono molti articoli tra la fine degli anni '80 e l'inizio degli anni '90 nelle prime riviste di informatica su come creare sistemi operativi alternativi.Probabilmente ci sono anche libri fuori stampa di quest'epoca.Potresti riuscire a ottenere le stesse informazioni gratuitamente cercando gli indici di quelle riviste (che sono disponibili su quel sito - fai clic su "indice" vicino al nome della rivista) e poi chiedendo in giro se qualcuno ne ha una copia.

Infine, so che Usenet è morto (perché così dicono i profeti della rovina di Internet) ma scoprirai che molti dei vecchi esperti di quell'epoca vivono ancora lì.Dovresti cercare nei gruppi di Google (hanno il vecchio repository di dejanews) e mi aspetto che troverai molte persone che fanno le stesse domande dieci anni o 1,5 fa che stai facendo adesso.Potresti anche imbatterti nelle numerose domande di aiuto di Linus Torvalds poiché originariamente stava sviluppando Linux.Se le ricerche non danno risultati, chiedi nel newsgroup appropriato (probabilmente inizia con comp.arch, ma cerca quelli con OS nel nome).

Altri suggerimenti

Minix è molto più piccolo e progettato per scopi di apprendimento e il libro che lo accompagna è anche buono.

Aggiornamento:Immagino che Minix 3 abbia un obiettivo leggermente diverso, ma Minix2 (e ovviamente la prima versione) erano a scopo didattico.

Come qualcuno che ha scritto da zero un sistema operativo multitasking in tempo reale...

routine di antirimbalzo della tastiera, driver della tastiera, driver del disco, driver video, file system e infine un boot loader - e questo è solo per avviarlo per la prima volta senza niente da fare!

...Non posso sottolineare abbastanza quanto sia importante acquisire familiarità con l'hardware!Ciò è particolarmente vero se vuoi davvero fare tutto da solo invece di limitarti a prendere in mano un sistema primitivo che qualcun altro ha già predisposto per te.Ad esempio, contatta Intel e chiedi loro una scheda CPU per il tuo tipo di CPU!Questo ti spiegherà tutto: i "pin-out", gli interrupt, i codici operativi, tutto quello che vuoi!

Ricorda che l'hardware rende tutto possibile.Studia l'hardware.Non te ne pentirai.

.

Scrivere un sistema operativo per microcontrollore.Raccomando un microcontrollore basato su x86.Un sistema operativo moderno è giusto Enorme.Impara prima le basi.

Vorrei che ci fosse un posto dove ottenere tutte le informazioni sullo sviluppo del tuo sistema operativo.Il più vicino ad arrivare a questo è Wiki di sviluppo del sistema operativo E Forum.Offrono tantissime buone informazioni riguardanti la configurazione, lo sviluppo e le informazioni sull'hardware del dispositivo.

Inoltre ci sono alcuni ottimi tutorial su BoneFide, ho utilizzato il tutorial introduttivo di Crusca, e ora ne sto guardando uno più recente basato sulla sua chiamata Lancia il tuo sistema operativo clone UNIX giocattolo.

Secondo controllo:"Sistemi operativi :Progettazione e realizzazione"

E se vuoi sviluppare su Windows, dai un'occhiata al post sul blog di Jolson.

Modificare:Per lo sviluppo su Windows utilizzando Visual Studio, consulta La guida di BrokenThorn O Wiki di OSDev.

Un'ottima risorsa è il materiale del corso MIT 6.828:Ingegneria del sistema operativo.

XV6 - semplice sistema operativo didattico simile a Unix scritto in ANSI C per x86http://pdos.csail.mit.edu/6.828/2012/xv6.html

Fonte XV6 - come opuscolo stampato con numeri di rigahttp://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

Libro XV6: spiega le idee principali della progettazione del sistema operativohttp://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Il materiale è compatto:92 pagine di fonti e 96 pagine di commenti.

Mi piace più del libro Minix!È un vero gioiello!

potresti anche voler dare un'occhiata SharpOS che è un sistema operativo che stanno scrivendo in C#.

Ci sono buone risorse per i fondamenti del sistema operativo nei libri.Dal momento che non c'è molta richiesta per creare nuovi sistemi operativi da zero, non troverai moltissime informazioni di tipo hobbistico su Internet.

Raccomando il libro di testo standard, "Modern Operating Systems" di Tanenbaum.Potresti anche trovare utile "Elementi del sistema operativo" di Calingaert: è una breve panoramica di un libro che fornisce uno schizzo approssimativo di cosa sia un sistema operativo dal punto di vista di un progettista.

Se sei interessato ai sistemi in tempo reale (e dovresti almeno comprendere le differenze e le ragioni dei sistemi operativi in ​​tempo reale), allora consiglierei anche "MicroC/OS-II" di Labrosse.

Modificare:

Puoi specificare cosa intendi per "più tecnico"?Questi libri forniscono dettagli sull'implementazione dello pseudocodice, ma stai cercando un sistema operativo di esempio o frammenti di codice per una particolare macchina/linguaggio?

-Adamo

Vengo solo da un'altra domanda.Vorrei menzionare Pintos...Mi sono ricordato che il mio corso sul sistema operativo con Nachos e Pintos sembra essere lo stesso tipo di cosa che può essere eseguito su x86.

Ho trovato il Linux Kernel Development di Robert Love piuttosto interessante.Ti racconta come funzionano i diversi sottosistemi nel kernel Linux in un modo molto concreto.Dato che il sorgente è disponibile, Linux è un ottimo candidato per qualcosa su cui hackerare.

Ecco alcune altre pagine Stack Overflow che vale la pena incorporare in questa discussione:

Ostacoli nella creazione di un sistema operativo personalizzato
Sviluppo di un sistema operativo per l'architettura x86

Inizia a hackerare Minix.È molto più piccolo di Linux (ovviamente) ed è progettato pensando a scopi didattici (almeno alcuni).Non Minix 3 però, è tutta un'altra storia.

Ho già risposto, ma quando ho studiato Sistemi Operativi al college abbiamo iniziato con un primo kernel Linux e abbiamo aggiunto funzionalità moderne e semplicistiche (file system di base, memoria virtuale, multitasking, mutex).Buon divertimento.Puoi saltare alcune delle cose VERAMENTE folli solo per l'assemblaggio di basso livello per il mucking con la modalità protetta e le tabelle delle pagine mentre hai ancora imparato un po' del coraggio.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

Il mio corso sui sistemi operativi all'università ci ha fatto costruire una serie di sottosistemi per OS/161, un kernel semplice, simile a BSD, che fornisce alcune nozioni di base lasciando la libertà di esplorare varie decisioni sullo spazio di progettazione nell'implementazione di servizi di livello superiore.

Potresti voler dare un'occhiata linux da zero.

Linux From Scratch (LFS) è un progetto che fornisce istruzioni passo-passo per la creazione del proprio sistema Linux personalizzato, interamente dal codice sorgente.

Uno sviluppo del sistema operativo semplice e di base tutorial progettato per essere un progetto di un semestre.Ti guida nella creazione di un sistema operativo con componenti di base.Ottimo inizio per i principianti.Il documento correlato è Qui.

Vorrei includere questo repository Come realizzare un sistema operativo per computer di Samy Pesse.È un lavoro in corso.Molto interessante.

Un sistema operativo ragionevolmente semplice da studiare sarebbe µC/OS.Il libro ha un floppy con la fonte sopra.

http://en.wikipedia.org/wiki/MicroC/OS-II

Scopri il progetto Managed Operating System Alliance (MOSA) su www.mosa-project.org.Stanno progettando un compilatore AOT/JIT e un sistema operativo completamente gestito in C#.Alcuni degli sviluppatori provengono dal progetto SharpOS inattivo.

Ci ho giocato Cosmo, che è "un progetto del sistema operativo implementato completamente in linguaggi conformi a CIL". È scritto in C#, quindi era proprio nel mio vicolo.Per qualcuno come me che non ha mai tentato di costruire un sistema operativo, è stato davvero fantastico poter far funzionare un sistema operativo "Hello World" in pochissimo tempo.

Dai un'occhiata a questo sito: http://osix.net/modules/article/?id=359

Come accennato in precedenza, il OSDevWiki è (di gran lunga) la migliore fonte per lo sviluppo del sistema operativo.Per quelli di voi che parlano tedesco, il lowlevel.eu Anche Wiki è fantastico.Qualcosa di relativamente sconosciuto Incitatus OS, un semplice kernel con un piccolo set di app in spazio utente.È ottimo da usare per entrare nel complicato argomento dello sviluppo del sistema operativo.

Movitz è un ambiente Lisp scritto in Common Lisp e funzionante "on the metal".Sfortunatamente, alcuni collegamenti su Pagina principale di Movitz negare l'accesso, ma puoi trovare istruzioni su come scaricare e compilare il codice sorgente dal file pagina trac.Inoltre, un'immagine pronta può essere trovata nell'archivio di questa pagina.

IMHO questo è estremamente interessante, poiché riporta il file Macchina per la pronuncia concetto sull'hardware attualmente disponibile.Commercialmente fallì, ma questo non mi dimostra che l'idea fosse cattiva.

Il manuale degli odiatori di Unix è un libro divertente che rimprovera semi-seriamente il concetto di Unix e dei suoi derivati.Molte sezioni discutono su quanto fosse migliore il concetto di macchina Lisp.

Ecco un documento intitolato "Scrivere un semplice sistema operativo da zero".Copre la scrittura di un bootloader, l'accesso alla modalità protetta x86-32 e la scrittura di un kernel di base in C.Sembra fare un buon lavoro nello spiegare tutto in dettaglio.

IL Simulatore JS x86 E Simulatore di braccio può anche essere molto utile per capire come funzionano i diversi componenti hardware ed effettuare test senza uscire dal browser preferito.

Domanda interessante per i programmatori.Vedi, ci vorrà molto, molto tempo per creare sistemi operativi come Windows o Mac, ma se vuoi crearne di semplici, puoi fare del tuo meglio

  1. Devi concentrarti sul linguaggio Assembly, C e C++.Dovresti essere esperto in queste lingue.
  2. Prima leggi un buon libro su come funziona il sistema operativo [cercalo su Google], quindi leggi tutte le informazioni da Sistema operativo Wiki
  3. Cerca su YouTube "Come creare il tuo sistema operativo in linguaggio Assembly" guarda il video, Per esempio.video
  4. Scarica il codice sorgente del sistema operativo Linux e compilalo tu stesso e prova a modificare tu stesso il codice
  5. Ora sei un esperto editor del sistema operativo, scaricalo Minix E QNX e inizia a sviluppare con loro e ottieni i loro documenti da qui Minix Doc E QNX Doc

Ora hai conseguito la laurea magistrale (non completamente, solo un po' di più da fare) nella creazione di sistemi operativi, ora distribuisci queste conoscenze ai tuoi amici e con il loro aiuto prova a creare un sistema operativo potente come Mac, Linux o Windows

Una volta realizzato un sistema operativo di base, in realtà è difficile continuare perché non ci sono molte risorse per creare GUI o trasferire librerie.Ma penso di dare un'occhiata ToAruOS aiuterebbe molto!

Il codice sotto la superficie di quel sistema operativo è così dannatamente semplice!ma allo stesso tempo ha portato cose come Cairo, Python, (non ancora ma presto) sdl, ha condiviso la memoria e ha anche creato il suo toolkit widget.È tutto scritto in C.

Un altro sistema operativo interessante sarebbe pedigreeOS.È realizzato da JamesM (l'uomo dietro Tutorial sul kernel di jamesM.Sebbene abbia più funzionalità di ToaruOS, è anche più grande e più confuso.

Ma comunque questi 2 sistemi operativi ti aiuteranno molto, soprattutto ToAruOS.

Quando ho iniziato a lavorare sui miei sistemi operativi di base avevo bisogno di una guida di base come Trampolini di lancio per un sistema operativo di base.Mi ha aiutato a non perdere la testa.

Che se vuoi farlo dal nulla (puro codice assembly)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top