Le segment de code est une portion de l’espace d’adressage d’un processus virtuel, contenant les instructions a exécuter. Celles-ci sont sous leur forme binaire, en langage machine, après une édition de liens (souvent étape d'une compilation) depuis un code source[1].
Définition
modifierSegment Le terme « segment » provient du concept de «segment de mémoire », une approche historique de la gestion de la mémoire qui a été supplantée par la pagination. Lorsqu’un programme est stocké dans un fichier objet, le segment de code fait partie de ce fichier ; lorsque le chargeur place un programme en mémoire afin qu’il puisse être exécuté, diverses zones de mémoire sont allouées (notamment sous forme de pages), correspondant à la fois aux segments des fichiers objets et aux segments nécessaires uniquement au moment de l’exécution. Par exemple, le segment de code d'un fichier objet est chargé dans un segment de code correspondant en mémoire[1].
Lesegment de code en mémoire est généralement en lecture seule et a une taille fixe ; ainsi, sur les systèmes embarqués, il peut généralement être placé dans une mémoire morte (ROM), sans qu'il soit nécessaire de le charger. Si le segment de code n'est pas en lecture seule, cela signifie que l'architecture en question autorise le code automodifiable. Le code à position fixe ou indépendant de la position peut être partagé en mémoire par plusieurs processus dans des systèmes de mémoire segmentée ou paginée[1],[2]. En tant que région de mémoire, le segment de code peut être placé sous le tas ou la pile afin d'empêcher les dépassements de tas et de pile[3].
Article connexe
modifierNotes et références
modifier- Jason W. Bacon, « Chapter 10. Subprogram Calls and the Stack » [archive du 2 mai 2014], sur cs.uwm.edu, 13 mars 2012 (consulté le 2 mai 2014), Section 10.4. Memory Segments
- ↑ Kai Wang, « Code Segment and Data Segment: Memory Layout of a Program » [archive du 2 mai 2014], sur beingdeveloper.com, 20 septembre 2012 (consulté le 2 mai 2014)
- ↑ Yu-An Tan, Ji-yan Zheng, Yuan-Da Cao et Xue-lan Zhang « Buffer overflow protection based on adjusting code segment limit » (Octobre 2005) (DOI 10.1109/ISCIT.2005.1567023)