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

Discussion: c'est quoi le noyau

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    août 2013
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2013
    Messages : 218
    Points : 53
    Points
    53

    Par défaut c'est quoi le noyau

    bonjour à tous,

    alors j'ai lu de la documentation et je voudrais etre sur d'avoir bien compris.

    Tout le code du noyau est toujours stocké dans la RAM (sauf le code de certains drivers qui peuvent etre chargé dynamiquement)

    Des que l'un de mes programmes en C fait un appel systeme, il y a un saut d'adresse sur le code du noyau qui est stocké dans la RAM ?

    Des que l'un de mes programmes en assembleur, souhaite recupérer une variable dans la RAM, il y a également une interruption et c'est le noyau qui me place la variable dans un registre ?

    Merci d'avance pour vos éclaircissements

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    10 089
    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 : 10 089
    Points : 22 557
    Points
    22 557

    Par défaut

    Des que l'un de mes programmes en C fait un appel systeme, il y a un saut d'adresse sur le code du noyau qui est stocké dans la RAM ?
    oui, c’est à peu près ça.

    Des que l'un de mes programmes en assembleur, souhaite recupérer une variable dans la RAM, il y a également une interruption et c'est le noyau qui me place la variable dans un registre ?
    Si c'est une variable de ton programme, c'est son code assembleur qui place le contenu de ta variable dans un registre.Charger une de tes variables dans un registre ne génère pas d'appel système.
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    août 2013
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2013
    Messages : 218
    Points : 53
    Points
    53

    Par défaut

    Citation Envoyé par chrtophe Voir le message
    Si c'est une variable de ton programme, c'est son code assembleur qui place le contenu de ta variable dans un registre.Charger une de tes variables dans un registre ne génère pas d'appel système.
    Merci pour ta réponse,

    mais il me semblait que le noyau avait un gestionnaire de mémoire ?

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    10 089
    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 : 10 089
    Points : 22 557
    Points
    22 557

    Par défaut

    mais il me semblait que le noyau avait un gestionnaire de mémoire ?
    oui, et ?

    Quand le système créé un processus depuis le chargement d'un exécutable, il réserve la mémoire requise par celui-ci (pour le code, les données constantes ou variables). Il crée un espace d’adressage pour ce processus contenant l'accès à cette mémoire. Ensuite tes variables déclarées sont stockés dans la case mémoire leur étant dédié (ou chargée dans un registre par le code), dans la pile, ou dans le tas en cas d"allocation mémoire durant l’exécution avec malloc.
    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

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    août 2013
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2013
    Messages : 218
    Points : 53
    Points
    53

    Par défaut

    merci beaucoup pour tes réponses chrtophe,

    mais si dans l'un de mes programmes, je vais dans une zone mémoire qui n'appartient pas à mon processus, par exemple je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int tab[2] = {0};
    tab[10000000] = 10;
    alors mon processus est fermé par le noyau ? donc c'est le noyau qui a vu que je n’accédais pas à la bonne zone mémoire mais comment ?

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    10 089
    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 : 10 089
    Points : 22 557
    Points
    22 557

    Par défaut

    Tout simplement car si tu accèdes à une adresse hors de ton espace d'adressage, tu as un segfault. En gros tu lèves une exception CPU (une interruption matérielle sur erreur), qui exécute du code noyau qui est en charge de killer ton processus.
    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

Discussions similaires

  1. [sbadecoder a dit].. C'est quoi pour vous un beau programme?
    Par seb.49 dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 13/02/2004, 11h41
  2. c'est quoi un 'system catalogs' ...
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/12/2003, 17h47
  3. C'est quoi XMLRAD ?
    Par laffreuxthomas dans le forum XMLRAD
    Réponses: 10
    Dernier message: 09/08/2003, 03h42
  4. C'est quoi "Profile" dans le assign du XMLGram ?
    Par Lux interior dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/02/2003, 12h37
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 20h15

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