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 | |