Categorización por método de carga:
* cargadores absolutos: Estos cargadores requieren que el programador especifique la ubicación de memoria exacta donde se debe cargar el programa. Son simples pero inflexibles y no se usan comúnmente en los sistemas modernos. El programador realiza la reubicación manualmente.
* Cargadores reubicables: Estos cargadores manejan la tarea de asignar direcciones de memoria en el momento de la carga. El código del programa está escrito sin direcciones de memoria específicas, y el cargador asigna direcciones basadas en la memoria disponible. Esto es mucho más flexible que la carga absoluta. La reubicación se maneja automáticamente por el cargador.
* Cargadores dinámicos: Estos cargadores aplazan la carga de módulos de programa hasta que realmente se necesitan durante la ejecución. Esto mejora la eficiencia al cargar solo las partes necesarias de un programa, en lugar de cargar todo por adelantado. Común en los sistemas operativos que admiten la vinculación dinámica. Esto incluye aspectos como la carga perezosa y la compilación justo a tiempo (JIT).
* cargadores de bootstrap: Estos son los cargadores iniciales que inician el proceso de carga. Por lo general, son pequeños y simples, responsables de cargar el núcleo del sistema operativo en la memoria e iniciar su ejecución. A menudo reside en ROM (memoria de solo lectura).
Categorización al vincular:
* enlazadores (a menudo considerados parte de la familia "cargador" más amplia): Estos combinan módulos de programa compilados por separado en un solo archivo ejecutable antes de que comience el trabajo del cargador. Resuelven referencias externas entre módulos. El cargador luego carga el ejecutable vinculado.
Otras categorizaciones y consideraciones:
* cargadores superpuestos: Utilizado para programas más grandes que la memoria disponible. Cargan y descargan diferentes partes del programa en la memoria según sea necesario. Esta es una técnica más antigua menos común ahora debido a las capacidades de memoria virtual.
* Cargadores específicos de hardware: Algunos cargadores pueden estar profundamente integrados con arquitecturas de hardware específicas, manejo de la gestión de memoria especializada o operaciones de E/S.
Es importante tener en cuenta que estas categorías no siempre son mutuamente excluyentes. Por ejemplo, un cargador reubicable también podría ser un cargador dinámico. Las funcionalidades y capacidades específicas de un cargador dependen en gran medida del sistema operativo y la arquitectura de hardware.