Topic outline

  • 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

    • Evaluations : 

      • Évaluation mi-parcours 15/10 - 30mn : Introduction, carte mère, chaîne de compilation, langage d'assemblage et CPU
      • Évaluation terminale 16/12 - 1h30 : culture de l'ingénieur (7pts) et exercice d'analyse de programme assembleur (13pts)

  • QCM - Contrôle Continu

    qcm 220

    Épreuve QCM (Questions à Choix Multiples) de 30 questions pour une durée de 30mn :

    • Thèmes : Carte mère, Compilation et édition des liens (illustration gcc GNU\Linux), langage d'assemblage (illustration gcc GNU\Linux) et architecture CPU (illustration x86)
    • Mode : QCM avec une tentative unique par question
    • Notation : Bonne réponse (100%)  et mauvaise réponse (entre -5-10%)
    • Date : mardi 15/10/2019 de 13h30 (heure d'arrivée en salle) à 14h30
    • Début de l'épreuve sous moodle à 13h45
    • Salles :  
    1. E102 (groupe TP1) - Surveillant : Lacharme P.
    2. E204 (groupe TP2) - Surveillant : Lefebvre P.
    3. E205 (groupe TP3) - Surveillant : Valois M.
    4. E206 (groupe TP4) - Surveillant : descoubes h.

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