Quelles sont les ressources pour démarrer dans le développement de systèmes d’exploitation ?[fermé]

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

Question

Une chose que j'ai toujours voulu faire est de développer mon propre système d'exploitation (pas nécessairement sophistiqué 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 guident au-delà de l'écriture d'un simple système d'exploitation "Hello World".

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

Aucune suggestion?

Mise à jour:Pour faciliter la tâche des personnes qui accèdent à cet article via Google, voici quelques ressources de développement de système d'exploitation :

Autres ressources:

J'ai trouvé une belle ressource nommée MikeOS, "MikeOS est un outil d'apprentissage permettant de démontrer le fonctionnement de 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 sur Guide de Freebyte sur... les systèmes d'exploitation gratuits et non libres qui renvoie à des kits tels que OSKit et la bibliothèque ExOS.Ceux-ci semblent très utiles pour démarrer dans le développement de systèmes d’exploitation.

Mis à jour le 23/02/09

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

Mis à jour le 9/03/09

Dinah a fourni des discussions utiles sur Stack Overflow pour les futurs développeurs de systèmes d'exploitation : Obstacles à la création d'un système d'exploitation personnalisé discute des pièges que vous pourriez rencontrer tout en développant un système d'exploitation et Développement du système d'exploitation est une discussion plus générale.

Mis à jour le 9/07/09

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

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

Je suis tombé sur un cours en ligne sur le système d'exploitation de Berkley avec 23 conférences.

TomOS est une fourchette de MikeOS qui inclut un petit gestionnaire de mémoire et un support de 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 accompagner les conférences en ligne de Berkeley répertoriées ci-dessus.

Mis à jour le 23/08/09

Tous questions taguées osdev sur stackoverflow

OS/161 est un système d'exploitation académique écrit en C qui s'exécute 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 système d'exploitation conçu pour les systèmes embarqués.Il y a un livre d'accompagnement aussi.

Développement du noyau Linux de Robert Love est suggéré par Anders.Il s'agit d'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é Cosmos, un système d'exploitation entièrement écrit en c#.

tgiphil nous parle Cadre MOSA (Managed Operating System Alliance), "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 du 24/09/2009

Steve a trouvé quelques ressources pour le développement sur Windows à l'aide de Visual Studio, consultez Configuration du guide de BrokenThorn avec VS 2005 ou Section VS d'OSDev.

Mis à jour le 05/09/2012

kerneltrap.org n'est plus disponible.Le noyau Linux v0.01 est disponible sur noyau.org

Mis à jour le 21/12/2012Un développement OS de base Didacticiel conçu pour être un projet d'un semestre.Il vous guide dans la création d'un système d'exploitation avec des composants de base.Très bon début pour les débutants.En rapport papier.Merci Srujan!

Mis à jour le 15/11/2013

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

Mis à jour le 8/12/2013

Comment créer un système d'exploitation informatique Merci ddtoni!

Mis à jour le 18/03/2014

ToAruOS, un système d'exploitation construit principalement à partir de zéro, y compris une interface graphique

Mis à jour le 12 septembre 2016

Écrire votre propre système d'exploitation pour jouets

Mis à jour le 10 décembre 2016

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

Était-ce utile?

La solution

Il y a beaucoup de liens après ça bref aperçu de ce qu'implique l'écriture d'un système d'exploitation 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 parcourir le Version Archive.org pour le lire.

En fin de compte, le chargeur de démarrage prend le code machine du noyau, le met en mémoire et y accède.Vous pouvez mettre n'importe quel code machine dans le noyau, mais la plupart des programmes C attendent un système d'exploitation, vous devrez donc dire à votre compilateur qu'il n'aura pas tout cela, ou que le chargeur de démarrage devra en créer une partie.

Le noyau fait ensuite tout le gros du travail, et je suppose que c'est l'exemple de noyau que vous souhaitez.Mais il y a un long chemin à parcourir entre avoir un noyau qui dit « Bonjour tout le monde » et avoir un noyau qui charge un interpréteur de commandes, fournit des services de disque, et charge et gère des programmes.

Vous voudrez peut-être envisager de vous abonner à ACM pour avoir accès à leur littérature plus ancienne - il y a de nombreux articles à la fin des années 80 et au début des années 90 dans les premiers magazines informatiques sur la façon de créer des systèmes d'exploitation alternatifs.Il y a probablement aussi des livres épuisés de cette époque.Vous pourrez peut-être obtenir les mêmes informations gratuitement en recherchant les index de ces magazines (qui sont disponibles sur ce site - cliquez sur "index" à côté du nom du magazine), puis en demandant autour de vous les personnes qui en possèdent un exemplaire.

Enfin, je sais que Usenet est mort (car c'est ce que disent les prophètes de la catastrophe d'Internet), mais vous constaterez que bon nombre des vieux experts escarpés de cette époque y vivent toujours.Vous devriez rechercher des groupes Google (ils ont l'ancien référentiel de dejanews) et j'espère que vous trouverez de nombreuses personnes posant les mêmes questions il y a dix ou quinze ans que vous posez maintenant.Vous pouvez même rencontrer les nombreuses demandes 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 ceux avec OS dans le nom).

Autres conseils

Minix est beaucoup plus petit et conçu à des fins d'apprentissage, et le livre qui va avec c'est un bon aussi.

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

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

routine anti-rebond du 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 sans 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 reprendre 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 l'exposera - les "brochages", les interruptions, les opcodes, vous l'appelez !

N'oubliez pas que le matériel rend tout cela possible.Étudiez le matériel.Vous ne le regretterez pas.

.

Écrivez un système d'exploitation de microcontrôleur.Je recommande un microcontrôleur basé sur x86.Un système d'exploitation moderne est juste énorme.Apprenez d’abord les bases.

J'aurais aimé qu'il y ait un seul endroit pour obtenir toutes les informations sur le développement de votre propre système d'exploitation.Le plus proche de cela est Wiki de développement du système d'exploitation et Forums.Ils offrent une tonne d’informations utiles concernant la configuration, le développement et le matériel de l’appareil.

Il existe également d'excellents tutoriels sur OsFide, j'ai utilisé le tutoriel de démarrage de Fibre, et j'en regarde maintenant un plus récent basé sur son appelé Roulez votre propre système d'exploitation clone UNIX jouet.

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

Et si vous souhaitez développer sous Windows, consultez le blog de Jolson.

Modifier:Pour le développement sur Windows à l'aide de Visual Studio, consultez Guide de BrokenThorn ou Wiki d'OSDev.

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

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

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

Livre XV6 - explique les idées principales de la conception du système d'exploitationhttp://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

Le matériau est compact :Source de 92 pages et commentaire de 96 pages.

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

vous voudrez peut-être aussi jeter un oeil à SharpOS qui est un système d'exploitation qu'ils écrivent en c#.

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

Je recommande le manuel standard "Modern Operating Systems" de Tanenbaum.Vous pourrez peut-être également trouver utile "Operating System Elements" de Calingaert - il s'agit d'un aperçu d'un livre qui donne une esquisse approximative de ce qu'est un système d'exploitation du point de vue d'un concepteur.

Si vous êtes intéressé par les systèmes temps réel (et que vous devez au moins comprendre les différences et les raisons des systèmes d'exploitation en temps réel), je recommanderais également "MicroC/OS-II" de 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

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

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

Voici quelques autres pages Stack Overflow qui méritent d'être intégrées à cette discussion :

Obstacles à la création d'un système d'exploitation personnalisé
Développement d'un système d'exploitation pour l'architecture x86

Commencez à pirater Minix.Il est beaucoup plus petit que Linux (évidemment) et il est conçu à des fins pédagogiques (au moins pour certains).Pas Minix 3 cependant, c'est une toute autre histoire.

Déjà répondu, mais lorsque j'ai étudié les systèmes d'exploitation à l'université, nous avons commencé avec un premier noyau Linux et ajouté des fonctionnalités modernes simplistes (systèmes de fichiers de base, mémoire virtuelle, multitâche, mutex).Bon amusement.Vous pouvez ignorer certains des trucs d'assemblage de bas niveau VRAIMENT fous uniquement pour le nettoyage avec le mode protégé et les tables de pages tout en apprenant une partie du courage.

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

Mon cours de premier cycle sur les systèmes d'exploitation nous a amené à construire un certain nombre de sous-systèmes pour OS/161, un noyau simple de type BSD qui fournit certaines des bases tout en laissant la liberté d'explorer diverses décisions d'espace de conception lors de la mise en œuvre de services de niveau supérieur.

Vous voudrez peut-être regarder Linux à partir de zéro.

Linux From Scratch (LFS) est un projet qui vous fournit des instructions étape par étape pour construire votre propre système Linux personnalisé, entièrement à partir du code source.

Un développement OS simple et basique Didacticiel conçu pour être un projet d'un semestre.Il vous guide dans la création d'un système d'exploitation avec des composants de base.Très bon début pour les débutants.Le document connexe est ici.

Je voudrais inclure ce dépôt Comment créer un système d'exploitation pour ordinateur par Samy Pesse.Est un travail en cours.Très intéressant.

Un système d'exploitation raisonnablement simple à étudier serait µC/OS.Le livre contient une disquette avec la source.

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

Découvrez le projet MOSA (Managed Operating System Alliance) sur www.mosa-project.org.Ils conçoivent un compilateur AOT/JIT et un système d'exploitation entièrement géré en C#.Certains développeurs sont issus du projet SharpOS inactif.

j'ai joué avec Cosmos, qui est "un projet de système d'exploitation implémenté complètement dans les langues conformes au CIL". Il est écrit en C #, donc c'était juste dans ma ruelle.Pour quelqu'un comme moi qui n'a jamais tenté de créer un système d'exploitation, c'était plutôt cool de pouvoir faire fonctionner un système d'exploitation "Hello World" en un rien de temps.

Comme mentionné ci-dessus, le Wiki OSDev est (de loin) la meilleure source pour le développement de systèmes d'exploitation.Pour ceux d'entre vous qui parlent allemand, le lowlevel.eu Le wiki est également génial.Quelque chose de relativement inconnu Inciter le système d'exploitation, un noyau simple avec un petit ensemble d'applications en espace utilisateur.C'est idéal à utiliser pour aborder le sujet complexe du développement du système d'exploitation.

Movitz est un environnement Lisp écrit en Common Lisp et fonctionnant "sur le métal".Malheureusement, certains liens sur le Page principale de Movitz refuser l'accès, mais vous pouvez trouver des instructions sur la façon de télécharger et de compiler le code source à partir du page de suivi.En outre, une image prête peut être trouvée dans les archives de cette page.

À mon humble avis, c'est extrêmement intéressant, car cela ramène le Machine à zézayer concept sur le matériel actuellement disponible.Cela a échoué commercialement, mais cela ne me prouve pas que l’idée était mauvaise.

Le manuel des haineux d'Unix est un livre amusant qui réprimande semi-sérieusement le concept d'Unix et ses dérivés.De nombreuses sections discutent de l'amélioration du concept de la machine Lisp.

Voici un article intitulé "Écrire un système d'exploitation simple à partir de zéro".Il couvre l'écriture d'un chargeur de démarrage, l'entrée en mode protégé x86-32 et l'écriture d'un noyau de base en C.Il semble faire du bon travail en expliquant tout en détail.

Le Simulateur JS x86 et Simulateur BRAS peut également être très utile pour comprendre le fonctionnement des différentes pièces matérielles et effectuer des tests sans quitter votre navigateur préféré.

Question intéressante pour les programmeurs.Vous voyez, il faudra beaucoup de temps pour créer un système d'exploitation comme Windows ou Mac, mais si vous voulez en créer un simple, vous pouvez faire de votre mieux.

  1. Vous devez vous concentrer sur le langage assembleur, le C et le C++.Vous devez être expert dans ces langues.
  2. Lisez d'abord un bon livre sur le fonctionnement du système d'exploitation [Google it], puis lisez toutes les informations de Système d'exploitation Wiki
  3. Recherchez sur YouTube "Comment créer votre propre système d'exploitation en langage assembleur", regardez la vidéo, Par exemple.Vidéo
  4. Téléchargez le code source du système d'exploitation Linux, compilez-le vous-même et essayez de modifier le code vous-même
  5. Vous êtes maintenant un éditeur de système d'exploitation expérimenté, téléchargez maintenant Minix et QNX et commencez à développer avec eux et obtenez leurs documents à partir d'ici Doc Minix et Document QNX

Maintenant que vous avez obtenu le master (pas complètement, il reste juste un peu plus à faire) en création de système d'exploitation, distribuez maintenant ces connaissances à vos amis et, avec leur aide, essayez de créer un système d'exploitation aussi puissant que Mac, Linux ou Windows.

Lorsque vous avez créé un système d'exploitation de base, il est en fait difficile de continuer car il n'y a pas beaucoup de ressources pour créer des interfaces graphiques ou porter des bibliothèques.Mais je pense qu'en jetant un oeil à VersAruOS ça aiderait beaucoup !

Le code sous la surface de ce système d’exploitation est tellement simple !mais en même temps, il a porté des choses comme Cairo, Python, (pas encore mais bientôt) sdl, a créé une mémoire partagée et il a également créé sa propre boîte à outils de widgets.Tout est écrit en C.

Un autre système d'exploitation intéressant serait pedigreeOS.C'est réalisé par JamesM (l'homme derrière Tutoriel du noyau de JamesM.Bien qu'il ait plus de fonctionnalités que ToaruOS, il est également plus grand et plus déroutant.

Mais quoi qu’il en soit, ces 2 OS vous aideront beaucoup notamment ToAruOS.

Quand j'ai commencé à travailler sur mes systèmes d'exploitation de base, j'avais besoin d'un guide de base comme Tremplins pour un système d'exploitation de base.Cela m’a aidé à ne pas perdre la tête.

Que si vous voulez le faire à partir de absolument rien (code assembleur pur)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top