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

Hardware Discussion :

CPU utilisation pour traduire les adresses


Sujet :

Hardware

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut CPU utilisation pour traduire les adresses
    Bonjour,

    J'aimerais savoir si le CPU est utulisé quand un programme est chargé du disque dur dans la RAM.
    Par exemple j'ai un fichier objet hello_world (après compilation de hello_world.c). Pour l'instant, il est stocké sur le disque dur. Quand je vais l'exécuter (./hello_world) il va être chargé dans la RAM (loading) . supposons qu'il était stocké en 0x88888 dans le disque dur, dans la RAM il va être en 0x66666. Afin de faire la translation d'adresse, est ce qu'on utilise le CPU ?

    Merci par avance

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 251
    Points
    23 251
    Billets dans le blog
    10
    Par défaut
    Bonsoir

    Cela s'appelle la DMA ou accès direct à la mémoire.

    Si les données ne sont pas traitées elles utiliseront la DMA pour aller vers la mémoire RAM, s'il y a un traitement elles passeront par le processeur.

    Tu doubles clic sur un fichier Word un point doc, le fichier n'est pas exploitable seul, il faut pour cela utiliser un exécutable qui s'appelle Winword.exe.

    Il y a donc un traitement du fichier doc par l'exécutable Winword.exe tout ceci passe donc par le processeur.

    Voici ce que dit Wikipédia sur la DMA :

    L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour lancer et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

    On l'oppose ainsi à des techniques de polling où le microprocesseur doit attendre chaque donnée.

    Le DMA est nécessaire pour conserver la fluidité d'utilisation d'un système multitâche lors de l'accès à des périphériques, les disques durs par exemple. En effet, en l'absence de DMA, le système est presque bloqué pendant les transferts de données. Par ailleurs, pour des périphériques rapides, il est impossible de transférer chaque donnée par une interruption. Une alternative est que le périphérique ait une mémoire tampon partagée avec le système, dont le remplissage est signalé par une interruption. Cet arrangement, utilisé sur certains contrôleurs de réseau, induit cependant un surcoût en raison de la copie supplémentaire à faire.

    On parle de DMA maître du bus (DMA busmaster) quand le périphérique qui fait du DMA peut adresser lui-même les données sur le bus système, et de scatter-gather quand un même transfert peut porter sur une succession de plusieurs zones mémoires. Cette dernière fonctionnalité est pratique pour les systèmes à mémoire virtuelle, car un tampon situé à des adresses contiguës en mémoire virtuelle est en général formé de plusieurs blocs de mémoire vive.

    Pendant le fonctionnement du DMA, celui-ci entre parfois en conflit avec le processeur, les mémoires ne pouvant effectuer par définition qu'un accès par cycle (puisque c'est la définition même du cycle). Le DMA ne pouvant pas forcément attendre aussi longtemps que le processeur (qui ne risque pas, lui, de perdre de l'information au vol), il a la priorité d'accès, technique qui se nomme le vol de cycle.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Merci bien Jean Michel

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par router_ Voir le message
    J'aimerais savoir si le CPU est utulisé quand un programme est chargé du disque dur dans la RAM.
    Par exemple j'ai un fichier objet hello_world (après compilation de hello_world.c). Pour l'instant, il est stocké sur le disque dur. Quand je vais l'exécuter (./hello_world) il va être chargé dans la RAM (loading) . supposons qu'il était stocké en 0x88888 dans le disque dur, dans la RAM il va être en 0x66666. Afin de faire la translation d'adresse, est ce qu'on utilise le CPU ?
    si tu as compilé un programme il est sauvegardé sur disque dur.
    Si tu l'exécutes tu utiliseras obligatoirement le CPU...
    la translation dont tu parles c'est le système d'opération qui va lire dans la table d'allocation des fichiers et le répertoire système du disque ( FAT et Directory en anglais ) où est stocké précisément le fichier.
    Ensuite chaque fichier a des attibuts par exemple si c'est un exécutable,un répertoire etc...
    si l'OS voit que c'est un exécutable il le charge en mémoire;
    toutes les opérations de l'OS passent par le CPU.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel pattern utiliser pour changer les possibilités d'un objet
    Par lichman dans le forum Design Patterns
    Réponses: 4
    Dernier message: 05/10/2007, 14h02
  2. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  3. Quelle méthode utiliser pour traiter les images
    Par babozfr dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 02/03/2007, 15h40
  4. requête pour nettoyer les adresses incomplètes
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/02/2007, 10h40
  5. Réponses: 1
    Dernier message: 07/06/2006, 11h44

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