Ce projet est ma réponse aux expériences de support de la troisième édition de "Compréhension approfondie des systèmes informatiques" et aux notes que j'ai écrites. Les fichiers expérimentaux se trouvent dans le répertoire labs et proviennent de Lab Assignments.
Contient tous les fichiers de laboratoire, ainsi que les documents de référence fournis par la CMU, et inclut également les fichiers de solution que j'ai écrits. Mon environnement expérimental est Ubuntu 16.04 amd-64, où la source enregistre les fichiers originaux de tous les laboratoires ;
Voici les notes que j'ai écrites :
Cela implique des opérations sur les bits, le complément à deux et les nombres à virgule flottante, etc., qui sont toutes des questions de programmation en langage C
Le démantèlement des bombes binaires peut grandement améliorer votre capacité à lire le code assembleur.
Ce laboratoire implique principalement la randomisation de la pile, les méthodes de protection de la pile telles que l'inexécutabilité, le débordement de pile, les attaques ROP, etc.
Le laboratoire d'architecture implique le jeu d'instructions Y86-64
, la mise en œuvre de SEQ et PIPE et l'optimisation du programme. Vous pouvez vous familiariser avec le langage d'assemblage et matériel HCL
.
Ce laboratoire a été remplacé par Cache Lab à la CMU. Étant donné que Cache Lab est plus difficile, vous pouvez d'abord pratiquer ce laboratoire. Sur la base des chapitres 5 et 6 du livre, le programme a été optimisé, principalement en utilisant des méthodes telles que le blocage de boucles pour éliminer les échecs de cache et éliminer les erreurs de prédiction de branchement.
La partie A nécessite l'écriture d'un simulateur de cache et la partie B nécessite l'optimisation de la fonction de transposition matricielle pour réduire le nombre d'échecs de cache. Cet atelier peut approfondir votre compréhension de la mise en cache. La partie A a été écrite.