Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 624
    Points : 21 565
    Points
    21 565

    Par défaut [Tutoriel] Pépin OS : apprendre à réaliser son propre système d'exploitation

    Réaliser son propre système d'exploitation
    La base de la construction du noyau de Pépin OS

    Bonjour,

    Je vous présente un tutoriel de Michelizza :



    Programmer le noyau d'un système d'exploitation est un très bon moyen pour en comprendre le fonctionnement, et c'est dans cette optique que Michelizza a commencé le développement de Pépin. Ce tutoriel tente de guider le programmeur dans ses premiers pas en décortiquant la base de la réalisation d'un noyau et en en présentant les composantes élémentaires.


    Une partie du noyau est codée en Assembleur i386 et le reste est codé en langage C. La maîtrise de ce dernier ainsi que la connaissance des notions de base en Assembleur sont donc un préalable à la compréhension de ce tutoriel.

    À lire également :



    Et vous ?
    Que pensez-vous de ce tutoriel ?
    Avez-vous déjà touché à la réalisation d'un OS, ou seriez-vous tenté(e) de vous lancer ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2014
    Messages : 18
    Points : 22
    Points
    22

    Par défaut Excellent

    C'est en suivant ton tutoriel sur ton site que j'ai commencé le développement d'un OS, il m'a permis de comprendre certain mécanisme et de m'initier à la programmation d'un OS. Ce tuto à été un point de départ de qualité pour moi et je suis vraiment content de le retrouver sur ce site ! J'espère que ton excellent travail pourra en inspirer plus d'un.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 624
    Points : 21 565
    Points
    21 565

    Par défaut

    Merci pour l'auteur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre éprouvé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    février 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : février 2004
    Messages : 564
    Points : 1 146
    Points
    1 146

    Par défaut

    Quel boulot! Bravo et merci du partage.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2013
    Messages : 14
    Points : 1
    Points
    1

    Par défaut OS en assembleur 8086...

    Bonjour

    Du TRES bon travail mais je préfère l'asm sur 8086 au c

    Donc le site de MikeOS qui n'a pas la même approche ....et j'utilise qemu qui ne demande pas de fichier texte pour le paramétrer.

    Je suis sur Debian...qui n'est pas trop mauvais dans son genre...

    BozoKernel en assembleur est aussi excellent....


    Cordialement.

  6. #6
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 393
    Points : 7 171
    Points
    7 171

    Par défaut

    S'il y a bien un assembleur qui me donne envide d'écrire du C , c'est bel et bien le x86 :p
    Autant le M68000 et le 6502 je les trouve sympa a programmer en asm !

  7. #7
    Membre éclairé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    juillet 2002
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juillet 2002
    Messages : 269
    Points : 651
    Points
    651

    Par défaut

    J'ai enfin pris le temps d'y jeter un œil, super tuto ! Bravo!

    Ça me donne envie de m'y remettre ... je vais encore manquer de sommeil ...

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2010
    Messages : 135
    Points : 154
    Points
    154

    Par défaut

    salut,
    au niveau de cette partie, http://michelizza.developpez.com/rea...systeme/#LIV-C

    je n'arrive pas à comprendre pourquoi l'auteur a choisie ces valeur pour le DS : 0x10


    concernant maintenant le CS, je pense que le programme kernel est logé à l'adresse 0x1000 alors pourquoi il a fait : jmp dword 0x8:0x1000
    c'est quoi ce 0x8 et d'ou vient elle ? !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    next:
        mov ax, 0x10        ; segment de donne
        mov ds, ax
        mov fs, ax
        mov gs, ax
        mov es, ax
        mov ss, ax
        mov esp, 0x9F000    
     
        jmp dword 0x8:0x1000    ; réinitialise le segment de code
    merci

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 624
    Points : 21 565
    Points
    21 565

    Par défaut

    La valeur de DS correspond au descripteur de segment de données.

    L'instruction jmp dword 0x8:0x1000 permet de mettre à jour le TLB (Translation Lookaside Buffer), cache de la MMU.

    Relis-bien la partie 4 A.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2010
    Messages : 135
    Points : 154
    Points
    154

    Par défaut

    merci pour la réponse,

    Citation Envoyé par chrtophe Voir le message
    La valeur de DS correspond au descripteur de segment de données.
    oui j'ai compris que la valeur de DS correspond au descripteur de segment de données mais je veux just savoir si la valeur 0x10 est choisie au hazard par l'auteur ou qu'il s'est basé sur quelque chose pour prendre cette valeur


    Citation Envoyé par chrtophe Voir le message
    La valeur de DS correspond au descripteur de segment de données.

    L'instruction jmp dword 0x8:0x1000 permet de mettre à jour le TLB (Translation Lookaside Buffer), cache de la MMU.

    Relis-bien la partie 4 A.
    de même pour le CS, il a choisie la valeur 0x8 pour l'initialiser , est-il un choix ou s'est il basé sur un calcul ou des contraintes

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2010
    Messages : 135
    Points : 154
    Points
    154

    Par défaut

    voila j'ai compris
    ça pourrait aider d'autre, pour expliquer alors, je disais que cela provenait de la taille des sélecteurs qui est de 8 octet,

  12. #12
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 624
    Points : 21 565
    Points
    21 565

    Par défaut

    0x8 correspond au 1er descripteur utilisable, le 1er devant rester vide. Un descripteur fait 8 octets. L'auteur aurait très bien pu utiliser 0x10 pour CS et 0x18 pour DS et donc ne pas utiliser le 1er descripteur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  13. #13
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2017
    Messages : 50
    Points : 92
    Points
    92

    Par défaut ERREUR

    Tu as marqué .début ligne 39 du premier code au lieu de .debut !

  14. #14
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 624
    Points : 21 565
    Points
    21 565

    Par défaut

    C'est corrigé. Merci.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  15. #15
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2017
    Messages : 50
    Points : 92
    Points
    92

    Par défaut

    Et la commande de Windows qui peut remplacer "cat bootsect /dev/zero | dd of=floppyA bs=512 count=2880" est "copy bootsect/B floppyA.img /Y". Il faudra alors utiliser la commande "qemu-system-i386 -boot a -fda floppyA.img".

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/04/2016, 14h53
  2. Réponses: 0
    Dernier message: 20/10/2015, 17h46
  3. Créer son propre système de fichiers
    Par L'immortel dans le forum Programmation d'OS
    Réponses: 15
    Dernier message: 15/12/2013, 23h16
  4. Réaliser son propre CMS ?
    Par soony dans le forum Outils
    Réponses: 4
    Dernier message: 26/08/2007, 15h06
  5. Utiliser son propre système d'éclairage
    Par nicoenz dans le forum OpenGL
    Réponses: 6
    Dernier message: 07/05/2007, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo