|
Les chargeurs sont des composants cruciaux du logiciel système, chargés de charger les programmes en mémoire et de les préparer à l'exécution. Il en existe plusieurs types, classés de diverses manières :
Catégorisation par méthode de chargement :
* Chargeurs absolus : Ces chargeurs nécessitent que le programmeur spécifie l'emplacement mémoire exact où le programme doit être chargé. Ils sont simples mais peu flexibles et ne sont pas couramment utilisés dans les systèmes modernes. La relocalisation est effectuée manuellement par le programmeur.
* Chargeurs déplaçables : Ces chargeurs gèrent la tâche d'attribution d'adresses mémoire au moment du chargement. Le code du programme est écrit sans adresses mémoire spécifiques et le chargeur attribue des adresses en fonction de la mémoire disponible. C'est beaucoup plus flexible que le chargement absolu. La relocalisation est gérée automatiquement par le chargeur.
* Chargeurs dynamiques : Ces chargeurs reportent le chargement des modules de programme jusqu'à ce qu'ils soient réellement nécessaires lors de l'exécution. Cela améliore l'efficacité en chargeant uniquement les parties nécessaires d'un programme, plutôt que de tout charger à l'avance. Courant dans les systèmes d’exploitation prenant en charge la liaison dynamique. Cela inclut des aspects tels que le chargement paresseux et la compilation juste à temps (JIT).
* Chargeurs Bootstrap : Ce sont les chargeurs initiaux qui démarrent le processus de chargement. Ils sont généralement petits et simples, chargés de charger le noyau du système d'exploitation en mémoire et de lancer son exécution. Résident souvent en ROM (Read-Only Memory).
Catégorisation par liaison :
* Linkers (souvent considérés comme faisant partie de la famille plus large des "loaders") : Ceux-ci combinent des modules de programme compilés séparément en un seul fichier exécutable avant le début du travail du chargeur. Ils résolvent les références externes entre les modules. Le chargeur charge ensuite l'exécutable lié.
Autres catégorisations et considérations :
* Chargeurs de superposition : Utilisé pour les programmes dont la taille dépasse la mémoire disponible. Ils chargent et déchargent différentes parties du programme en mémoire selon les besoins. Il s’agit d’une technique plus ancienne, moins courante aujourd’hui en raison des capacités de mémoire virtuelle.
* Chargeurs spécifiques au matériel : Certains chargeurs peuvent être profondément intégrés à des architectures matérielles spécifiques, gérant une gestion spécialisée de la mémoire ou des opérations d'E/S.
Il est important de noter que ces catégories ne s’excluent pas toujours mutuellement. Par exemple, un chargeur déplaçable pourrait également être un chargeur dynamique. Les fonctionnalités et capacités spécifiques d'un chargeur dépendent fortement du système d'exploitation et de l'architecture matérielle.
|