IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Programmation d'OS Assembleur Discussion :

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


Sujet :

Programmation d'OS Assembleur

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    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 ?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 25
    Points
    25
    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
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    Par défaut
    Merci pour l'auteur.

  4. #4
    Membre chevronné

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    760
    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 : 760
    Points : 2 095
    Points
    2 095
    Par défaut
    Quel boulot! Bravo et merci du partage.

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 19
    Points : 2
    Points
    2
    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 sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    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 éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    399
    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 : 399
    Points : 1 219
    Points
    1 219
    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
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 146
    Points : 156
    Points
    156
    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
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    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.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 146
    Points : 156
    Points
    156
    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
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 146
    Points : 156
    Points
    156
    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
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    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.

  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 : 21
    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
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    Par défaut
    C'est corrigé. Merci.

  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 : 21
    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".

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut 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


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    Par défaut
    Quel est le chapitre ou tu bloques, et quel est le message d'erreur ?

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 6
    Points : 9
    Points
    9
    Par défaut 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 :
    peuvent afficher un message ...

    Merci

  19. #19
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    Par défaut
    Peux-tu donner des lignes de codes en plus parce qu'avec les 2 données on pourra aller bien loin.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    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 ??

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 EDI, CMS, Outils, Scripts et API
    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