Personnellement, je veux bien essayer de faire un tuto qui montre pas à pas comment réécrire un allocateur mémoire simple (au hasard, first fit). Si je suis toujours motivé, ça pourra évoluer vers des algorithmes plus compliqués (buddy blocks) voire même vers de la garbage collection (en se mettant dans la peau de quelqu'un qui écrit un interpréteur pour un langage de haut niveau). Mes prérequis seront :
Personnellement, je préférerais des tutoriels sur l'allocation mémoire et les GC, qui expliqueraient la théorie, sans faire la moindre référence à un langage. Un truc qui expliquerait les principes et algorithmes, sans donner d'implémentations, en gros. Un peu comme pour mon tutoriel sur les OS : il n'y a pas le moindre code, et je ne propose pas d'apprendre à coder un OS.
Ça vous inspire quoi ? Quelqu'un est motivé pour faire un tuto qui présente le fonctionnement de la mémoire en général (registres, caches, RAM, disque, puis pile & tas), puis comment on interagit avec en C (malloc, variables locales, le qualificateur register, puis stdio.h et mmap) qui serait un prérequis de mon TP ?
Je veux bien tenter d'écrire un truc sur la gestion du cache, mais ce sera totalement indépendant du C. Du genre le tutoriel qui expliquerait des trucs bien connus comme la différence entre tableaux de structures et structures de tableaux, ou le genre de choses qu'on peut voir sur le blog mechanical sympathy.
Rien que le chapitre sur les algorithmes cache oblivious sera bien abstrait, sans aucun lien avec le C. A la limite, je crois que ce serait plutôt une meilleure idée d'implémenter les algorithmes en question en Python ou en Java histoire de bien faire comprendre que non, contrairement aux idées reçues, ce genre de chose n'est pas limité au langages de bas niveau et au C.
Autre idée de tuto : un cours général sur les fonctions, version bas niveau. Ce cours s'appuierait sur celui concernant la mémoire, montrerait que le code d'une fonction est stockée en RAM (donc qu'on peut faire des pointeurs de fonctions et expliquerait la notion), que les paramètres sont passés sur la pile (et montrerait l'erreur classique de renvoyer l'adresse d'une variable locale), et que c'est ce mécanisme qui permet d'appeler des fonctions C depuis d'autres langages et réciproquement (avec pourquoi pas un exemple ou un TP).
Dans le genre tellement dépendant de l'architecture que tu passeras ton temps à décrire les ABI de chaque ISA sans pouvoir vraiment donner d'explications générales, ça vaut son pesant de cacahouète ! Franchement, je vois pas l’intérêt, et c'est d'ailleurs pour cela que je me suis limité à ce que j'ai écrit dans mon chapitre sur les structures de contrôle de "Fonctionnement d'un ordinateur de zéro".
A la limite, je crois que cela aurait sa place dans un tutoriel d'assembleur, mais pas ailleurs.