Question Quelles sont les ressources pour démarrer le développement du système d'exploitation? [fermé]


Une chose que j'ai toujours voulu faire est de développer mon propre système d'exploitation (pas forcément comme Linux ou Windows, mais mieux qu'un simple chargeur de démarrage que j'ai déjà fait).

J'ai du mal à trouver des ressources / guides qui vous emmènent à écrire un simple système d'exploitation "Hello World".

Je sais que beaucoup de gens vont probablement recommander de regarder Linux ou BSD; mais la base de code pour des systèmes comme celui-ci est (probablement) si grande que je ne saurais pas par où commencer.

Aucune suggestion?

Mise à jour: Pour faciliter les choses pour les personnes qui accèdent à ce post via Google, voici quelques ressources de développement de système d'exploitation:

Autres ressources:

J'ai trouvé une jolie ressource nommée MikeOS"MikeOS est un outil d'apprentissage pour démontrer le fonctionnement des systèmes d'exploitation simples: il utilise le mode réel 16 bits pour l'accès au BIOS, de sorte qu'il n'a pas besoin de pilotes complexes"

Mis à jour le 14/11/08 

J'ai trouvé des ressources à Freebyte's Guide to ... Systèmes d'exploitation gratuits et non-libres liens vers des kits tels que OSKit et la bibliothèque ExOS. Ceux-ci semblent super utiles pour démarrer dans le développement de l'OS.

Mis à jour le 23/2/09

Ric Tokyo conseillé nanoos dans ce question. Nanoos est un système d'exploitation écrit en C ++.

Mis à jour le 09/03/09

Dinah a fourni une discussion utile sur Stack Overflow concernant les développeurs de systèmes d'exploitation en herbe: Roadblocks dans la création d'un système d'exploitation personnalisé discute des pièges que vous pourriez rencontrer lors du développement d'un système d'exploitation et Développement OS est une discussion plus générale.

Mis à jour le 09/07/09

LB a fourni un lien vers le Projet Pintos, un système d'éducation conçu pour les étudiants qui apprennent le développement d'OS.

Mis à jour le 27/07/09 (Toujours aussi fort!)

Je suis tombé sur un cours en ligne OS de Berkley avec 23 conférences.

TomOS est une fourchette de MikeOS Cela inclut un petit gestionnaire de mémoire et un support de la souris. Comme MikeOS, il est conçu pour être un projet éducatif. Il est écrit en assembleur NASM.

Mis à jour le 04/08/09

J'ai trouvé le diapositives et autres matériaux pour aller avec les conférences en ligne de Berkeley énumérées ci-dessus.

Mis à jour le 23/08/09

Tout questions taguées osdev sur stackoverflow

OS / 161 est un système d'exploitation académique écrit en c qui fonctionne sur un matériel simulé. Ce système d'exploitation est similaire dans Nachos. Merci Novelocrat!

tangurena recommande http://en.wikipedia.org/wiki/MicroC/OS-II, un OS conçu pour les systèmes embarqués. Il y a un livre d'accompagnement ainsi que.

Développement du noyau Linux par Robert Love est suggéré par Anders. C'est un "regard d'initié largement acclamé sur le noyau Linux".

Mis à jour le 18/09/2009

Merci à Tim S. Van Haren de nous avoir parlé de Cosmos, un OS écrit entièrement en c #.

tgiphil nous parle de Cadre de l'Alliance pour le système d'exploitation géré (MOSA), "un ensemble d'outils, de spécifications et de code source pour favoriser le développement de systèmes d'exploitation gérés basés sur le langage intermédiaire commun".

Mise à jour le 24/09/2009

Steve a trouvé quelques ressources pour le développement sur Windows en utilisant Visual Studio, consultez Guide de configuration de BrokenThorn avec VS 2005 ou La section VS d'OSDev.

Mis à jour le 9/5/2012

kerneltrap.org n'est plus disponible. Le noyau linux v0.01 est disponible à partir de kernel.org

Mis à jour le 21/12/2012 Un développement de base de l'OS Didacticiel conçu pour être un projet de semestre. Il vous guide à travers pour construire un OS avec des composants de base. Très bon début pour les débutants. en relation papier. Merci Srujan!

Mis à jour le 15/11/2013

Ecrire un système d'exploitation simple à partir de zéro. Merci James Moore!

Mis à jour le 08/12/2013

Comment faire un système d'exploitation informatique  Merci ddtoni!

Mis à jour le 18 mars 2014

ToAruOS un OS construit la plupart du temps, y compris l'interface graphique

Mis à jour le 12 septembre 2016

Écrire votre propre système d'exploitation Toy

Mis à jour le 10 déc. 2016

Rédaction d'un système d'exploitation simple - à partir de zéro (merci @Tyler C)


551
2017-09-05 12:38


origine


Réponses:


Il y a beaucoup de liens après ça bref aperçu de ce qui est impliqué dans l'écriture d'un OS pour la plate-forme X86.

Le lien qui semble le plus prometteur (www.nondot.org/sabre/os/articles) n'est plus disponible, vous devrez donc passer à travers le Version Archive.org pour le lire.

À la fin de la journée, le bootloader prend le code machine du noyau, le met en mémoire et saute dessus. Vous pouvez mettre n'importe quel code machine dans le noyau que vous voulez, mais la plupart des programmes C attendent un OS donc vous devrez dire à votre compilateur qu'il n'aura pas tout cela, ou que le bootloader doit en créer une partie.

Le noyau fait alors tout le travail lourd, et je soupçonne que c'est l'exemple de noyau que vous voulez. Mais il y a un long chemin à faire entre avoir un noyau qui dit, "Bonjour tout le monde", avoir un noyau qui charge un interpréteur de commandes, fournit des services de disque, et charge et gère des programmes.

Vous pourriez envisager de vous abonner à ACM pour avoir accès à leur littérature plus ancienne - il y a beaucoup d'articles à la fin des années 80 et au début des années 90 dans les premiers magazines d'informatique sur la façon de créer des systèmes d'exploitation alternatifs. Il y a probablement des livres qui sont épuisés de cette époque aussi. Vous pourriez être en mesure d'obtenir la même information gratuitement en regardant les index de ces magazines (qui sont disponibles sur ce site - cliquez sur "index" près du nom du magazine), puis demander aux gens avec une copie.

Enfin, je sais que Usenet est mort (car c'est ce que disent les prophètes d'Internet), mais vous constaterez que beaucoup d'anciens experts de cette époque y vivent toujours. Vous devriez rechercher des groupes de google (ils ont l'ancien dépôt de dejanews) et je m'attends à ce que vous trouviez beaucoup de gens posant les mêmes questions il y a une décennie ou 1.5 que vous demandez maintenant. Vous pouvez même parcourir les nombreuses requêtes d'aide de Linus Torvalds alors qu'il développait linux à l'origine. Si les recherches n'apportent rien, demandez dans le groupe de discussion approprié (commence probablement par comp.arch, mais recherchez celles avec OS dans le nom).


91
2017-09-04 04:30



Minix est beaucoup plus petit, et conçu à des fins d'apprentissage, et le livre pour aller avec C'est un bon aussi.

Mise à jour: Je suppose que Minix 3 est un objectif un peu différent, mais Minix 2 (et bien sûr la première version) étaient à des fins d'enseignement.


34
2017-10-20 05:09



Comme quelqu'un qui a écrit un système d'exploitation multitâche en temps réel à partir de zéro ...

routine de débrayage de clavier, pilote de clavier, pilote de disque, pilote vidéo, système de fichiers, et enfin un chargeur de démarrage - et c'est juste pour le lancer pour la première fois avec rien à faire!

... Je ne saurais trop insister sur l'importance de se familiariser avec le matériel! C'est particulièrement vrai si vous voulez vraiment tout faire vous-même au lieu de simplement choisir un système primitif que quelqu'un d'autre a déjà conçu pour vous. Par exemple, contactez Intel et demandez-leur une carte CPU pour votre type de CPU! Cela vous le présentera - les "pin-outs", les interruptions, les opcodes, vous l'appelez!

Rappelez-vous que le matériel rend tout cela possible. Étudiez le matériel. Vous ne le regretterez pas.

.


30
2017-10-20 05:47



Ecrire un microcontrôleur OS. Je recommande un microcontrôleur basé sur x86. Un système d'exploitation moderne est juste énorme. Apprenez les bases en premier.


17
2017-09-23 17:29



Je souhaite qu'il y avait un endroit pour obtenir toutes les informations sur le développement de votre propre système d'exploitation. Le plus proche de venir à c'est OS Dev Wiki et Forums. Ils offrent une tonne de bonnes informations concernant la configuration, le développement et les informations sur le matériel de l'appareil.

Il y a aussi d'excellents tutoriels à BoneFide, J'ai utilisé le tutoriel de démarrage en Fibre, et je regarde maintenant un plus récent basé sur son appelé Roulez votre propre OS UNIX-clone.

Je vérifie deuxième: "Systèmes d'exploitation: Conception et mise en œuvre"

Et si vous voulez développer sur Windows, consultez le blog de jolson.

Modifier: Pour le développement sur Windows en utilisant Visual Studio, consultez Le guide de BrokenThorn ou Le wiki d'OSDev.


15
2017-09-04 06:20



Une excellente ressource est le matériel du cours MIT 6.828: Ingénierie du système d'exploitation.

XV6 - Un simple système d'enseignement de type Unix écrit en ANSI C pour x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html

Source XV6 - sous forme de livret imprimé avec des numéros de ligne http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

Livre XV6 - explique les idées principales du design os http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Le matériel est compact: source de 92 pages et commentaire de 96 pages.

Je l'aime plus que le livre Minix! C'est un vrai bijou!


12
2017-09-04 04:33



vous pourriez aussi vouloir jeter un oeil à SharpOS qui est un système d'exploitation qu'ils écrivent en c #.


11
2018-03-09 18:07



Il existe de bonnes ressources pour les fondamentaux du système d'exploitation dans les livres. Comme il n'y a pas beaucoup d'appels pour créer de nouveaux OS à partir de zéro, vous ne trouverez pas une tonne d'informations de type amateur sur Internet.

Je recommande le livre de texte standard, "Modern Operating Systems" par Tanenbaum. Vous pouvez également trouver des «éléments du système d'exploitation» de Calingaert utiles - c'est une fine vue d'ensemble d'un livre qui donne un aperçu de ce qu'est un système d'exploitation du point de vue d'un concepteur.

Si vous avez un intérêt dans les systèmes en temps réel (et vous devriez au moins comprendre les différences et les raisons pour les systèmes d'exploitation en temps réel), alors je recommande également "MicroC / OS-II" par Labrosse.

Modifier:

Pouvez-vous préciser ce que vous entendez par "plus technique"? Ces livres donnent des détails sur l'implémentation du pseudo-code, mais recherchez-vous un exemple de système d'exploitation ou des extraits de code pour une machine / un langage particulier?

-Adam


9
2017-09-05 13:35



Je viens juste d'une autre question. Je voudrais mentionner Pintos... Je me suis souvenu de mon cours OS avec Nachos et Pintos semble être le même genre de chose qui peut fonctionner sur x86.


7
2017-09-04 06:25



J'ai trouvé le Linux Kernel Development de Robert Love très intéressant. Il vous indique comment les différents sous-systèmes du noyau Linux fonctionnent d'une manière très terre-à-terre. Puisque la source est disponible, Linux est un candidat idéal pour quelque chose à pirater.


7



Voici d'autres pages Stack Overflow à intégrer dans cette discussion:

Roadblocks dans la création d'un système d'exploitation personnalisé
Développer un système d'exploitation pour l'architecture x86


6