MIPS User Mode Application Quiz
45 Questions
3 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quel est le rôle principal du gestionnaire de syscall?

  • Optimiser le registre $2 pour un meilleur rendement.
  • Gérer uniquement les erreurs lors des appels systèmes.
  • Trouver et appeler une fonction de service demandée en C. (correct)
  • Exécuter directement le code C sans intermédiaire.
  • Que doivent contenir les registres $4 à $7 lors d'un appel de fonction?

  • Les adresses des variables locales de la fonction.
  • Les arguments de la fonction à appeler. (correct)
  • Des valeurs par défaut à utiliser dans les calculs.
  • Le numéro du service et les réponses des fonctions.
  • Quel est l'emplacement du pointeur de pile pour un appel de syscall?

  • Vers la première case réservée pour le deuxième argument.
  • Sur la dernière case de la pile, après les arguments.
  • Pointant au début de la mémoire allouée pour la fonction.
  • Pointant vers une zone vide de 4 entiers suivis du numéro de service. (correct)
  • Pourquoi le gestionnaire de syscall ajoute-t-il un cinquième argument?

    <p>Pour gérer plusieurs syscalls avec une fonction unique.</p> Signup and view all the answers

    Quel type d'instruction est utilisé pour appeler une fonction et passer le contrôle?

    <p>jal</p> Signup and view all the answers

    Quel est le rôle principal de la fonction kinit() dans l'exécution d'une application utilisateur?

    <p>Initialiser la pile d'exécution du noyau</p> Signup and view all the answers

    À quel moment s'arrête l'exécution d'une application utilisateur simple dans le MIPS?

    <p>Lorsque la fonction exit() est exécutée</p> Signup and view all the answers

    Quelles structures de données le noyau initialise-t-il lors du démarrage de l'application?

    <p>Les variables globales non initialisées</p> Signup and view all the answers

    Quelle fonction est le point d'entrée pour la gestion des services dans le noyau?

    <p>kentry</p> Signup and view all the answers

    Quel est l'objectif principal du schéma présenté dans le cours?

    <p>Expliquer les interactions entre le code boot, le noyau et les applications</p> Signup and view all the answers

    Quelle fonction est initialisée par le noyau après l'appel à kinit()?

    <p>_start()</p> Signup and view all the answers

    Que fait la fonction _start() dans le processus d'exécution d'une application?

    <p>Elle initialise les variables globales</p> Signup and view all the answers

    Quel aspect n'est pas généralement géré par la fonction syscall dans le noyau?

    <p>Interruption du programme</p> Signup and view all the answers

    Quel est le rôle principal d'un Makefile?

    <p>Décrire le processus de construction d'un fichier cible à partir de fichiers source.</p> Signup and view all the answers

    Quelle est la caractéristique des cibles intermédiaires dans un Makefile?

    <p>Elles se basent sur des fichiers sources spécifiques.</p> Signup and view all the answers

    Que produisent les règles dans un Makefile lorsqu'elles sont exécutées?

    <p>Un arbre de dépendances pour les fichiers.</p> Signup and view all the answers

    Que permet un Makefile en termes de modification de fichiers sources?

    <p>La reconstruction partielle du fichier cible lorsque quelques fichiers sources changent.</p> Signup and view all the answers

    Quelle commande est utilisée pour générer la cible finale kernel.x dans un Makefile?

    <p>$(LD) -o $@ -T $^</p> Signup and view all the answers

    Quels fichiers sont presque toujours considérés comme des cibles intermédiaires?

    <p>Fichiers objets (.o).</p> Signup and view all the answers

    À quoi servent les variables automatiques dans un Makefile?

    <p>Elles facilitent la référence aux fichiers dans des règles sans avoir à les nommer explicitement.</p> Signup and view all the answers

    Quel type d'exécutable ne sera pas produit dans la simulation du logiciel décrite?

    <p>Exécutable de démonstration.</p> Signup and view all the answers

    Quelle condition permet à l'adresse X d'être accessible dans l'espace d'adressage MIPS?

    <p>X doit être inférieur à 0x80000000.</p> Signup and view all the answers

    Quel registre du coprocesseur 0 contient l'adresse de l'instruction ayant provoqué un appel au noyau?

    <p>c0_cause</p> Signup and view all the answers

    Quelle est la conséquence de référencer le registre $14 sans préciser s'il appartient au GPR ou au coprocesseur 0?

    <p>On risque de confondre son usage et sa valeur.</p> Signup and view all the answers

    Quel registre du coprocesseur 0 contient le nombre de cycles depuis le démarrage du MIPS?

    <p>c0_count</p> Signup and view all the answers

    Quel est le rôle principal du registre c0_sr?

    <p>Il contient le mode d'exécution et le bit d'autorisation des interruptions.</p> Signup and view all the answers

    Quelles instructions sont utilisées pour manipuler les registres du coprocesseur 0?

    <p>mtc0 et mfc0</p> Signup and view all the answers

    Quel registre c0_epc est désigné par quel numéro?

    <p>$14</p> Signup and view all the answers

    Quel registre contient une adresse mal formée due à un accès non aligné?

    <p>c0_bar</p> Signup and view all the answers

    Quelle est l'adresse en mémoire de __tty_regs_map.read si NTTYS est égal à 2?

    <p>0xd0200018</p> Signup and view all the answers

    Quel est le rôle du mot clé 'extern' dans le contexte de C?

    <p>Il informe que la variable est définie ailleurs.</p> Signup and view all the answers

    Quel est le type de __tty_regs_map selon la déclaration donnée?

    <p>volatile struct tty_s</p> Signup and view all the answers

    À quoi sert le mot clé 'volatile' en C?

    <p>À indiquer que la variable peut changer de valeur à tout moment.</p> Signup and view all the answers

    Quelle est la taille de chaque structure dans le tableau __tty_regs_map?

    <p>16 octets</p> Signup and view all the answers

    Quel élément est situé à l'adresse 0xd0200000 selon la définition de __tty_regs_map?

    <p>Le champ write de la première structure.</p> Signup and view all the answers

    Quel est le contenu exact de la ligne 15 dans le code fourni?

    <p>int status; // adresse d'état du tty</p> Signup and view all the answers

    Quel type de variable est __tty_regs_map déclaré comme étant dans le fichier harch.c?

    <p>Un tableau de structures.</p> Signup and view all the answers

    Quelle instruction permet de copier la valeur du registre c0_epc dans le registre général $8 ?

    <p>mfc0 $8, $14</p> Signup and view all the answers

    Quelle instruction doit être exécutée pour écrire la nouvelle valeur de c0_epc après l'avoir augmentée de 4 ?

    <p>mtc0 $8, $14</p> Signup and view all the answers

    Quel est le rôle du bit 0 du registre status (c0_sr) ?

    <p>Masquer les interruptions</p> Signup and view all the answers

    Que signifie le code 4 dans le champ XCODE du registre cause (c0_cause) ?

    <p>Interruption du matériel</p> Signup and view all the answers

    Dans quelle plage de bits se trouve le code de la cause d'entrée dans le noyau dans le registre cause ?

    <p>Bits 2 à 5</p> Signup and view all the answers

    Quelle instruction doit être utilisée pour augmenter c0_epc de 4 ?

    <p>addiu $8, $8, 4</p> Signup and view all the answers

    Quel est le rôle du bit 4 de l'octet 0 du registre status ?

    <p>Indiquer si le système est en mode utilisateur</p> Signup and view all the answers

    Quel est l'effet de l'instruction 'mtc0 $GPR, $C0' ?

    <p>Déplacer une valeur d'un registre général vers un registre de coprocesseur</p> Signup and view all the answers

    Study Notes

    Application simple en mode utilisateur

    • Le schéma illustre l'exécution d'une application simple dans MIPS, du démarrage du SoC à l'appel de exit().
    • L'objectif est de comprendre les interactions entre le code de démarrage, le noyau, l'application et les bibliothèques.

    Modes d'exécution MIPS

    • Le MIPS propose deux modes d'exécution : kernel et user.
    • Le noyau fonctionne en mode kernel.
    • L'application fonctionne en mode user.

    Espace d'adressage MIPS

    • L'espace d'adressage MIPS est l'ensemble des adresses que le processeur peut atteindre (232 adresses d'octets).
    • Une adresse X est mappée dans l'espace d'adressage si le MIPS peut lire ou écrire à cette adresse.
    • Une adresse supérieure à 0x80000000 n'est accessible qu'en mode kernel.

    Registres du coprocesseur 0

    • Les registres du coprocesseur 0 sont utilisés par le système d'exploitation.
    • c0_sr (registre $12) : contient le mode d'exécution et les autorisations d'interruptions.
    • c0_cause (registre $13) : contient la cause de l'appel au noyau.
    • c0_epc (registre $14) : contient l'adresse de l'instruction qui a provoqué l'appel au noyau ou l'adresse de l'instruction suivante.
    • D'autres registres existent (c0_bar, c0_count, c0_procid).

    Instructions mtc0 et mfc0

    • mtc0 : déplace une valeur d'un registre général vers un registre du coprocesseur 0.
    • mfc0 : déplace une valeur d'un registre du coprocesseur 0 vers un registre général.
    • Seules ces instructions sont utilisables pour manipuler les registres du coprocesseur 0.

    Registre Status (c0_sr)

    • Bits importants :
      • Bit 0 (IE) : Active/désactive les interruptions.
      • Bit 1 (EXL) : Indique si le MIPS est en mode exception.
      • Bits 4 (UM) : Indique si le MIPS est en mode utilisateur.

    Registre Cause (c0_cause)

    • Le champ XCODE contient le code de la cause d'entrée dans le noyau.
    • Codes importants :
      • Code 0 : interruption.
      • Code 8 : syscall.

    Registre EPC (c0_epc)

    • Contient l'adresse de l'instruction qui a déclenché une exception ou un appel système.

    Instructions en mode kernel

    • mtc0, mfc0, eret : sont les trois instructions utilisables en mode kernel.

    Adresse d'entrée noyau

    • Au démarrage, le code de démarrage saute à l'adresse de la fonction kinit().
    • Après le démarrage, l'adresse d'entrée noyau est 0x80000180.

    Passage noyau-application

    • syscall : l'instruction pour demander un service au noyau.
    • eret : l'instruction pour revenir à l'application depuis le noyau.

    Initialisation application

    • La fonction _start initialise les variables globales non initialisées, puis appelle main().
    • Au retour de main(), _start réalise l'appel système exit().

    Placement en mémoire

    • L'éditeur de liens place les fonctions et variables en mémoire.
    • Les fichiers idscript (par exemple kernel.ld ou user.ld) contrôlent le placement.

    Passage noyau-application

    • L'adresse de _start est déterminée par les fichiers idscript.
    • Le noyau peut accéder à l'adresse de _start grâce au idscript.

    Registres $26 et $27

    • Registres généraux (GPR) temporaires utilisés par le noyau.
    • L'utilisateur perd leur valeur si le noyau les modifie.

    Gestionnaire de syscall

    • Le noyau utilise le vecteur de syscall pour gérer les appels.
    • La fonction syscall collecte les arguments et appelle la fonction correspondante.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Ce quiz aborde les concepts fondamentaux liés à l'exécution d'applications simples en MIPS, en explorant le fonctionnement des modes d'exécution et l'espace d'adressage. Il teste également votre compréhension des registres du coprocesseur 0 et des interactions entre les différents composants du système. Préparez-vous à plonger dans l'univers de l'architecture MIPS !

    More Like This

    MIPS Registers Naming Quiz
    8 questions
    MIPS Architecture Overview
    5 questions

    MIPS Architecture Overview

    EnergySavingVuvuzela avatar
    EnergySavingVuvuzela
    Chapitre III: Architecture Mono-cycle ISA MIPS
    15 questions
    Use Quizgecko on...
    Browser
    Browser