v2.11.0 (5790)

Programme d'approfondissement - INF559 : Architecture des ordinateurs et systèmes d'exploitation

Domaine > Informatique.

Descriptif

Nous expliquerons les concepts fondamentaux qui sont à la base de tous les systèmes informatiques et nous montrerons comment ces idées affectent la correction, la performance et l'utilité de n'importe quel programme d'application.

Ce cours sert d'introduction aux étudiants qui vont ensuite développer des matériels et des logiciels systèmes. Mais il pousse aussi les étudiants à devenir les rares programmeurs qui savent comment les choses fonctionnent et comment les réparer lorsqu'elles tombent en panne. Ce n'est pas un cours réservé aux geeks, c'est un cours pour tous les programmeurs !

 

TD : Les TD sont le coeur de ce cours et ils illustrerons comment dans la pratique quotidienne de la programmation. Entre autre choses, nous ferons de la rétro-ingénierie sur un programme binaire, mettrons en oeuvre un dépassement de tampon, optimiserons une architecture de processeur et réaliserons notre propre allocateur de mémoire.

Prérequis : Les étudiants doivent être familiarisé avec la programmation. Toute expérience avec les langages C ou C++ est un plus, mais si vous n'avez qu'une expérience avec Java, nous vous aiderons. Nous n'attendons aucune expérience antérieure du hardaware, du langage machine ou de la programmation en langage d'assemblage.

Langue : Les cours son en français ou anglais, selon la préférence des étudiants

Evaluation : Les labos sont notés + un examen final écrit

Format des notes

Numérique sur 20

Littérale/grade réduit

Pour les étudiants du diplôme M1 Fondements de l'Informatique MPRI

L'UE est acquise si note finale transposée >= C
  • Crédits ECTS acquis : 5 ECTS

Pour les étudiants du diplôme Non Diplomant

L'UE est acquise si note finale transposée >= C
  • Crédits ECTS acquis : 5 ECTS

Pour les étudiants du diplôme M1 Innovation, Entreprise et Société

Le rattrapage est autorisé (Note de rattrapage conservée)
    L'UE est acquise si note finale transposée >= C
    • Crédits ECTS acquis : 5 ECTS

    La note obtenue rentre dans le calcul de votre GPA.

    Pour les étudiants du diplôme M1 PDS - Parallel and Distributed Systems

    Le rattrapage est autorisé (Note de rattrapage conservée)
      L'UE est acquise si note finale transposée >= C
      • Crédits ECTS acquis : 5 ECTS

      Pour les étudiants du diplôme M1 IGD - Interaction, Graphic and Design

      Le rattrapage est autorisé (Note de rattrapage conservée)
        L'UE est acquise si note finale transposée >= C
        • Crédits ECTS acquis : 5 ECTS

        Pour les étudiants du diplôme M1 Cyber - Cybersecurity

        Le rattrapage est autorisé (Note de rattrapage conservée)
          L'UE est acquise si note finale transposée >= C
          • Crédits ECTS acquis : 5 ECTS

          Pour les étudiants du diplôme M1 Système Cyber Physique

          Le rattrapage est autorisé (Note de rattrapage conservée)
            L'UE est acquise si note finale transposée >= C
            • Crédits ECTS acquis : 5 ECTS

            Pour les étudiants du diplôme MScT-Internet of Things : Innovation and Management Program (IoT)

            Le rattrapage est autorisé (Note de rattrapage conservée)
              L'UE est acquise si note finale transposée >= C
              • Crédits ECTS acquis : 4 ECTS

              La note obtenue rentre dans le calcul de votre GPA.

              Pour les étudiants du diplôme M1 HPDA - High Performance Data Analytics

              Le rattrapage est autorisé (Note de rattrapage conservée)
                L'UE est acquise si note finale transposée >= C
                • Crédits ECTS acquis : 5 ECTS

                Pour les étudiants du diplôme M2 HPDA - High Performance Data Analytics

                Le rattrapage est autorisé (Note de rattrapage conservée)
                  L'UE est acquise si note finale transposée >= C

                    Pour les étudiants du diplôme M2 PDS - Parallel and Distributed Systems

                    Le rattrapage est autorisé (Note de rattrapage conservée)

                      Pour les étudiants du diplôme Titre d’Ingénieur diplômé de l’École polytechnique

                      Le rattrapage est autorisé (Note de rattrapage conservée)
                        L'UE est acquise si note finale transposée >= C
                        • Crédits ECTS acquis : 5 ECTS

                        La note obtenue rentre dans le calcul de votre GPA.

                        Pour les étudiants du diplôme MScT-Cybersecurity : Threats and Defenses

                        Le rattrapage est autorisé (Note de rattrapage conservée)
                          L'UE est acquise si note finale transposée >= C
                          • Crédits ECTS acquis : 4 ECTS

                          Pour les étudiants du diplôme Programmes d'échange internationaux

                          Le rattrapage est autorisé (Note de rattrapage conservée)
                            L'UE est acquise si note finale transposée >= C
                            • Crédits ECTS acquis : 5 ECTS

                            La note obtenue rentre dans le calcul de votre GPA.

                            Programme détaillé

                            Ce cours couvrira la plupart des interfaces clés entre les programmes d'utilisateur et bare-metal, y compris :

                            • La représentation et manipulation des informations

                            Nous abordons l'arithmétique informatique, en mettant l'accent sur les propriétés des représentations non signées et en complément à deux qui affectent les programmeurs. Une bonne compréhension de l'arithmétique informatique est essentielle pour écrire des programmes fiables : le débordement arithmétique est une source courante d'erreurs de programmation et de vulnérabilités en matière de sécurité.

                             

                            • Représentation des programmes au niveau des machines

                            Nous apprenons à lire un code machine x86-64 généré par un compilateur C. Nous abordons l'ensemble d'instrucitons de base et la mise en oeuvre des procédures, y compris l'allocation de la pile, les conventions d'utilisation des registres et le passage de paramètres. Nous abordons la manière dont différentes structures de données sont attribuées et obtenues. Nous utilisons également la vue des programmes au niveau des machines comme moyen de comprendre les vulnérabilités les plus fréquentes de code de sécurité, comme le dépassement de tampon.

                             

                            • Architecture de processeur

                            Nous abordons les éléments de logique et séquentielle puis nous montrerons comment ces éléments peuvent être combinés dans un chemin de données qui exécute un sous-ensemble simplifié de l'ensemble d'instructions x86-64. Nous commencerons par la conception d'un chemin de données , très symple mais pas très rapide, et nous allons ensuite introduire le pipeline, où les différentes étapes nécessaires au traitement d'une instruction sont mises en œuvre en tant qu'étapes distinctes et peuvent être exécutées en parallèle. Le dernier pipeline du processeur en cinq étapes sera plus proche des architectures modernes, et nous montrerons comment un programmeur peut accélérer son code en augmentant le parallélisme d'instructions caché dans ses programmes.

                             

                            • La hiérarchie de mémoire

                            La mémoire système n'est pas un linéaire avec un temps d'accès uniforme. En pratique, une mémoire système est une hiérarchie de périphériques de stockage avec différentes capacités, coûts et temps d'accès. Nous abordons les différents types de mémoires RAM et ROM et la géométrie et l'organisation de disque magnétique et de SSD. Nous décrirons comment ces périphériques de stockage sont arrangés dans une hiérarchie et comment cette hiérarchie est rendue possible par le principe de localité. Nous montrerons comment améliorer la performance des programmes d'application en améliorant leur localité temporelle et spatiale.

                             

                            • Le structure de contrôle exceptionnel

                            Nous allons ici au-delà du modèle à programme unique en introduisant le concept général de structure de contrôle exceptionnel. Nous abordons des exemples de structure de contrôle exceptionnel qui existe à tous les niveaux du système, allant des exceptions et interruptions matérielles de faible niveau en passant par des changements de contextes entre processus concurrents, des changements brusques de structure de contôle causés par la réception de signaux kernels, et les sauts non-locaux en C qui brisent la discipline de la pile.

                             

                            • Mémoire virtuelle

                            L'espace de mémoire virtuelle est juste un tableau de octets que le programme peut dubdiviser en différentes unités de stockage. Cependant nous montrerons comment différents processus simultanés peuvent utiliser chacun une série d'adresses identiques, en partageant certaines pages mais en ayant des copies individuels des autres. Cela aide le programmeur à comprendre les effets des programmes contenant des erreurs de référencement de la mémoire, telles que les fuites de stockage et les références de pointeurs non valides.

                            Veuillez patienter