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

    [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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre à l'essai
    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

    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre expérimenté
    Quel boulot! Bravo et merci du partage.

  5. #5
    Nouveau Candidat au Club
    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
    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é
    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é
    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

    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Membre habitué
    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é
    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

    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  13. #13
    Membre régulier
    ERREUR
    Tu as marqué .début ligne 39 du premier code au lieu de .debut !

  14. #14
    Responsable Systèmes

    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  15. #15
    Membre régulier
    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".

  16. #16
    Futur Membre du Club
    Erreur de compilation
    Je suis moi bloquer ici https://michelizza.developpez.com/re...e-systeme/#LVI la compilation ne marche pas sous Windows 10 64bit et j'ai essayé aussi sous Parrot (distribution debian) toujours pas aider moi s'il vous plaît

  17. #17
    Responsable Systèmes

    Quel est le chapitre ou tu bloques, et quel est le message d'erreur ?
    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  18. #18
    Futur Membre du Club
    code permettant de charger le boot et d'afficher le texte
    Salut...Salut SVP , lors de la compilation du boot et du noyau je me suis rendu compte que dans le fichier UTIL.INC , c le label afficher qui affiche le message.
    Venant de là , je ne comprend pas comment :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    push ax
    push bx


    peuvent afficher un message ...

    Merci

  19. #19
    Responsable Systèmes

    Peux-tu donner des lignes de codes en plus parce qu'avec les 2 données on pourra aller bien loin.
    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/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  20. #20
    Futur Membre du Club
    Citation Envoyé par chrtophe Voir le message
    Peux-tu donner des lignes de codes en plus parce qu'avec les 2 données on pourra aller bien loin.
    Oui c bon , j'ai trouvé ce qui se passe ...

    Je me dis que ça fonctionne à cause de la tête de lecture du fichier UTIL.INC

    Parce que quand j'ai éssayé de commencer par le label .debut en tête du fichier , ça faisais autre chose.

    En fait c'est de la ma conclusion.

    Ai-je raison ??

###raw>template_hook.ano_emploi###