Changes between Version 5 and Version 6 of WikiStart


Ignore:
Timestamp:
Nov 12, 2020, 3:22:49 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v5 v6  
    1 = Archi L3 S5 : Architecture des ordinateurs Licence 3 Semestre 5
     1[[PageOutline]]
     2{{{#!html
     3<h1><font size=+2> Architecture des ordinateurs L3 S5
     4}}}
     5
     6Cette page est dédiée aux dernières séances du module Architecture des ordinateurs (LU3NI029).
     7Vous trouverez sur cette page les objectifs généraux de ces séances en lien avec ce que vous avez déjà vu dans les premières séances de l'UE et une explication du principe pédagogique choisi consistant à construire un début de système à partir de rien, et enfin la description des séances.
     8
     9* [wiki:Doc-MIPS-Archi-Externe Architecture externe du MIPS]
    210
    311
    4 Ce site est dédiée aux dernières séances du module Architecture des ordinateur (LU3NI029)
     12== 1. Objectifs
    513
    614
    715
    8 * [wiki:description_dernieres_seances Principes des séances architecture et système]
    9 * [wiki:AS5-TME9 Boot et premier programme en mode kernel]
    10 * [wiki:AS5-TME10 Application simple en mode utilisateur]
    11 * [wiki:AS5-TME11 Gestionnaire d'interruption]
     16Les 8 premières séances de l'UE décrivent l'architecture externe du MIPS (celle visible du programmeur) et la programmation structurée en assembleur (avec des fonctions et une pile). Les programmes réalisés utilisent des structures de données simples telles que les tableaux à une dimension et les enregistrements (les ''struct'' du C) non récursifs. L'accès aux entrées-sorties se fait par des demandes de services en utilisant l'instruction `syscall`. Les programmes sont exécutés sur le simulateur de processeur MARS permettant d'observer l'évolution des registres du processeur et l'évolution des segments de mémoire utilisés par le code, les data et la pile.
    1217
    13 * [wiki:Doc-MIPS-Archi-Externe Architecture externe du MIPS]
     18Il s'avère que ce que fait l'instruction `syscall` n'est pas détaillé et l'architecture de l'ordinateur, au centre duquel se trouve le processeur MIPS, est juste présentée. C'est pourquoi le but des trois dernières séances est d'étudier plus en détail l'architecture d'un ordinateur simple, de type [https://www.wikiwand.com/fr/Microcontr%C3%B4leur microcontrôleur] à base de MIPS, et d'y exécuter une application au-dessus d'un embryon de système d'exploitation qui exécute les appels système, c'est-à-dire les services accessibles par l'instruction `syscall`.
     19
     20Concernant le matériel, il est donc composé d'un processeur MIPS connecté à une mémoire et quelques périphériques. La mémoire contient le code et les données. Les périphériques sont les composants permettant les entrées-sorties (p. ex. le terminal écran-clavier) ou alors les composants offrant un service spécifique (p. ex. le ''timer'' qui compte le temps). Il s'agit d'apprendre à :
     21
     221. manipuler les deux modes d'exécution du processeur (mode ''kernel'' et mode ''user'') ;
     232. communiquer avec les contrôleurs de périphériques grâce à des registres de commandes accessibles dans l'espace d'adressage du processeur en utilisant les instructions ''load''/''store'' (`lw`/`sw`);
     243. utiliser les lignes d'interruption des contrôleurs de périphériques (signal électrique à deux états : ''ON'' et ''OFF'') pour prévenir le processeur d'un événement.
     25
     26Concernant le logiciel, il est écrit en langage C et en assembleur. Il est composé d'un empilement de couches logicielles. Il y a tout d'abord le code de démarrage du processeur (le ''boot''), puis le noyau du système d'exploitation,  puis la bibliothèque système (la ''libc''), et enfin l'application de l'utilisateur. Le code de ''boot'' initialise l'ordinateur. Le noyau gère les ressources matérielles et exécute les appels système (`syscall`). La bibliothèque système (la ''libc'') est un ensemble de fonctions standards tel que `fprintf()` invoquant l'instruction `syscall`. Et enfin, l'application de l'utilisateur est un algorithme utilisant les fonctions de la ''libc''. Il s'agit d'apprendre à :
     27
     281. programmer en langage C et utiliser une chaîne de compilation standard (compilateur + éditeur de liens) via un `Makefile` ;
     292. exécuter les programmes sur un simulateur d'ordinateur complet avec processeur, mémoire et contrôleurs de périphériques ;
     303. comprendre quelques services proposés par un système d'exploitation simples tels que les pilotes de périphériques, le gestionnaire de syscall, l'exécution de plusieurs fonctions en temps partagé (en les exécutant à tour de rôle très rapidement).
     31
     32
     33
     34== 2. Principe pédagogique
     35
     36
     37
     38Pour présenter les concepts des systèmes d'exploitation, la méthode employée en général est ''top-down''.
     39On vous présente les services des systèmes (gestion des fichiers, gestion des processus, gestion des
     40communications interprocessus, etc.), puis on vous présente comment un système open source tel que Linux
     41fait pour rendre ces services. C'est très intéressant, mais le système pris comme base est tellement
     42complexe, qu'il est juste possible de voir qu'une petite partie, et certains étudiants perdent la vue d'ensemble.
     43Pour l'UE d'architecture des ordinateurs, c'est une approche impossible parce qu'elle est trop éloignée
     44de l'architecture matérielle.
     45
     46Si Linux est trop complexe alors pourquoi ne pas prendre un petit système ad hoc, mais en conservant
     47l'approche ''top-down'' ? Oui, cela peut être envisagé, c'est d'ailleurs ce qui a été fait dans un ancien
     48module. Toutefois, c'est encore difficile, parce que pour bien comprendre comment fonctionne un service du
     49système d'exploitation, il faut avoir une vue d'ensemble du système et ce n'est pas simple à présenter.
     50
     51Nous avons choisi, une approche ''bottom-up''. Nous partons d’une feuille blanche, et nous ajoutons progressivement
     52les services en limitant le nombre de fichiers et la taille des codes. Chaque nouveau service qui s'ajoute
     53s'appuie sur les services précédemment construits.
     54
     55Pour conclure, si on devait vous apprendre comment est faite une voiture.
     56L'approche ''top-down'' consiste à prendre une voiture du commerce et à la démonter pour voir de quoi elle est faite.
     57L'approche ''bottom-up'' consiste à assembler des éléments pour construire une toute petite voiture (genre 2CV :-) ).
     58
     59
     60
     61== 3. Fonctionnement des séances
     62
     63
     64
     65Le but des TD est de préparer le travail que vous devez faire dans le TP.
     66L'idée générale des TP est de créer, très progressivement, un tout petit système d'exploitation.
     67Évidemment, dans le temps imparti, il n'est pas envisageable de créer un système complexe.
     68Ce système est petit, mais il se veut simple à comprendre.
     69
     70Toutes les séances sont structurées de la même manière. Chaque séance est découpée en étapes qui doivent être suivies dans l'ordre. Chaque étape est indépendante des autres du point de vue des fichiers, c'est-à-dire qu'elle n'utilise pas les fichiers des étapes précédentes et donc s'il y a des fichiers en commun, ceux-ci sont répliqués. Le code fourni est toujours fonctionnel et il y a toujours un `Makefile` pour produire l'exécutable et le faire tourner sur le simulateur du prototype de l'ordinateur. Le code est très commenté et il n'y a pas — ou peu — de "trous" à remplir.
     71
     72Chaque étape introduit un petit nombre de concepts.
     73Dans la première étape de la première séance, il n'y a que 2 fichiers sources (`hcpu.S` et `kernel.ld`) et 1 `Makefile` simple (de type ''collection de Shell script''). Dans les étapes suivantes, on ajoute progressivement des fichiers et des services.
     74
     75**Le travail demandé pour chaque étape est le suivant :**
     76
     77 1. Il faut répondre à des questions simples portant sur le code et sur l'architecture dans un compte-rendu au format '’Markdown'' prérempli. Un modèle de compte-rendu est téléchargeable sur le site de l'UE. Les réponses aux questions sont en général dans le code ou dans les commentaires du code ou dans les réponses aux questions du TD qui a préparé la séance de TP ou enfin, dans les diapositives du cours.\\
     78    Le but de ces questions est de pointer les difficultés introduites dans l'étape et de les associer à des éléments de réponses vus précédents. Par exemple, dans la première étape, une question est : ''- A quelle adresse démarre le MIPS ?''. La réponse est dans le cours et dans le TD et dans le fichier `ldscript.ld`.
     79
     80 2. Il faut ajouter une fonctionnalité au programme dans un ou plusieurs fichiers et décrire cet ajout dans le compte-rendu. Cet ajout peut nécessiter la création d'un nouveau fichier source.\\
     81    Le but de cet ajout est de s'approprier le code grâce à une petite modification et d'en voir toutes les implications. Par exemple, dans la première étape de la première séance, il est demandé d'afficher deux messages au lieu d'un.
     82
     83
     84
     85
     86== 3. Description des séances
     87
     88
     89
     90===  [wiki:AS5-TME9 → Boot et premier programme en mode kernel]
     91
     92Dans cette séance, il s'agit de comprendre comment un ordinateur simple démarre et comment le programmeur peut interagir avec le monde extérieur via les contrôleurs de périphériques. Il s'agit également d'utiliser le langage C pour les programmes et donc la chaîne de compilation ''GCC'' et il s'agit d'introduire l'usage d'un `Makefile`. Nous décrivons aussi les fonctions C pour les entrées-sorties telles que `printf()` et `gets()`. Pour toutes les étapes, le nom de l'exécutable produit est `kernel.x`.
     93
     94L'architecture de l'ordinateur utilisé dans cette séance est composée d'un processeur MIPS, d'une mémoire multisegment et d'un contrôleur de terminal qui peut contrôler jusqu'à 4 terminaux indépendants.
     95
     96===  [wiki:AS5-TME10 → Application simple en mode utilisateur]
     97
     98Dans cette séance, nous utilisons les deux modes d'exécution du processeur, le mode ''kernel'' et le mode ''user''. En mode ''kernel'', le processeur a droit à toutes les instructions et à tout l'espace d'adressage. En mode ''user'', le processeur est bridé, certaines instructions sont interdites et seule une partie de l'espace d'adressage est autorisé. Nous allons voir comment se passe le passage d'un mode à l'autre. Dans toutes les étapes, le code se répartie dans deux exécutables: `kernel.x` et `user.x`. Nous allons voir en particulier comment fonctionne le gestionnaire d'appel système.
     99
     100=== [wiki:AS5-TME11 → Gestionnaire d'interruption]
     101
     102Dans cette troisième séance, il s'agit de comprendre comment fonctionne le gestionnaire des interruptions. Pour cela, nous allons ajouter dans l'architecture deux autres composants : un timer qui compte le temps (ou ici qui compte les cycles) et un concentrateur d'interruption. Ce concentrateur permet de mixer toutes les lignes d'interruptions des contrôleurs de périphériques pour n'en produire qu'une seule à destination du processeur MIPS.
     103
     104