En un sentido informático general, superponer significa "el proceso de transferir un bloque de código de programa u otros datos a la memoria principal , reemplazando lo que ya está almacenado". [1] La superposición es un método de programación que permite que los programas sean más grandes que la memoria principal de la computadora . [2] Un sistema integrado normalmente usaría superposiciones debido a la limitación de la memoria física , que es la memoria interna para un sistema en chip , y la falta de funciones de memoria virtual .
Uso
La construcción de un programa de superposición implica dividir manualmente un programa en bloques de código de objeto autónomos llamados superposiciones dispuestos en una estructura de árbol . Los segmentos hermanos , aquellos en el mismo nivel de profundidad, comparten la misma memoria, denominada región de superposición o región de destino . Un administrador de superposición, ya sea parte del sistema operativo o parte del programa de superposición, carga la superposición requerida desde la memoria externa en su región de destino cuando es necesario. A menudo, los enlazadores brindan soporte para superposiciones. [3]
Ejemplo
El siguiente ejemplo muestra las declaraciones de control que indican al editor de vínculos OS / 360 que vincule un programa de superposición, con sangría para mostrar la estructura (los nombres de los segmentos son arbitrarios):
INCLUYE SYSLIB (MOD1) INCLUYE SYSLIB (MOD2) SUPERPOSICIÓN A INCLUYE SYSLIB (MOD3) SUPERPOSICIÓN AA INCLUYE SYSLIB (MOD4) INCLUYE SYSLIB (MOD5) SUPERPOSICIÓN AB INCLUYE SYSLIB (MOD6) SUPERPOSICIÓN B INCLUYE SYSLIB (MOD7)
+ -------------- + | Segmento raíz | | MOD1, MOD2 | + -------------- + | + ---------- + ---------- + | | + ------------- + + ------------- + | Superposición A | | Superposición B | | MOD3 | | MOD7 | + ------------- + + ------------- + | + -------- + -------- + | | + ------------- + + ------------- + | Superposición AA | | Superposición AB | | MOD4, MOD5 | | MOD6 | + ------------- + + ------------- +
Estas declaraciones definen un árbol que consta del segmento residente permanente, llamado raíz , y dos superposiciones A y B que se cargarán después del final de MOD2. La propia superposición A consta de dos segmentos superpuestos, AA y AB. En el momento de la ejecución, las superposiciones A y B utilizarán las mismas ubicaciones de memoria; AA y AB utilizarán las mismas ubicaciones después del final de MOD3.
Todos los segmentos entre la raíz y un segmento de superposición determinado se denominan ruta .
Aplicaciones
A partir de 2015[actualizar], la mayoría de las aplicaciones comerciales están diseñadas para ejecutarse en plataformas con memoria virtual . Un desarrollador en tal plataforma puede diseñar un programa como si la restricción de memoria no existiera a menos que el conjunto de trabajo del programa exceda la memoria física disponible. Lo más importante es que el arquitecto puede concentrarse en el problema que se está resolviendo sin la dificultad adicional de diseño de forzar el procesamiento en pasos restringidos por el tamaño de la superposición. Por lo tanto, el diseñador puede usar lenguajes de programación de nivel superior que no permiten al programador mucho control sobre el tamaño (por ejemplo , Java , C ++ , Smalltalk ).
Aún así, las superposiciones siguen siendo útiles en los sistemas integrados. [4] Algunos procesadores de bajo costo utilizados en sistemas integrados no proporcionan una unidad de gestión de memoria (MMU). Además, muchos sistemas integrados son sistemas en tiempo real y las superposiciones proporcionan un tiempo de respuesta más determinado que la paginación . Por ejemplo, el software del sistema de aviónica primario del transbordador espacial (PASS) utiliza superposiciones programadas. [5]
Incluso en plataformas con memoria virtual, los componentes de software , como los códecs, pueden desacoplarse hasta el punto en que se pueden cargar dentro y fuera según sea necesario .
Uso histórico
En la era de las computadoras domésticas, las superposiciones eran populares porque el sistema operativo y muchos de los sistemas informáticos en los que se ejecutaba carecían de memoria virtual y tenían muy poca RAM según los estándares actuales: la PC IBM original tenía entre 16K y 64K, según la configuración. Las superposiciones eran una técnica popular en Commodore BASIC para cargar pantallas gráficas. Para detectar cuándo ya se cargó una superposición, se podría usar una variable de marca. [2]
"Varios enlazadores de DOS en la década de 1980 admitían [superposiciones] en una forma casi idéntica a la utilizada 25 años antes en las computadoras mainframe". [4] Los archivos binarios que contienen superposiciones de memoria tenían una extensión estándar de facto, .OVL . Se utilizó este tipo de archivo entre otros por WordStar , dBase , y la habilitación de DOS paquete de software de automatización de oficinas de Enable Software, Inc. . El compilador GFA BASIC pudo producir archivos .OVL.
Ver también
Referencias
- ^ "Diccionarios de Oxford" . 2015-11-26.
- ^ a b Butterfield, Jim (junio de 1986). "Parte 4: superposición". Carga y vinculación de programas Commodore . ¡Calcular! . pag. 74.
Esto le permite ejecutar programas que son, en efecto, mucho más grandes que la cantidad de memoria en su computadora.
- ^ "La documentación de GNU Linker: Descripción de superposición" . 2008-06-03.
- ^ a b Levine, John R. (2000). Enlazadores y cargadores . Editores Morgan Kaufmann . pag. 177. ISBN 1-55860-496-0. [1]
- ^ "Una evaluación de los procesos de desarrollo de software de vuelo del transbordador espacial" . Consultado el 29 de octubre de 2012 .
enlaces externos
- Editor y cargador de enlaces de SO de IBM (PDF) . Versión 21. IBM Corporation . Marzo de 1972 [enero de 1972]. pag. 244. GC28-6538.