Puisque le programme est rangé en mémoire comme une donnée, un…
Exercice supplémentaire · niveau 3 (difficile) · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Au plus près du matériel
Énoncé
Puisque le programme est rangé en mémoire comme une donnée, un programme peut modifier ses propres instructions pendant qu'il s'exécute.
- Expliquer comment cela permettrait de fabriquer une boucle sans adressage indirect.
- Citer deux raisons pour lesquelles c'est aujourd'hui proscrit.
- Quel dispositif des systèmes actuels l'interdit matériellement ?
Corrigé
1. L'instruction CHARGE R2, 30 est, en mémoire, un mot dont une partie code l'adresse . Un programme qui ajoute à ce mot transforme l'instruction en CHARGE R2, 31. En bouclant, il lit successivement , , … : on obtient l'effet de l'adressage indirect en modifiant le code lui-même. C'est ainsi que procédaient réellement les premières machines, et c'est la conséquence la plus directe de l'idée de von Neumann.
2. Deux raisons, de nature différente :
- On ne peut plus lire le programme. Le texte affiché ne dit plus ce que la machine exécutera : le débogage, les tests et la relecture perdent leur sens. Le programme n'est pas relançable non plus — au second appel, il commence dans l'état où le premier l'a laissé.
- C'est la porte d'entrée des attaques. Si des données peuvent devenir du code, il suffit à un attaquant de faire écrire ses octets au bon endroit pour les faire exécuter. C'est le mécanisme d'une grande partie des failles de sécurité connues.
3. Le bit « pas d'exécution » (NX), porté par le matériel de gestion de mémoire : chaque page de mémoire est marquée exécutable ou modifiable, jamais les deux. Le processeur refuse alors d'exécuter ce qui vient d'une zone de données.
La leçon : l'idée fondatrice du modèle — programme et données dans la même mémoire — est aussi sa faiblesse. Soixante-quinze ans plus tard, on la conserve, et on en rétablit la séparation par une protection ajoutée par-dessus.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.