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 usar 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, ya que utiliza almacenamiento secundario para permitir que los programas superen 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 abreviatura 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 para el mercado masivo fueron conceptos de arquitectura informática, 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 llamó 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 "desplegaría") de la RAM al disco, y otro se intercambiaría (o se incorporaría ). [3] [4] Un programa intercambiado estaría actualizado, pero su ejecución se suspendería mientras otro programa usaba su RAM.

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

La invención de la tabla de páginas permitió al procesador operar 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 disco y RAM.

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