Comment créer un système d'exploitation informatique?

1. Suivez des cours d'informatique.
2. Apprenez un langage de programmation de haut niveau à un niveau avancé.
3. Apprenez un langage d'assemblage de bas niveau.
4. Suivez un didacticiel sur le système d'exploitation.
5. Planifiez votre système d'exploitation.
6. Créez votre environnement de programmation.
7. Construisez et testez.
8. Libérez une version candidate.

L'écriture d'un système d'exploitation à partir de zéro nécessite une solide maîtrise de l'informatique
L'écriture d'un système d'exploitation à partir de zéro nécessite une solide maîtrise de l'informatique, un langage de programmation comme C ou C ++, des pratiques d'assemblage et de gestion de code.

Ce guide vous apprend à planifier et à développer un système d'exploitation si vous ne savez pas coder. Les systèmes d'exploitation gèrent le matériel informatique et fournissent les ressources dont les applications ont besoin pour s'exécuter. L'écriture d'un système d'exploitation à partir de zéro nécessite une solide maîtrise de l'informatique, un langage de programmation comme C ou C ++, des pratiques d'assemblage et de gestion de code.

Partie 1 sur 2: apprendre les bases

  1. 1
    Suivez des cours d'informatique de base. Contrairement au développement pour le Web, la création d'un système d'exploitation nécessite une solide compréhension des algorithmes, des structures de données, du matériel informatique et de la gestion des ressources. Les gens obtiennent des diplômes dans ce domaine, alors ne vous attendez pas à écrire un système d'exploitation entier après avoir lu un didacticiel en ligne! Le cours d'introduction à l'informatique de Harvard est disponible en ligne via EDX sans frais.
  2. 2
    Apprenez un langage de programmation de haut niveau comme C. Une fois que vous avez une solide compréhension de base de l'informatique, l'étape suivante consiste à maîtriser C et / ou C ++. Tout comme l'apprentissage de l'informatique, la maîtrise d'un langage n'est pas facultative - vous ne pourrez pas coder un système d'exploitation si vous ne pouvez pas écrire des applications solides.
  3. 3
    Apprenez un langage d'assemblage. Les langages d'assemblage sont des langages de bas niveau conçus pour communiquer avec différents processeurs. Comme l'assemblage est différent pour différents types de processeurs (par exemple, le langage d'assemblage x86 pour Intel, AMD, VIA et d'autres processeurs), vous devrez connaître la version correspondant au type de processeur pour lequel vous codez.
    • Ce livre open source, s'il est lu dans son intégralité, peut vous donner une compréhension suffisamment solide pour construire un système d'exploitation.
    • L'art du langage d'assemblage est un livre hautement recommandé sur l'assemblage disponible à la fois en ligne et hors ligne.
    • Vous devriez également faire beaucoup de recherches sur le type de processeur sur lequel votre système d'exploitation doit fonctionner. Les manuels relatifs à l'architecture des processeurs peuvent être facilement trouvés à l'aide d'une recherche Google («Manuels Intel», «Manuels ARM», etc.).
  4. 4
    Terminez un didacticiel sur le système d'exploitation. Les didacticiels du système d'exploitation vous guideront tout au long du processus de création d'un système d'exploitation de base. Cela vous permet de vous habituer au processus et vous aide à déterminer s'il vous manque des pièces. Une fois que vous avez terminé un ou deux didacticiels, vous serez sur la bonne voie pour créer votre propre système d'exploitation.
    • Bare Bones est un tutoriel qui vous aide à écrire votre premier noyau 32 bits simple. Après avoir terminé le didacticiel, l'étape suivante consiste à utiliser le squelette Meaty pour structurer votre propre système d'exploitation.
    • Linux from scratch est un livre en ligne qui vous guide tout au long de la création de votre propre système d'exploitation Linux.
    • Systèmes d'exploitation de 0 à 1 est un livre gratuit sur la création de divers systèmes d'exploitation du début à la fin.
    Le noyau est le cœur de votre système d'exploitation
    Le noyau est le cœur de votre système d'exploitation, fournissant une interface entre l'utilisateur et le matériel informatique.
  5. 5
    Déterminez les objectifs de votre système d'exploitation. Que voulez-vous que votre système d'exploitation fasse? À quoi cela devrait-il ressembler? Avez-vous vraiment besoin d'écrire un système d'exploitation entier ou cherchez-vous simplement à créer un certain look pour votre bureau? Ce sont toutes des choses à considérer avant de commencer à coder.
    • Pensez à développer avec une équipe d'autres programmeurs. Avoir une équipe de développeurs travaillant sur le projet réduira considérablement le temps de développement.
    • Ajoutez les objectifs, les plans et les questions de votre projet à votre référentiel public afin que les autres puissent facilement vous aider.

Partie 2 sur 2: Construire votre système d'exploitation

  1. 1
    Choisissez un environnement de développement. Il s'agit de la plate-forme que vous utiliserez pour coder votre nouveau système d'exploitation. C'est une question de préférence personnelle, mais la plupart des gens utilisent Windows ou une version d'UNIX. Si vous utilisez Windows, c'est une bonne idée d'installer un environnement UNIX comme Cygwin ou MinGW. Vous voudrez généralement vous assurer que l'environnement que vous utilisez comprend les éléments suivants:
    • GCC (le compilateur Gnu). Si vous utilisez Windows, vous pouvez l'installer dans Cygwin ou MinGW.
    • Binutils est une collection d'outils utilisés pour manipuler des fichiers objets. Encore une fois, si vous utilisez Windows, vous pouvez l'installer dans Cygwin.
    • Un bon éditeur de texte. Vim et emacs sont couramment utilisés dans les environnements UNIX. Les utilisateurs de Windows peuvent utiliser le Bloc-notes ou consulter Notepad ++ pour une mise à niveau multi-onglets.
    • Perl et / ou Python. Un ou les deux sont recommandés pour la manipulation de chaînes.
  2. 2
    Configurez votre système de contrôle de version. L'écriture d'un système d'exploitation signifie que vous allez probablement créer des centaines (ou des milliers!) De lignes de code. Lorsque vous travaillez sur des révisions, cela peut prêter à confusion. Certaines options à vérifier sont CVS, Mercurial et Subversion.
  3. 3
    Choisissez un chargeur de démarrage. Si vous ne souhaitez pas créer le vôtre, vous pouvez en utiliser un existant tel que Grand unified bootloader (GRUB). Si vous vous sentez assez audacieux pour coder un bootloader, consultez Rolling your own bootloader sur OSDev.org.
  4. 4
    Choisissez une conception de noyau. Le noyau est le cœur de votre système d'exploitation, fournissant une interface entre l'utilisateur et le matériel informatique. Il existe des noyaux monolithiques et des micro-noyaux. Les noyaux monolithiques implémentent tous les services du noyau, tandis que les micro-noyaux ont un petit noyau combiné avec des démons utilisateurs mettant en œuvre des services. En général, les noyaux monolithiques sont plus rapides, mais les micro-noyaux ont une meilleure isolation des pannes et une meilleure fiabilité.
  5. 5
    Commencer petit. Commencez par de petites choses telles que l'affichage de texte et les interruptions avant de passer à des choses telles que la gestion de la mémoire et le multitâche. Vous pouvez également essayer de créer un système d'exploitation 16 bits simple, au lieu de faire un grand pas en avant.
    • Vous n'aurez pas un système complet dans deux semaines. Commencez avec un système d'exploitation qui démarre, puis passez aux choses intéressantes.
    La maîtrise d'un langage n'est pas facultative - vous ne pourrez pas coder un système d'exploitation
    Tout comme l'apprentissage de l'informatique, la maîtrise d'un langage n'est pas facultative - vous ne pourrez pas coder un système d'exploitation si vous ne pouvez pas écrire des applications solides.
  6. 6
    Testez votre nouveau système d'exploitation avec une machine virtuelle. Plutôt que de redémarrer votre ordinateur chaque fois que vous apportez des modifications ou de devoir transférer les fichiers de votre ordinateur de développement vers votre machine de test, utilisez une application de machine virtuelle. Vmware est une option courante qui fonctionne à la fois avec Windows et Linux, tout comme Bochs. Vérifiez les blocages potentiels et autres bogues et réparez-les si nécessaire.
  7. 7
    Libérez une «version candidate». Vous pouvez le faire en téléchargeant votre code testé dans votre référentiel public. Cela permettra aux utilisateurs de tester votre système d'exploitation et de signaler les problèmes rencontrés.
  8. 8
    Réseau avec d'autres développeurs de systèmes d'exploitation. Il existe toute une communauté de développeurs de systèmes d'exploitation se rassemblant sur divers forums, y compris / r / osdev sur Reddit et le Software Engineering Stack Exchange. Une fois que vous avez maîtrisé le développement d'un système d'exploitation de base, lisez les articles existants pour voir quel genre de choses se produit pendant le processus de développement.

Conseils

  • Assurez-vous de mettre en œuvre les fonctionnalités de sécurité comme votre priorité absolue si vous voulez un jour que votre système soit viable.
  • Une fois le développement terminé, décidez si vous souhaitez publier le code en open source ou propriétaire.
  • Ne rejoignez pas les forums OSDev.org et commencez à poser des questions évidentes. Il en résultera simplement des réponses «Lire le manuel». Vous devriez essayer de lire Wikipedia et les manuels des différents outils que vous souhaitez utiliser.
  • Ne démarrez pas un projet de système d'exploitation pour commencer à apprendre la programmation. Si vous ne connaissez pas déjà C, C ++, Pascal ou un autre langage approprié à l'intérieur, y compris la manipulation de pointeurs, la manipulation de bits de bas niveau, le décalage de bits, le langage d'assemblage en ligne, etc., vous n'êtes pas prêt pour le développement du système d'exploitation.
    La création d'un système d'exploitation nécessite une solide compréhension des algorithmes
    Contrairement au développement pour le Web, la création d'un système d'exploitation nécessite une solide compréhension des algorithmes, des structures de données, du matériel informatique et de la gestion des ressources.
  • Un système d'exploitation peut également être convivial. Assurez-vous d'ajouter des fonctionnalités conviviales, ce qui en fait une partie intégrante de votre conception.
  • Pour rendre un système d'exploitation capable de gérer plusieurs processeurs, votre gestionnaire de mémoire doit avoir des mécanismes de «verrouillage» en place pour empêcher plusieurs processeurs d'accéder à la même ressource en même temps. Les «verrous» utilisés pour cela nécessiteront la présence d'un ordonnanceur pour s'assurer qu'un seul processeur accède à une ressource critique à un moment donné et que tous les autres sont obligés d'attendre. Pourtant, le planificateur dépend de la présence d'un gestionnaire de mémoire. Il s'agit d'un cas de dépendance bloquée. Il n'y a pas de méthode standard pour résoudre des problèmes comme celui-ci; en tant que programmeur, on attend de vous que vous soyez suffisamment compétent pour comprendre sa propre façon de gérer le problème.
  • Si vous faites quelque chose de mal avisé, comme écrire des octets aléatoires sur des ports d'E / S aléatoires, vous planterez votre système d'exploitation et pourrez (en théorie) faire frire votre matériel.

Questions et réponses

  • Pouvez-vous me donner plus d'informations sur les graphiques et par où commencer?
    Vous pouvez créer les graphiques vous-même et vous pouvez commencer à tout moment et à n'importe quel endroit. Tout ce dont vous avez besoin est quelques connaissances en programmation et un logiciel pour le programmer. Si vous ne savez pas quoi faire, un didacticiel en ligne avec des endroits tels que Code Academy ou Khan Academy peut vous aider.
  • Est-il préférable de coder mon propre noyau plutôt que d'utiliser un noyau existant?
    Obtenir un noyau open source est mieux que d'en coder un si vous êtes à l'université ou quelque chose comme ça parce que vous n'avez pas à partir de zéro ou à payer pour cela car il est open source. Cependant, en coder un prouve une meilleure connaissance de la programmation, ce que vous préférerez peut-être.
  • Comment fusionner les systèmes d'exploitation Windows et Android?
    Windows est un système d'exploitation non structuré, sans oublier qu'il n'est pas open source, l'ajout de fonctionnalités à Windows est une tâche assez difficile. Alors qu'Android peut être considéré comme une variante de Linux, un système d'exploitation structuré et open-source, l'ajout de couches de fonctionnalités est facile, mais trop de couches entraînent une mauvaise expérience utilisateur. De retour à la question, il faudrait certainement que vous ayez une connaissance approfondie d'Android (vous pouvez essayer de cuisiner une rom Android) et une connaissance approfondie du fonctionnement de certains composants de base de Windows, alors qu'obtenez-vous après la fusion de ces deux systèmes d'exploitation? être structuré ou non structuré, pour commencer? Il y a trop d'ambiguïté!
  • Quelles applications puis-je utiliser pour programmer mon système d'exploitation?
    Cela dépend du langage de programmation que vous utilisez. Il est toutefois recommandé d'utiliser un IDE, ou environnement de développement intégré, pour programmer votre système d'exploitation, car les IDE disposent d'outils et de fonctionnalités intégrés pour faciliter le développement. Cependant, tous les IDE ne prennent pas en charge toutes les langues, vous souhaiterez donc rechercher spécifiquement les IDE qui prennent en charge la ou les langues que vous utilisez.
  • Puis-je créer un système d'exploitation en utilisant uniquement Java?
    Oui, quelqu'un a déjà fait ça. Cependant, si vous voulez que les gens utilisent réellement votre système d'exploitation, n'utilisez pas java. Cela prendra non seulement beaucoup, beaucoup plus de temps, mais ce ne sera pas non plus aussi bon qu'un système d'exploitation fabriqué à partir d'un autre langage de codage. Alors, vous pouvez, oui, mais devriez-vous? Probablement pas.
  • Combien de temps faudrait-il pour créer un nouveau système d'exploitation?
    Il faudrait des mois, voire des années, pour créer un système d'exploitation qui fonctionne correctement avec de nombreuses fonctionnalités. Il n'y a aucun moyen possible de créer un système d'exploitation en quelques semaines ou quelques jours.
  • Quelle devrait être ma première étape?
    Apprenez les langages et les concepts de programmation et entraînez-vous pour devenir un programmeur très fort.
  • Puis-je fusionner les systèmes d'exploitation Windows et Android?
    Vous pouvez, mais ce sont deux systèmes d'exploitation différents et cela nécessiterait beaucoup d'expérience et de travail en programmation. Ainsi, à moins que vous ne soyez capable de faire la programmation, ne l'essayez pas.
  • Quelles sont les compétences essentielles pour développer un système d'exploitation?
    Vous avez besoin de BEAUCOUP de connaissances concernant l'assemblage et un langage de bas niveau, tel que C. Vous aurez également besoin de connaissances approfondies sur la gestion de la mémoire et devrez être capable de gérer les connexions avec les périphériques et les périphériques.
  • Puis-je faire cela si je n'ai aucune expérience en programmation?
    Seulement si vous êtes prêt à apprendre beaucoup. Vous aurez besoin d'une compréhension complète d'au moins le code d'assemblage et de la motivation pour en savoir plus. Construire votre propre système d'exploitation n'est pas une mince affaire.

Les commentaires (6)

  • wvercammen
    Je veux créer un OS. Je connais quelques langages de programmation, mais c'est tout.
  • lindadrianna
    Très détaillé et a fait un excellent travail, avec un tutoriel étape par étape.
  • rubenbeahan
    J'ai appris comment un OS est fait. Merci.
  • david06
    Il a détaillé pour moi ce qu'il fallait faire pour cela.
  • shickle
    J'aime les étapes, les astuces et les avertissements. Ces trois choses vous aideront. Merci, guide, de nous donner ces connaissances.
  • bernardmartel
    Je ne pensais pas qu'un article de guide serait un jour sérieux!
FacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail