Paginación de memoria


En los sistemas operativos de computadora , la paginación de memoria es un esquema de administración de memoria mediante el cual una computadora almacena y recupera datos del almacenamiento secundario [a] para usarlos en la memoria principal . [ cita requerida ] En este esquema, el sistema operativo recupera datos del almacenamiento secundario en bloques del mismo tamaño llamados páginas . La paginación es una parte importante de las implementaciones de memoria virtual en los sistemas operativos modernos, utilizando almacenamiento secundario para permitir que los programas excedan el tamaño de la memoria física disponible.

Para simplificar, la memoria principal se llama "RAM" (un acrónimo de memoria de acceso aleatorio ) y el almacenamiento secundario se llama "disco" (una forma abreviada de unidad de disco duro , memoria de tambor o unidad de estado sólido , etc.), pero al igual que con muchos aspectos de la informática, los conceptos son independientes de la tecnología utilizada.

Ferranti introdujo la paginación en el Atlas , pero las primeras páginas de memoria del mercado masivo fueron conceptos en la arquitectura de la computadora, independientemente de si una página se movía entre la RAM y el disco. [1] [2] Por ejemplo, en el PDP-8 , 7 de los bits de instrucción comprendían una dirección de memoria que seleccionaba una de 128 (2 7 ) palabras. Esta zona de la memoria se llamaba página . Este uso del término ahora es raro. En la década de 1960, el intercambio fue una de las primeras técnicas de memoria virtual. Un programa completo se "intercambiaría" (o "implementaría") de la RAM al disco, y otro se intercambiaría (o implementaría ). [3] [4]Un programa intercambiado sería actual, pero su ejecución se suspendería mientras su RAM estuviera en uso por otro programa.

Un programa puede incluir múltiples superposiciones que ocupan la misma memoria en diferentes momentos. Las superposiciones no son un método para paginar la memoria RAM en el disco, sino simplemente para minimizar el uso de memoria RAM del programa. Las arquitecturas posteriores utilizaron la segmentación de la memoria y los segmentos de programas individuales se convirtieron en las unidades intercambiadas entre el disco y la RAM. Un segmento era el segmento de código completo del programa o el segmento de datos, oa veces otras estructuras de datos grandes. Estos segmentos tenían que ser contiguos cuando residían en la RAM, lo que requería cómputo y movimiento adicionales para remediar la fragmentación . [5]

La invención de la tabla de páginas permitió que el procesador operara en páginas arbitrarias en cualquier lugar de la RAM como un espacio de direcciones lógicas aparentemente contiguas . Estas páginas se convirtieron en las unidades intercambiadas entre el disco y la RAM.

Cuando un proceso intenta hacer referencia a una página que actualmente no está presente en la RAM, el procesador trata esta referencia de memoria no válida como un error de página y transfiere el control del programa al sistema operativo. El sistema operativo debe: