Cómo evitar el "Programa demasiado grande para la memoria"

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Resumen

Cuando intenta ejecutar un programa muy grande en MS-DOS, puede producirse el error "Demasiado grande para la memoria de programa". MS-DOS se ejecuta en modo real, que no admite más de 640 KB de memoria para las aplicaciones. Este artículo discute los métodos posibles para evitar esta limitación. Estos métodos incluyen el uso del sistema operativo OS/2 en lugar de DOS, los archivos de acceso directo disco para almacenamiento de datos, matrices ASIGNABLE y superposiciones.

Más información

Utilizando expandida y extendida memoria con Microsoft FORTRAN

Algunas aplicaciones de DOS pueden utilizar un programa controlador de memoria expandida (EMM) el administrador y Boards memoria expandida para tener acceso a memoria más allá del límite de 1 MB de memoria convencional. Sin embargo, Microsoft FORTRAN, no tiene la capacidad de usar memoria expandida. Se puede utilizar memoria extendida (por encima de 1 MB), pero sólo cuando se utiliza con el sistema operativo OS/2 y protegido de las bibliotecas de modo. Memoria extendida es el término utilizado para referirse a la memoria en direcciones físicas por encima de 1 MB que pueden tener acceso a una CPU 80286 o 80386 en modo protegido.

Utilizando un archivo de acceso directo de disco para almacenar grandes cantidades de datos

Una unidad de disco puede utilizarse para almacenar grandes cantidades de datos en un archivo de disco de acceso directo, lo cual libera la memoria que de lo contrario sería utilizada por los datos. Mediante un archivo de acceso directo, los registros se pueden leer o escritos a en cualquier orden, que simula el uso de una matriz. Si ampliado o extended memory está disponible, se puede usar para una unidad de RAM. Mediante una unidad de RAM, el acceso a los datos de E/S es mucho más rápido que cuando se utiliza una unidad de disco duro.

Utilizar matrices asignable en FORTRAN versión 5.00

Una matriz ASIGNABLE es una matriz que se dimensiona dinámicamente en tiempo de ejecución mediante la instrucción ALLOCATE y el atributo ASIGNABLE (consulte las páginas 21-25 del manual "Microsoft FORTRAN Reference"). La instrucción ALLOCATE (vea páginas 113-114 del manual "Microsoft FORTRAN Reference") establece la superior y límites inferiores de cada matriz de dimensión y reserva suficiente memoria. A continuación, se puede DESASIGNAR la matriz en tiempo de ejecución utilizando la instrucción DEALLOCATE (Véase la página 143 del manual "Microsoft FORTRAN Reference") para liberar memoria para su uso por otros arreglos de discos.


Por ejemplo:
  INTEGER data [ALLOCATABLE] (:,:)  INTEGER error
DATA i, j / 10,50 /
ALLOCATE (data (i,j), STAT=error)

DEALLOCATE (data, STAT=error)

Con las superposiciones en versiones de FORTRAN 4.00, 4.01, 4.10 y 5.00

Superposiciones (consulte páginas 366-367 del manual "Microsoft FORTRAN Reference" para las versiones 5.00 y páginas 258-260 de la "Microsoft FORTRAN CodeView utilidades Guía del usuario y") permiten varios módulos de programa que utilicen la misma área de memoria. Cuando sea necesario, un módulo o un grupo de módulos que se carga en la memoria desde el disco. Tiempo de acceso del módulo puede reducirse si se utiliza una unidad de RAM para almacenar el archivo ejecutable. Módulos que deben superponerse se incluyen entre paréntesis. CÓDIGO (pero nunca datos) se superpone. Nota: Si el programa se compone de datos sobre todo, a continuación, este procedimiento será de gran ayuda.


En el siguiente ejemplo es para versiones 4.00, 4.01, 4.10 y 5.00:
En la línea de comandos: VINCULAR A (E, F) (B C)
Módulos de objeto B y C se intercambian la misma memoria para módulos de objeto E y F. Nota: módulos de objeto entre paréntesis se superponen entre sí para que se carguen en la memoria al mismo tiempo.



En el siguiente ejemplo es para las versiones 4.10 y 5.00:

En la línea de comandos FL: FL principal. PARA (OVER1. PARA) (OVER2. PARA)
Los módulos de código FORTRAN OVER1 y OVER2 se intercambian en la misma ubicación de memoria.
Propiedades

Id. de artículo: 67194 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios