Changes between Version 2 and Version 3 of Archi-1-TD10


Ignore:
Timestamp:
Dec 18, 2021, 4:53:10 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TD10

    v2 v3  
    2121
    2222
    23 Cette page décrit la séance complète : partie TD et partie TP. Elle commence par la partie TD avec des questions ou des exercices à faire sur papier, réparties dans 4 sections. Certaines questions de sections différentes sont semblables, c'est normal, cela vous permet de réviser. Puis, dans la partie TP, il y a des questions sur le code avec quelques exercices de codage simples à écrire et à tester sur le prototype. La partie TP est découpée en 4 étapes. Pour chaque étape, nous donnons (1) une brève description avec une liste des objectifs principaux de l'étape, (2) une liste des fichiers avec un bref commentaire sur chaque fichier, (3) une liste de questions simples dont les réponses sont dans le code, le cours ou le TD et enfin (4) un petit exercice de codage.
    24 
    25 **IMPORTANT\\Avant de faire cette séance, vous devez avoir lu les documents suivants** :
    26 * [wiki:AS5-TME9 Séance de TME sur le démarrage du prototype] : ''obligatoire''
    27 * [htdocs:cours/AS5-10-4p.pdf Cours sur l'exécution d'une application en mode user] : ''obligatoire''
    28 * [htdocs:cours/doc_MIPS32.pdf Document sur l'assembleur du MIPS et la convention d'appel des fonctions] : ''recommandé, mais déjà lu''
    29 * [wiki:Doc-MIPS-Archi-Asm-kernel Documentation sur le mode kernel du MIPS32] : ''obligatoire''
    30 
    31 
    32 
    33 **Récupération du code du TP**
    34 
    35 
    36 
    37 * Téléchargez **[htdocs:files/tp2.tgz l'archive code du tp2]** et placez là dans le répertoire `$HOME/kO6` 
    38 * Ouvrez un `terminal`
    39 * Allez dans le répertoire `kO6` : **`cd ~/kO6`**
    40 * Décompressez l'archive du tp2 : **`tar xvzf tp2.tgz`**
    41 * Exécutez la commande : **`cd ; tree -L 1 kO6/tp2`**.\\
    42   Vous devriez obtenir ceci :
    43 {{{#!bash
    44 kO6/tp2
    45 ├── 1_klibc
    46 ├── 2_appk
    47 ├── 3_syscalls
    48 ├── 4_libc
    49 └── Makefile
    50 }}}
    51 
    52 
    53 **Objectif de la séance**
    54 
    55 
    56 Cette séance illustre le [htdocs:cours/AS5-10-4p.pdf cours2].
    57 Les applications de l'utilisateur s'exécutent en mode user. Dans la séance précédente, nous avons vu que les registres de commande des contrôleurs de périphériques sont placés dans l'espace d'adressage du processeur. Les adresses de ces registres ont été placées dans la partie de l'espace d'adressage interdite en mode user. Ainsi, une application n'a pas un accès direct aux périphériques, elle doit utiliser des appels système (avec l'instruction `syscall`) pour demander au noyau du système d'exploitation de faire l'accès. C'est ce que nous allons voir.
    58 
    59 Le code est désormais découpé en 4 étapes :
    60 - **`1_klibc`**\\⟶ Le code de boot et `kinit()` avec une librairie de fonctions standard pour le noyau;
    61 - **`2_appk`**\\⟶ La fonction d'initialisation `kinit()` appelle une application mais le noyau n'a pas encore le gestionnaire des appels systèmes;
    62 - **`3_syscalls`**\\⟶ Ajout du gestionnaire des appels système et une application **sans** la librairie de fonctions standards utilisateur (libc);
    63 - **`4_libc`**\\⟶ Ajout de la libc (rudimentaire) et d'une application.
    64 
    65 
    66 
    67 
    68 ==
    69 = A. Travaux dirigés
    70 
    71 
    72 
    73 == A1. Les modes d'exécution du MIPS
     23= 1. Les modes d'exécution du MIPS
     24
    7425
    7526
     
    189140
    190141
    191 == A2. Langage C pour la programmation système
     142
     143= 2. Langage C pour la programmation système
     144
    192145
    193146
     
    327280
    328281
    329 == A3. Passage entre les modes kernel et user
     282
     283= 3. Passage entre les modes kernel et user
     284
    330285
    331286
     
    512467
    513468
    514 == A4. Génération du code exécutable
     469
     470
     471= 4. Génération du code exécutable
     472
     473
    515474
    516475