Aperçu des sections

  • COURS

    gpp-2017

    • Ressources Multimédia :

    http://www.canal-u.tv

    • Publique visé : 1ère année (BAC+3) cycle Ingénieur en spécialité Informatique

    • Présentation : Cet enseignement, intitulé "Architecture et technologie des ordinateurs" est découpé et pensé avec une double approche :

    1. Une première conceptuelle dans laquelle nous nous intéresserons aux architectures génériques des ordinateurs, notamment aux grandes familles de processeurs numériques (GPP, AP, MCU, DSP, etc) et plus spécifiquement à celles s’articulant autour de CPU. Nous nous intéresserons également à certains services logiciels génériques proposés par une distribution logicielle et système d'exploitation. Mots clés : CPU, mémoire, bus, périphériques, cache, pipeline, registres, segmentation logique, pagination, allocations mémoire (automatique, statique et dynamique), pile, tas, etc

    2. Une seconde Applicative sur des technologies actuelles du marché. Pour les aspects matériels, notre choix s'est naturellement tourné vers les architectures Intel, leader des architectures compatibles x86/x64 (desktop, laptop, etc). Pour les aspects logiciels, nous développerons sur système GNU\Linux. Linux étant le système d'exploitation également majoritairement rencontré à notre époque en terme de volumes (systèmes embarqués, serveurs, stations de calcul, ordinateurs personnels, etc). Mots clés : 8086, 80x86, IA-32, Intel 64, x86, x64, extensions vectorielles MMX/SSE/AVX/AEX, exceptions matérielles, système de fichiers et arborescence distribution GNU\linux, gcc (as, ld et ar), signaux UNIX, etc

    • Séquencement : 

      • Cours  présentiel 26/10 - 3h 
        • A la maison : visionnage vidéos "carte mère", "outils de compilation" et "langage d'assemblage"
        • Devoir à la maison : Compilation et édition des liens
      • Cours présentiel 7/11 - 2h 
        • A la maison : visionnage vidéo "CPU"
      • Évaluation mi-parcours 09/11 - 30mn : Introduction, carte mère, chaîne de compilation, langage d'assemblage et CPU
        • A la maison : visionnage vidéo "mémoire". Vidéo facultative "Pipeline famille Sandy Bridge"
      • Début des TP mi-novembre
      • Cours présentiel 26/11 - 2h 
      • Évaluation terminale semaine d'examen début Janvier - 1h30 : culture de l'ingénieur (8pts) et exercice d'analyse de programme assembleur (12pts)

  • TRAVAUX PRATIQUES

    Durée : 10h - 5x2h


    Objectifs : L'objectif de cette trame TP, basée sur de l'analyse de code, est de découvrir les principaux mécanismes de gestion mémoire (allocations statique, automatique et dynamique) et de gestion des exceptions réalisés conjointement par l'architecture matérielle, le système d'exploitation, les outils de développement à la compilation et potentiellement l'applicatif. Cet enseignement apporte des compétences systémiques de base (hacking) en amenant l'élève ingénieur aux portes de l'expertise, notamment en langage C, et se trouve être complémentaire à l'enseignement d'initiation à la programmation réalisé sur ce même langage. Rappelons que le langage C reste majoritairement utilisé à notre époque dans les couches basses des systèmes (systèmes embarqués, systèmes d'exploitation, exécutifs temps réel, etc). Nous nous intéresserons par exemple aux principaux mots clés, qualificateurs, classes de stockage et analyserons les impacts réels sur un code produit (register, inline, static, restrict, const, intrinsics, etc).

    Plan :

    1. Allocations automatiques et gestion de la pile

    1.1. Fonction main
    1.2. Variables locales non initialisées
    1.3. Variables locales initialisées
    1.4. Appel de fonction
    1.5. Limites de la pile

    2. Allocations statiques et fichier ELF

    2.1. Variables globales
    2.2. Variables locales statiques
    2.3. Chaînes de caractères

    3. Allocations dynamiques et gestion du tas

    3.1. Gestion du tas
    3.2. Limites du tas

    4. Exceptions matérielles et signaux UNIX

    4.1. Lecture seule
    4.2. Défaut d'alignement
    4.3. Division par zéro
    4.4. Debug
    4.5. Pointeur nul
    4.6. Signal UNIX

    5. Gestion de l'unité de pagination (Paged MMU)