{{{ #!html

Architecture Logicielle et Matérielle des Ordinateurs v2 (ALMO2)

}}} [[PageOutline]] = Planning * Ce module ouvrira en septembre 2020 = Objectifs du module * Le but de ce module est d'expliquer en détails comment plusieurs programmes peuvent s'exécuter indépendamment sur un ordinateur multicores à mémoire virtuelle. * Le module introduit **progressivement** * les composants matériels * et les services du système d'exploitation. * L'architecture matérielle est émulée au bit et au cycle près pour une exécution du code depuis le signal reset (full system emulation). * Il y a un TP par semaine : * Le premier code exécuté est un simple programme en assembleur affichant "Hello World !" sur un terminal sans aucun système d'exploitation. * Le dernier code exécuté est constitué de deux programmes indépendants s'exécutant chacun dans leur espace de mémoire virtuelle au-dessus d'un système d'exploitation POSIX like. * Le module doit permettre de répondre aux questions suivantes (liste non exhaustive) : * Comment démarre une machine ? * Quel est le rôle d'un système d'exploitation et quels services propose-t-il ? * Qu'est-ce qu'un cache de mémoire ? * Qu'est-ce qu'un contrôleur de périphérique, et comment l'utiliser ? * Qu'est-ce qu'un pilote de périphérique ? * Comment exécuter plusieurs programmes sur un seul processeur ? * Comment plusieurs processeurs peuvent-ils se partager le même espace d'adressage ? * Pourquoi chaque programme doit avoir un espace d'adressage propre et comment ? * Lorsqu'on frappe une touche du clavier, comment le caractère s'affiche-t-il à l'écran ? = Prérequis * Une bonne connaissance du langage C est nécessaire puisque le module propose d'écrire un système d'exploitation depuis le début. * Une connaissance de l'assembleur MIPS32 est aussi importante, mais les principes de ce langage et les conventions d'usage pour l'écriture des fonctions sont rappelés la première semaine. {{{ #!protected = Plan du cours = Plan des étapes 1. '''[wiki:S01 premier programme assembleur]'''[[BR]] The first stage is to understand how to make the machine living and make it write "hello World !" on a terminal. The machine just contains at a MIPS32 core, a memory bank and a TTY console. {{{ #!comment === What are you going to learn ? * What are the minimal components of a computer ? * What is the memory exactly? * What is the memory address space? * What is a device and how to communicate with ? * How to write a program for the MIPS core? * Assembler code that is the basic language of the MIPS? === Architecture * What is a MIPS32 core ? * What is a memory bank ? * What is a TTY console ? * What is a program ? }}} == SO2 : première fonction = Documents