La carga en cadena es un método utilizado por los programas de computadora para reemplazar el programa que se está ejecutando actualmente por un programa nuevo, utilizando un área de datos común para pasar información del programa actual al programa nuevo. Ocurre en varias á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 al programa que se está ejecutando actualmente en su totalidad. Las superposiciones generalmente reemplazan solo una parte del programa en ejecución. Al igual que el uso de superposiciones, el uso de carga en cadena aumenta la carga de E / S de una aplicación.
Carga en cadena en programas de administrador de arranque
En los programas de administrador de arranque del sistema operativo , la carga en cadena se utiliza para pasar el control del administrador 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 arrancó y ejecutó el administrador de arranque.
Carga en cadena en Unix
En Unix (y en sistemas operativos similares a Unix), la llamada al sistema exec () se usa para realizar la carga en cadena. La imagen del programa del proceso actual se reemplaza con una imagen completamente nueva y el hilo actual comienza la ejecución de esa imagen. El área de datos comunes comprende las variables de entorno del proceso , que se conservan durante la llamada al sistema.
Carga en cadena en Linux
Además de la carga de la cadena de nivel de proceso exec () , Linux admite la Llamada al sistema kexec () para reemplazar todo el kernel del sistema operativo con una versión diferente. El nuevo kernel arranca como si se hubiera iniciado desde el encendido y no se conserva ningún proceso en ejecución.
Carga de cadena en programas BASIC
En los programas BASIC , la carga en cadena es el ámbito de la CHAIN
declaración (o, en Commodore BASIC , la LOAD
declaración), que hace que el programa actual se termine y el programa encadenado se cargue e invoque (con, en esos dialectos de BASIC que lo soportan, un parámetro opcional que especifica el número de línea desde el cual debe comenzar la ejecución, en lugar del valor predeterminado de la primera línea del nuevo programa). El área de datos común varía según el dialecto particular de BASIC que se utilice. En BBC BASIC , por ejemplo, solo un subconjunto específico de todas las variables se conserva en una CADENA. En otros BASIC, la COM
declaración [1] se puede utilizar junto con CHAIN
para especificar qué variables se conservarán como datos comunes en una operación en cadena.
La carga en cadena permite que los programas BASIC ejecuten más código de programa del que podría caber en el programa disponible y en la memoria de variables. Las aplicaciones escritas en BASIC podrían ser mucho más grandes que el tamaño de la memoria de trabajo, a través de un conjunto de programas cooperativos que CHAIN
van y vienen entre sí a medida que el flujo del programa se mueve dentro de la aplicación general.
Carga de cadena en programas FORTRAN
Muchas versiones de Fortran incluyen una CALL LINK
declaración que realiza la carga en cadena, preservando el contenido del almacenamiento COMÚN . [2] Esto no es lo mismo que la LINK
subrutina no relacionada en GNU Fortran . [3]
Carga de cadena en OS / 360
OS / 360 y sus sucesores utilizan la XCTL
macro (para "control de transferencia") para la carga en cadena. Debido a la gestión de la memoria del sistema operativo, esto puede resultar o no en el reemplazo del código del programa de llamada en la memoria.
Ver también
- CHAIN (directiva CONFIG.SYS) (cadena que ejecuta varios archivos CONFIG.SYS en DR-DOS)
Referencias
- ^ "HP 2000 / Access BASIC" (PDF) . bitsavers.trailing-edge.com . HP. pag. 11-25 . Consultado el 16 de enero de 2020 .
- ^ IBM Corporation (1974). IBM 1130/1800 Basic FORTRAN IV Language (PDF) . pag. 14.
- ^ "El compilador GNU Fortran" . Consultado el 27 de octubre de 2013 .
- "carga en cadena" . Manual GNU GRUB .
- Orlando Lee Stevenson (diciembre de 1985). "Encadenamiento del programa Commodore" . ¡CALCULAR! (67): 114.
- Raymond, Eric Steven. "Multiprogramación: taxonomía de métodos IPC de Unix: envoltorios y encadenamiento de Bernstein" . El arte de la programación Unix .