La carga en cadena es un método que utilizan los programas informáticos para reemplazar el programa que se está ejecutando con uno nuevo, utilizando un área de datos común para transferir información del programa actual al nuevo. Se da en diversas áreas de la informática.
La carga en cadena es similar al uso de superposiciones . Sin embargo, a diferencia de las superposiciones, la carga en cadena reemplaza por completo el programa que se está ejecutando. Las superposiciones generalmente reemplazan solo una parte del programa en ejecución. Al igual que el uso de superposiciones, la carga en cadena aumenta la carga de E/S de una aplicación.
Carga en cadena en programas de gestor de arranque
En los programas de gestión de arranque del sistema operativo , se utiliza la carga en cadena para transferir el control del gestor de arranque a un sector de arranque . El sector de arranque de destino se carga desde el disco , reemplazando el sector de arranque en memoria desde el cual se inició el propio gestor de arranque, y se ejecuta.
Carga en cadena en Unix
En Unix (y en sistemas operativos similares a Unix ), la llamada al sistema exec() se utiliza para realizar la carga en cadena. La imagen del programa del proceso actual se reemplaza por una imagen completamente nueva, y el hilo actual comienza la ejecución de dicha imagen. El área de datos común comprende las variables de entorno del proceso , las cuales se conservan durante la llamada al sistema.
Carga en cadena en Linux
Además de la carga en cadena a nivel de proceso mediante exec(), Linux admite la llamada al sistema kexec () para reemplazar todo el núcleo del sistema operativo por una versión diferente. El nuevo núcleo arranca como si se hubiera iniciado desde el encendido y no se conserva ningún proceso en ejecución.
Carga en cadena en programas BASIC
En los programas BASIC , la carga en cadena es competencia de la CHAINinstrucción (o, en Commodore BASIC , la LOADinstrucción), que hace que el programa actual se termine y el programa encadenado se cargue e invoque (con, en aquellos dialectos de BASIC que lo admiten, un parámetro opcional que especifica el número de línea desde donde debe comenzar la ejecución, en lugar de la primera línea del nuevo programa por defecto). El área de datos común varía según el dialecto particular de BASIC que se esté utilizando. En BBC BASIC , por ejemplo, solo se conserva un subconjunto específico de todas las variables a través de una CHAIN. En otros BASIC, la COMinstrucción [ 1 ] se puede usar junto con CHAINpara especificar qué variables deben conservarse como datos comunes a través de una operación en cadena.
La carga en cadena permite que los programas BASIC ejecuten más código del que cabe en la memoria de programa y de variables disponible. De este modo, las aplicaciones escritas en BASIC pueden ser mucho más grandes que la memoria de trabajo, gracias a un conjunto de programas que interactúan CHAINentre sí a medida que el flujo del programa avanza dentro de la aplicación.
Carga en cadena en programas FORTRAN
Muchas versiones de Fortran incluyen una CALL CHAINinstrucción CALL LINKque realiza la carga en cadena, preservando el contenido del almacenamiento COMMON . [ 2 ] Esto no es lo mismo que la LINKsubrutina no relacionada en GNU Fortran . [ 3 ]
Carga en cadena en OS/360
OS/360 y sus sucesores utilizan la XCTLmacro (de "control de transferencia") para la carga en cadena. Debido a la gestión de memoria del sistema operativo, esto puede o no resultar en la sustitución del código del programa que realiza la llamada en la memoria.
Véase también
- CHAIN (directiva CONFIG.SYS) (ejecución en cadena de múltiples archivos CONFIG.SYS en DR-DOS)
Referencias
- "Carga en cadena" . Manual de GNU GRUB .
- Orlando Lee Stevenson (diciembre de 1985). "Encadenamiento de programas Commodore" . Compute! (67): 114.
- Raymond, Eric Steven. "Multiprogramación: taxonomía de los métodos IPC de Unix: envoltorios y encadenamiento de Bernstein" . El arte de la programación en Unix .
- Tecnología de sistemas operativos
- Proceso (informática)