El modelo de memoria plana o modelo de memoria lineal se refiere a un paradigma de direccionamiento de memoria en el que " la memoria aparece para el programa como un único espacio de dirección contiguo ". [1] La CPU puede direccionar directamente (y linealmente ) todas las ubicaciones de memoria disponibles sin tener que recurrir a ningún tipo de conmutación de bancos , segmentación de memoria o esquemas de paginación .
La gestión de memoria y la traducción de direcciones aún se pueden implementar sobre un modelo de memoria plana para facilitar la funcionalidad del sistema operativo , la protección de recursos, la multitarea o para aumentar la capacidad de memoria más allá de los límites impuestos por el espacio de direcciones físicas del procesador, pero la característica clave de un modelo de memoria plana es que todo el espacio de memoria es lineal, secuencial y contiguo.
En un controlador simple, o en una aplicación embebida de tarea única , donde la gestión de memoria no es necesaria ni deseable, el modelo de memoria plana es el más apropiado, porque proporciona la interfaz más simple desde el punto de vista del programador, con acceso directo a todas las ubicaciones de memoria y una complejidad de diseño mínima.
En un sistema informático de propósito general, que requiere multitarea, asignación de recursos y protección, el sistema de memoria plana debe complementarse con algún esquema de gestión de memoria, que normalmente se implementa mediante una combinación de hardware dedicado (dentro o fuera de la CPU) y software integrado en el sistema operativo. El modelo de memoria plana (a nivel de direccionamiento físico) sigue ofreciendo la mayor flexibilidad para implementar este tipo de gestión de memoria.
Modelos de memoria
La mayoría de los modelos de memoria modernos entran en una de tres categorías:
Modelo de memoria plana
- Interfaz sencilla para programadores, diseño limpio.
- Mayor flexibilidad debido a una velocidad de acceso uniforme (los cambios de página de memoria segmentada generalmente incurren en una latencia variable debido a accesos más prolongados a otras páginas, ya sea por lógica de CPU adicional al cambiar de página o por requisitos de hardware)
- Espacio mínimo de hardware y CPU para aplicaciones de controlador simples [ aclaración necesaria ]
- Máxima velocidad de ejecución, simplemente no hay latencia debido a la CPU o la lógica, ya que no hay necesidad de acceder a estructuras de datos auxiliares como una tabla de páginas en RAM .
- No es adecuado para sistemas operativos multitarea o de computación general, a menos que se mejore [ ¿por qué? ] con hardware o software de administración de memoria adicional; pero este es casi siempre el caso en los procesadores CISC modernos , que implementan tecnología avanzada de protección y administración de memoria sobre un modelo de memoria plana. Linux , por ejemplo, utiliza un modelo de memoria plana; consulte Segmentación de memoria x86#Prácticas .
Modelo de memoria paginada
- Adecuado para multitarea, diseño general de sistemas operativos, protección y asignación de recursos.
- Adecuado para la implementación de memoria virtual.
- Más espacio en la CPU, velocidad ligeramente menor
- Más complejo de programar
- Límites de página rígidos, no siempre los más eficientes en el uso de la memoria
- Este modelo de memoria es necesario cuando se utiliza la extensión de dirección física (PAE) en Pentium Pro y CPU x86 posteriores para admitir direcciones físicas de 36 bits para abordar más de 4 GB de memoria física.
Modelo de memoria segmentada x86
- Similar a la memoria paginada, pero la paginación se logra mediante la adición implícita de dos registros relativamente desplazados: segmento:desplazamiento
- Límites de página variables, más eficientes y flexibles que el modelo de memoria paginada
- Bastante complejo y complicado desde el punto de vista de un programador.
- Más difícil para los compiladores
- Las páginas pueden superponerse / protección y aislamiento deficientes de los recursos
- Correspondencia de traducción de muchas direcciones a una: muchas combinaciones de segmento:desplazamiento se resuelven en la misma dirección física
- Mayor probabilidad de errores de programación
- Implementado en los procesadores Intel 8086, 8088 , 80186 y 80286 originales , y soportado por el 80386 y todos los procesadores x86 posteriores hasta los actuales procesadores Pentium y Core 2. Este modelo de memoria ha permanecido desde entonces en los procesadores x86, que ahora proporcionan operación multimodo y rara vez operan en el modo segmentado compatible. [ aclaración necesaria ] Ver segmentación de memoria x86 para más detalles.
- ahorra RAM al mover la dirección del segmento, esto permite saltos cortos que requieren menos bytes.
Dentro de las arquitecturas x86, al operar en modo real (o emulación), la dirección física se calcula como: [2]
- Dirección = 16 × segmento + desplazamiento
(Es decir, el registro de segmento de 16 bits se desplaza 4 bits a la izquierda y se agrega a un desplazamiento de 16 bits, lo que da como resultado una dirección de 20 bits).
Véase también
Referencias
- ^ Gonzalez, Antonio; Latorre, Fernando; Magklis, Grigorios (2011). Microarquitectura de procesadores: una perspectiva de implementación. Morgan & Claypool Publishers. p. 72. ISBN 9781608454525.
- ^ Descripción general del modo real "La dirección física se puede calcular como Valor_en_segmento_registro
- 16 + Valor_en_registro_de_desplazamiento."