stringtranslate.com

paginación de memoria

En los sistemas operativos de computadora , la paginación de memoria (o intercambio en algunos sistemas tipo Unix ) 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 necesaria ] 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 En muchos aspectos de la informática, los conceptos son independientes de la tecnología utilizada.

Dependiendo del modelo de memoria , la funcionalidad de la memoria paginada generalmente está conectada a una CPU/MCU mediante una Unidad de administración de memoria (MMU) o una Unidad de protección de memoria (MPU) y se habilita por separado mediante un código de sistema privilegiado en el kernel del sistema operativo . En las CPU que implementan la arquitectura de conjunto de instrucciones (ISA) x86 , por ejemplo, la paginación de memoria se habilita a través del registro de control CR0 .

Historia

En la década de 1960, el intercambio era una de las primeras técnicas de memoria virtual. Un programa completo o un segmento completo se "cambiaría" (o se "implementaría") de la RAM al disco o al tambor, y se intercambiaría ( o se implementaría ) otro. [1] [2] Un programa intercambiado estaría vigente pero su ejecución se suspendería mientras otro programa estuviera utilizando su RAM; un programa con un segmento intercambiado podría continuar ejecutándose hasta que necesitara ese segmento, momento en el cual se suspendería hasta que se intercambiara el segmento.

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 RAM al disco, sino simplemente para minimizar el uso de RAM del programa. Las arquitecturas posteriores utilizaron segmentación de 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 o el segmento de datos del programa o, a 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 . [3]

El Atlas de Ferranti , y el Atlas Supervisor desarrollado en la Universidad de Manchester , [4] (1962), fue el primer sistema en implementar paginación de memoria. Las primeras máquinas posteriores, y sus sistemas operativos, que soportan paginación incluyen el IBM M44/44X y su sistema operativo MOS (1964), [5] , el SDS 940 [6] y el Berkeley Timesharing System (1966), un IBM System/ 360 Modelo 40 y el sistema operativo CP-40 (1967), el IBM System/360 Modelo 67 y sistemas operativos como TSS/360 y CP/CMS (1967), el RCA 70/46 y el Sistema Operativo de Tiempo Compartido (1967 ), el GE 645 y Multics (1969), y el PDP-10 con hardware de paginación diseñado por BBN y el sistema operativo TENEX (1969).

Esas máquinas, y las máquinas posteriores que admiten paginación de memoria, utilizan un conjunto de registros de direcciones de página o tablas de páginas en memoria [d] para permitir que el procesador opere 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.

Fallos de página

Cuando un proceso intenta hacer referencia a una página que actualmente no está asignada a un marco de página 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:

  1. Determinar si un marco de página robado todavía contiene una copia sin modificar de la página; Si es así, utilice ese marco de página.
  2. De lo contrario, obtenga un marco de página vacío en la RAM para usarlo como contenedor de datos y:
    • Determinar si la página alguna vez se inicializó
    • Si es así, determine la ubicación de los datos en el disco.
    • Cargue los datos requeridos en el marco de página disponible.
  3. Actualice la tabla de páginas para hacer referencia al nuevo marco de página.
  4. Devuelva el control al programa, reintentando de forma transparente la instrucción que provocó el error de página.

Cuando todos los marcos de página están en uso, el sistema operativo debe seleccionar un marco de página para reutilizarlo en la página que el programa necesita ahora. Si un programa asignó dinámicamente el marco de página desalojado para contener datos, o si un programa lo modificó desde que fue leído en la RAM (en otras palabras, si se ha vuelto "sucio"), debe escribirse en el disco antes de ser liberado. Si más tarde un programa hace referencia a la página desalojada, se produce otro error de página y la página debe volver a leerse en la RAM.

El método que utiliza el sistema operativo para seleccionar el marco de página a reutilizar, que es su algoritmo de reemplazo de página , es importante para la eficiencia. El sistema operativo predice el marco de página que es menos probable que se necesite pronto, a menudo mediante el algoritmo utilizado menos recientemente (LRU) o un algoritmo basado en el conjunto de trabajo del programa . Para aumentar aún más la capacidad de respuesta, los sistemas de paginación pueden predecir qué páginas se necesitarán pronto, cargándolas de manera preventiva en la RAM antes de que un programa haga referencia a ellas, y pueden robar marcos de páginas de páginas a las que no se ha hecho referencia durante mucho tiempo, dejándolas disponibles. Algunos sistemas borran páginas nuevas para evitar fugas de datos que comprometan la seguridad; algunos los configuran con valores definidos por la instalación o aleatorios para ayudar en la depuración.

Técnicas de búsqueda de páginas

paginación de demanda
Cuando se utiliza paginación por demanda pura, las páginas se cargan solo cuando se hace referencia a ellas. Un programa de un archivo asignado en memoria comienza su ejecución sin ninguna de sus páginas en la RAM. A medida que el programa comete errores de página, el sistema operativo copia las páginas necesarias de un archivo, por ejemplo, un archivo mapeado en memoria , un archivo de paginación o una partición de intercambio que contiene los datos de la página en la RAM.

paginación anticipada
Algunos sistemas utilizan sólo paginación bajo demanda : esperan hasta que se solicite realmente una página antes de cargarla en la RAM.
Otros sistemas intentan reducir la latencia adivinando qué páginas que no están en la RAM probablemente se necesitarán pronto y precargando dichas páginas en la RAM antes de que se solicite esa página. (Esto a menudo se combina con una limpieza previa, que adivina qué páginas actualmente en la RAM no serán necesarias pronto y las escribe previamente en el almacenamiento).
Cuando se produce un error en una página, los sistemas de búsqueda anticipada no solo traerán la página a la que se hace referencia, sino también otras páginas a las que probablemente se hará referencia pronto. Un algoritmo de paginación anticipada simple traerá las próximas páginas consecutivas aunque aún no sean necesarias (una predicción que utiliza la localidad de referencia ); esto es análogo a una cola de entrada de captación previa en una CPU. La captación previa de intercambio buscará previamente las páginas intercambiadas recientemente si hay suficientes páginas libres para ellas. [7]
Si un programa finaliza, el sistema operativo puede retrasar la liberación de sus páginas, en caso de que el usuario vuelva a ejecutar el mismo programa.

Técnicas de reemplazo de páginas

Cola de páginas, robo y recuperación gratuitos
La cola de páginas libres es una lista de marcos de página que están disponibles para su asignación. Evitar que esta cola esté vacía minimiza la informática necesaria para solucionar un error de página. Algunos sistemas operativos buscan periódicamente páginas a las que no se ha hecho referencia recientemente y luego liberan el marco de la página y lo agregan a la cola de páginas libres, un proceso conocido como "robo de páginas". Algunos sistemas operativos [e] admiten la recuperación de páginas ; Si un programa comete un error de página al hacer referencia a una página robada, el sistema operativo lo detecta y restaura el marco de la página sin tener que volver a leer el contenido en la RAM.
Limpieza previa
El sistema operativo puede realizar una limpieza previa periódica de las páginas sucias: escribir las páginas modificadas en el disco aunque puedan modificarse más. Esto minimiza la cantidad de limpieza necesaria para obtener nuevos marcos de página en el momento en que se inicia un nuevo programa o se abre un nuevo archivo de datos y mejora la capacidad de respuesta. (Los sistemas operativos Unix utilizan periódicamente la sincronización para limpiar previamente todas las páginas sucias; los sistemas operativos Windows utilizan subprocesos de "escritor de páginas modificadas").

Paliza

Después de completar la inicialización, la mayoría de los programas operan en una pequeña cantidad de páginas de código y datos en comparación con la memoria total que requiere el programa. Las páginas a las que se accede con más frecuencia se denominan conjunto de trabajo .

Cuando el conjunto de trabajo es un pequeño porcentaje del número total de páginas del sistema, los sistemas de memoria virtual funcionan de manera más eficiente y se gasta una cantidad insignificante de computación en resolver fallas de página. A medida que crece el conjunto de trabajo, la resolución de errores de página sigue siendo manejable hasta que el crecimiento alcanza un punto crítico. Luego, las fallas aumentan dramáticamente y el tiempo dedicado a resolverlas supera el tiempo dedicado a la computación para la cual fue escrito el programa. Esta condición se conoce como paliza . La paliza se produce en un programa que trabaja con estructuras de datos enormes, ya que su gran conjunto de trabajo provoca continuos fallos de página que ralentizan drásticamente el sistema. Para satisfacer los errores de página, es posible que sea necesario liberar páginas que pronto tendrán que volver a leerse desde el disco. "Thrashing" también se utiliza en contextos distintos a los sistemas de memoria virtual; por ejemplo, para describir problemas de caché en informática o el síndrome de ventana tonta en redes.

El peor de los casos podría ocurrir en los procesadores VAX . Un único MOVL que cruza el límite de una página podría tener un operando de origen que utiliza un modo de direccionamiento diferido por desplazamiento, donde la palabra larga que contiene la dirección del operando cruza un límite de página, y un operando de destino que utiliza un modo de direccionamiento diferido por desplazamiento, donde la palabra larga que contiene la dirección del operando cruza un límite de página, y el origen y el destino podrían cruzar los límites de la página. Esta única instrucción hace referencia a diez páginas; si no todos están en la RAM, cada uno provocará un error de página. A medida que ocurre cada falla, el sistema operativo necesita pasar por extensas rutinas de administración de memoria, lo que quizás cause múltiples E/S que podrían incluir escribir otras páginas de proceso en el disco y leer páginas del proceso activo desde el disco. Si el sistema operativo no pudiera asignar diez páginas a este programa, al remediar el error de página se descartaría otra página que la instrucción necesita y cualquier reinicio de la instrucción volvería a fallar.

Para disminuir la paginación excesiva y resolver los problemas de destrucción, un usuario puede aumentar la cantidad de páginas disponibles por programa, ya sea ejecutando menos programas simultáneamente o aumentando la cantidad de RAM en la computadora.

Intercambio

En la programación múltiple o en un entorno multiusuario , muchos usuarios pueden ejecutar el mismo programa, escrito de modo que su código y sus datos estén en páginas separadas. Para minimizar el uso de RAM, todos los usuarios comparten una única copia del programa. La tabla de páginas de cada proceso está configurada de modo que las páginas que abordan el código apunten a la única copia compartida, mientras que las páginas que abordan los datos apuntan a diferentes páginas físicas para cada proceso.

Es posible que diferentes programas también utilicen las mismas bibliotecas. Para ahorrar espacio, solo se carga una copia de la biblioteca compartida en la memoria física. Los programas que utilizan la misma biblioteca tienen direcciones virtuales que se asignan a las mismas páginas (que contienen el código y los datos de la biblioteca). Cuando los programas quieren modificar el código de la biblioteca, utilizan copiar en escritura , por lo que la memoria solo se asigna cuando es necesario.

La memoria compartida es un medio eficiente de comunicación entre programas. Los programas pueden compartir páginas en la memoria y luego escribir y leer para intercambiar datos.

Implementaciones

Ferranti Atlas

La primera computadora que admitió paginación fue la supercomputadora Atlas , [8] [9] [10] desarrollada conjuntamente por Ferranti , la Universidad de Manchester y Plessey en 1963. La máquina tenía una memoria asociativa ( direccionable por contenido ) con una entrada para cada Página de 512 palabras. El Supervisor [11] manejó las interrupciones por no equivalencia [f] y gestionó la transferencia de páginas entre el núcleo y el tambor para proporcionar un almacenamiento de un nivel [12] a los programas.

Microsoft Windows

Windows 3.x y Windows 9x

La paginación ha sido una característica de Microsoft Windows desde Windows 3.0 en 1990. Windows 3.x crea un archivo oculto llamado 386SPART.PARo WIN386.SWPpara usarlo como archivo de intercambio. Generalmente se encuentra en el directorio raíz , pero puede aparecer en otro lugar (normalmente en el directorio de WINDOWS). Su tamaño depende de cuánto espacio de intercambio tiene el sistema (una configuración seleccionada por el usuario en Panel de control → Mejorado en "Memoria virtual"). Si el usuario mueve o elimina este archivo, aparecerá una pantalla azul la próxima vez que inicie Windows, con el mensaje de error "El archivo de intercambio permanente está dañado". Se le pedirá al usuario que elija si desea eliminar o no el archivo (incluso si no existe).

Windows 95 , Windows 98 y Windows Me utilizan un archivo similar, y su configuración se encuentra en Panel de control → Sistema → pestaña Rendimiento → Memoria virtual. Windows establece automáticamente el tamaño del archivo de página para que comience en 1,5 veces el tamaño de la memoria física y amplíe hasta 3 veces la memoria física si es necesario. Si un usuario ejecuta aplicaciones que consumen mucha memoria en un sistema con poca memoria física, es preferible configurar manualmente estos tamaños en un valor superior al predeterminado.

WindowsNT

El archivo utilizado para la paginación en la familia Windows NTpagefile.sys es . La ubicación predeterminada del archivo de página está en el directorio raíz de la partición donde está instalado Windows. Windows se puede configurar para utilizar espacio libre en cualquier unidad disponible para archivos de página. Sin embargo, es necesario que la partición de arranque (es decir, la unidad que contiene el directorio de Windows) tenga un archivo de paginación si el sistema está configurado para escribir volcados de memoria completa o del kernel después de una pantalla azul de la muerte . Windows utiliza el archivo de paginación como almacenamiento temporal para el volcado de memoria. Cuando se reinicia el sistema, Windows copia el volcado de memoria del archivo de página en un archivo separado y libera el espacio que se utilizó en el archivo de página. [13]

Fragmentación

En la configuración predeterminada de Windows, el archivo de página puede expandirse más allá de su asignación inicial cuando sea necesario. Si esto sucede gradualmente, puede fragmentarse mucho, lo que potencialmente puede causar problemas de rendimiento. [14] El consejo común que se da para evitar esto es establecer un tamaño de archivo de página único "bloqueado" para que Windows no lo expanda. Sin embargo, el archivo de página sólo se expande cuando se ha llenado, lo que, en su configuración predeterminada, es el 150% de la cantidad total de memoria física. [ cita necesaria ] Por lo tanto, la demanda total de memoria virtual respaldada por archivos de páginas debe exceder el 250% de la memoria física de la computadora antes de que el archivo de páginas se expanda.

La fragmentación del archivo de página que se produce cuando se expande es temporal. Tan pronto como las regiones expandidas ya no estén en uso (en el próximo reinicio, si no antes), las asignaciones de espacio en disco adicionales se liberan y el archivo de paginación vuelve a su estado original.

Bloquear el tamaño de un archivo de página puede ser problemático si una aplicación de Windows solicita más memoria que el tamaño total de la memoria física y el archivo de página, lo que genera solicitudes fallidas para asignar memoria que pueden provocar que las aplicaciones y los procesos del sistema fallen. Además, el archivo de página rara vez se lee o escribe en orden secuencial, por lo que la ventaja de rendimiento de tener un archivo de página completamente secuencial es mínima. Sin embargo, un archivo de página grande generalmente permite el uso de aplicaciones con mucha memoria, sin penalizaciones además de usar más espacio en disco. Si bien un archivo de página fragmentado puede no ser un problema en sí mismo, la fragmentación de un archivo de página de tamaño variable creará con el tiempo varios bloques fragmentados en la unidad, lo que provocará que otros archivos se fragmenten. Por este motivo, es mejor un archivo de páginas contiguas de tamaño fijo, siempre que el tamaño asignado sea lo suficientemente grande para satisfacer las necesidades de todas las aplicaciones.

El espacio en disco requerido se puede asignar fácilmente en sistemas con especificaciones más recientes (es decir, un sistema con 3 GB de memoria que tiene un archivo de paginación de tamaño fijo de 6 GB en una unidad de disco de 750 GB, o un sistema con 6 GB de memoria y una memoria de 16 GB). GB de archivo de página de tamaño fijo y 2 TB de espacio en disco). En ambos ejemplos, el sistema utiliza aproximadamente el 0,8% del espacio en disco con el archivo de paginación preextendido al máximo.

Ocasionalmente también se recomienda desfragmentar el archivo de paginación para mejorar el rendimiento cuando un sistema Windows utiliza crónicamente mucha más memoria que su memoria física total. [ cita necesaria ] Esta vista ignora el hecho de que, aparte de los resultados temporales de la expansión, el archivo de la página no se fragmenta con el tiempo. En general, los problemas de rendimiento relacionados con el acceso a los archivos de páginas se solucionan de forma mucho más eficaz añadiendo más memoria física.

Sistemas Unix y similares a Unix

Los sistemas Unix y otros sistemas operativos similares a Unix utilizan el término "intercambio" para describir el acto de sustituir la RAM por espacio en disco cuando la RAM física está llena. [15] En algunos de esos sistemas, es común dedicar una partición completa de un disco duro al intercambio. Estas particiones se denominan particiones de intercambio . Muchos sistemas tienen un disco duro completo dedicado al intercambio, separado de las unidades de datos, y que contiene solo una partición de intercambio. Un disco duro dedicado al intercambio se denomina "unidad de intercambio" o "unidad temporal" o " disco temporal ". Algunos de esos sistemas sólo admiten el intercambio a una partición de intercambio; otros también admiten el intercambio de archivos.

linux

El kernel de Linux admite una cantidad prácticamente ilimitada de backends de intercambio (dispositivos o archivos) y también admite la asignación de prioridades de backend. Cuando el kernel intercambia páginas fuera de la memoria física, utiliza el backend de mayor prioridad con espacio libre disponible. Si a varios backends de intercambio se les asigna la misma prioridad, se utilizan en forma circular (que es algo similar a los diseños de almacenamiento RAID 0 ), lo que proporciona un rendimiento mejorado siempre que se pueda acceder de manera eficiente a los dispositivos subyacentes en paralelo. [dieciséis]

Intercambiar archivos y particiones

Desde la perspectiva del usuario final, los archivos de intercambio en las versiones 2.6.x y posteriores del kernel de Linux son prácticamente tan rápidos como las particiones de intercambio; la limitación es que los archivos de intercambio deben asignarse de forma contigua en sus sistemas de archivos subyacentes. Para aumentar el rendimiento de los archivos de intercambio, el kernel mantiene un mapa de dónde se ubican en los dispositivos subyacentes y accede a ellos directamente, evitando así el caché y evitando la sobrecarga del sistema de archivos. [17] [18] Cuando se reside en HDD, que son dispositivos de medios magnéticos rotativos, un beneficio de usar particiones de intercambio es la capacidad de colocarlas en áreas de HDD contiguas que proporcionan un mayor rendimiento de datos o un tiempo de búsqueda más rápido. Sin embargo, la flexibilidad administrativa de los archivos de intercambio puede superar ciertas ventajas de las particiones de intercambio. Por ejemplo, un archivo de intercambio se puede colocar en cualquier sistema de archivos montado, se puede configurar en cualquier tamaño deseado y se puede agregar o cambiar según sea necesario. Las particiones intercambiables no son tan flexibles; no se pueden ampliar sin utilizar herramientas de partición o gestión de volúmenes , que introducen diversas complejidades y posibles tiempos de inactividad.

Intercambio

Swappiness es un parámetro del kernel de Linux que controla el peso relativo dado al intercambio de memoria de tiempo de ejecución , en lugar de descartar páginas del caché de páginas del sistema , siempre que no se pueda satisfacer una solicitud de asignación de memoria desde la memoria libre. El intercambio se puede establecer en un valor de 0 a 200. [19] Un valor bajo hace que el kernel prefiera expulsar páginas del caché de páginas, mientras que un valor más alto hace que el kernel prefiera intercambiar páginas de memoria "frías". El valor predeterminado es 60; establecerlo en un nivel más alto puede causar una latencia alta si es necesario volver a intercambiar páginas inactivas (al interactuar con un programa que había estado inactivo, por ejemplo), mientras que establecerlo en un nivel más bajo (incluso 0) puede causar una latencia alta cuando los archivos que habían sido desalojados del Es necesario volver a leer el caché, pero hará que los programas interactivos respondan mejor, ya que será menos probable que necesiten volver a cambiar las páginas inactivas. El intercambio también puede ralentizar aún más los HDD porque implica muchas escrituras aleatorias, mientras que los SSD no tienen este problema. Ciertamente, los valores predeterminados funcionan bien en la mayoría de las cargas de trabajo, pero los escritorios y los sistemas interactivos para cualquier tarea esperada pueden querer reducir la configuración, mientras que los sistemas de procesamiento por lotes y menos interactivos pueden querer aumentarla. [20]

intercambiar muerte

Cuando la memoria del sistema es muy insuficiente para las tareas actuales y una gran parte de la actividad de la memoria pasa por un intercambio lento, el sistema puede volverse prácticamente incapaz de ejecutar cualquier tarea, incluso si la CPU está inactiva. Cuando cada proceso está esperando el intercambio, se considera que el sistema está en muerte de intercambio . [21] [22]

La muerte del intercambio puede ocurrir debido a un compromiso excesivo de memoria configurado incorrectamente . [23] [24] [25]

La descripción original del problema del "intercambio hasta la muerte" se relaciona con el servidor X. Si el código o los datos utilizados por el servidor X para responder a una pulsación de tecla no están en la memoria principal, entonces, si el usuario ingresa una pulsación de tecla, el servidor tomará una o más fallas de página, lo que requerirá que esas páginas se lean desde el intercambio antes de que se pueda presionar la tecla. procesado, ralentizando la respuesta al mismo. Si esas páginas no permanecen en la memoria, tendrán que ser reintroducidas nuevamente para manejar la siguiente pulsación de tecla, haciendo que el sistema prácticamente no responda incluso si en realidad está ejecutando otras tareas normalmente. [26]

Mac OS

macOS utiliza varios archivos de intercambio. La instalación predeterminada (y recomendada por Apple) los coloca en la partición raíz, aunque es posible colocarlos en una partición o dispositivo separado. [27]

AmigaOS 4

AmigaOS 4.0 introdujo un nuevo sistema para asignar RAM y desfragmentar la memoria física. Todavía utiliza un espacio de direcciones compartido y plano que no se puede desfragmentar. Se basa en un método de asignación de losas y una memoria de paginación que permite el intercambio. La paginación se implementó en AmigaOS 4.1 pero puede bloquear el sistema si se agota toda la memoria física. [28] La memoria de intercambio se puede activar y desactivar en cualquier momento, lo que permite al usuario elegir usar solo RAM física.

Actuación

El almacén de respaldo de un sistema operativo de memoria virtual suele ser muchos órdenes de magnitud más lento que la RAM . Además, el uso de dispositivos de almacenamiento mecánico introduce un retraso , de varios milisegundos para un disco duro. Por lo tanto, es deseable reducir o eliminar el intercambio, cuando sea práctico. Algunos sistemas operativos ofrecen configuraciones para influir en las decisiones del núcleo.

Muchos sistemas operativos tipo Unix (por ejemplo, AIX , Linux y Solaris ) permiten utilizar múltiples dispositivos de almacenamiento para intercambiar espacio en paralelo, para aumentar el rendimiento.

Intercambiar tamaño del espacio

En algunos sistemas operativos de memoria virtual más antiguos, se reserva espacio en el almacén de respaldo de intercambio cuando los programas asignan memoria para datos de tiempo de ejecución. Los proveedores de sistemas operativos suelen emitir directrices sobre cuánto espacio de intercambio se debe asignar.

Tamaños del espacio de direcciones físicas y virtuales

La paginación es una forma de permitir que el tamaño de las direcciones utilizadas por un proceso, que es el "espacio de direcciones virtuales" o "espacio de direcciones lógicas" del proceso, sea diferente de la cantidad de memoria principal realmente instalada en una computadora en particular, que es el espacio de direcciones físicas.

Memoria principal más pequeña que la memoria virtual.

En la mayoría de los sistemas, el tamaño del espacio de direcciones virtuales de un proceso es mucho mayor que la memoria principal disponible. [31] Por ejemplo:

Memoria principal del mismo tamaño que la memoria virtual.

Una computadora con direccionamiento verdadero de n bits puede tener instaladas 2 n unidades direccionables de RAM. Un ejemplo es un procesador x86 de 32 bits con 4  GB y sin Extensión de Dirección Física (PAE). En este caso, el procesador es capaz de direccionar toda la RAM instalada y nada más.

Sin embargo, incluso en este caso, la paginación se puede utilizar para admitir más memoria virtual que física. Por ejemplo, es posible que se estén ejecutando muchos programas al mismo tiempo. En conjunto, es posible que requieran más memoria física de la que se puede instalar en el sistema, pero no toda tendrá que estar en la RAM a la vez. Un sistema de paginación toma decisiones eficientes sobre qué memoria relegar al almacenamiento secundario, lo que conduce al mejor uso de la RAM instalada.

Además, el sistema operativo puede proporcionar servicios a programas que prevean una mayor memoria, como archivos que pueden crecer más allá del límite de RAM instalada. No todo el archivo se puede asignar simultáneamente al espacio de direcciones de un proceso, pero el sistema operativo puede permitir que regiones del archivo se puedan asignar al espacio de direcciones y desasignarlas si es necesario asignar otra región.

Memoria principal mayor que el espacio de direcciones virtuales

Algunas computadoras tienen una memoria principal mayor que el espacio de direcciones virtuales de un proceso, como el Magic-1, [31] algunas máquinas PDP-11 y algunos sistemas que utilizan procesadores x86 de 32 bits con extensión de dirección física . Esto anula una ventaja significativa de la paginación, ya que un solo proceso no puede utilizar más memoria principal que la cantidad de su espacio de direcciones virtuales. Estos sistemas suelen utilizar técnicas de paginación para obtener beneficios secundarios:

El tamaño del total acumulado de espacios de direcciones virtuales todavía está limitado por la cantidad de almacenamiento secundario disponible.

Ver también

Notas

  1. ^ Inicialmente se han utilizado tambores , y luego unidades de disco duro y unidades de estado sólido para la paginación.
  2. ^ Por ejemplo, Multics , OS/VS1 , OS/VS2 , VM/370
  3. ^ Por ejemplo, z/OS .
  4. ^ Algunos sistemas tienen una tabla de páginas global, algunos sistemas tienen una tabla de páginas separada para cada proceso, algunos sistemas tienen una tabla de páginas separada para cada segmento [b] y algunos sistemas tienen tablas de páginas en cascada. [C]
  5. ^ Por ejemplo, MVS (almacenamiento virtual múltiple).
  6. ^ Se produce una interrupción por no equivalencia cuando los bits de orden superior de una dirección no coinciden con ninguna entrada en la memoria asociativa.

Referencias

  1. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, eds. (1981). "Sistemas operativos". Enciclopedia de informática y tecnología. vol. 11. Prensa CRC. pag. 442.ISBN _ 0-8247-2261-2. Archivado desde el original el 27 de febrero de 2017.
  2. ^ Cragón, Harvey G. (1996). Sistemas de memoria y procesadores canalizados. Editores Jones y Bartlett. pag. 109.ISBN _ 0-86720-474-5. Archivado desde el original el 27 de febrero de 2017.
  3. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, eds. (1981). "Sistemas de memoria virtual". Enciclopedia de informática y tecnología. vol. 14. Prensa CRC. pag. 32.ISBN _ 0-8247-2214-0. Archivado desde el original el 27 de febrero de 2017.
  4. ^ Kilburn, T ; Payne, RB; Howarth, DJ (1962). "El Supervisor del Atlas".
  5. ^ RW O'Neill. Experiencia en el uso de un sistema de multiprogramación de tiempo compartido con hardware de reubicación dinámica de direcciones . Proc. Conferencia informática AFIPS 30 (Conferencia informática conjunta de primavera, 1967). págs. 611–621. doi :10.1145/1465482.1465581.
  6. ^ Manual de referencia de sistemas de datos científicos, computadora SDS 940 (PDF) . 1966, págs. 8–9.
  7. ^ "Intercambiar captura previa". Noticias semanales de Linux . 2005-09-27.
  8. ^ Sumner, FH; Haley, G.; Chenh, ECY (1962). "La Unidad de Control Central de la Computadora 'Atlas'". Procesamiento de Información 1962 . Actas del Congreso IFIP. vol. Actas del Congreso IFIP 62. Spartan.
  9. ^ "El Atlas". Universidad de Manchester: Departamento de Ciencias de la Computación. Archivado desde el original el 28 de julio de 2012.
  10. ^ "Arquitectura Atlas". Computadora Atlas . Chilton: Laboratorio de Computación Atlas. Archivado desde el original el 10 de diciembre de 2012.
  11. ^ Kilburn, T.; Payne, RB; Howarth, DJ (diciembre de 1961). "El Supervisor del Atlas". Computadoras: clave para el control total de los sistemas . Actas de Congresos. vol. 20, Actas de la Conferencia Conjunta sobre Computación del Este en Washington, DC Macmillan. págs. 279–294. Archivado desde el original el 31 de diciembre de 2009.
  12. ^ Kilburn, T.; Edwards, DBG; Lanigan, MJ; Sumner, FH (abril de 1962). "Sistema de almacenamiento de un nivel". Transacciones IRE en Computadoras Electrónicas . Instituto de Ingenieros de Radio (2): 223–235. doi :10.1109/TEC.1962.5219356.
  13. ^ Tsigkogiannis, Ilias (11 de diciembre de 2006). "Análisis de volcado de emergencia". escritura del conductor! = conducción de autobús . Microsoft . Archivado desde el original el 7 de octubre de 2008 . Consultado el 22 de julio de 2008 .
  14. ^ "Página Defrag de Windows Sysinternals". Sistemas internos . Microsoft . 2006-11-01. Archivado desde el original el 25 de diciembre de 2010 . Consultado el 20 de diciembre de 2010 .
  15. ^ Ambos, David (27 de marzo de 2020). "Una introducción al intercambio de espacio en sistemas Linux". Opensource.com . Consultado el 8 de diciembre de 2021 .
  16. ^ "swapon(2) - página de manual de Linux". Linux.Die.net . Archivado desde el original el 28 de febrero de 2014 . Consultado el 8 de septiembre de 2014 .
  17. ^ ""Jesper Juhl ": Re: ¿Cómo enviar un descanso? ​​- volcado desde Linux de 64 bits congelado". LKML. 29 de mayo de 2006. Archivado desde el original el 24 de noviembre de 2010 . Consultado el 28 de octubre de 2010 .
  18. ^ "Andrew Morton: Re: Intercambiar partición versus archivo de intercambio". LKML. Archivado desde el original el 24 de noviembre de 2010 . Consultado el 28 de octubre de 2010 .
  19. ^ "La documentación del kernel de Linux para /proc/sys/vm/".
  20. ^ Andrews, Jeremy (29 de abril de 2004). "Linux: sintonización del intercambio". kerneltrap.org . Archivado desde el original el 24 de mayo de 2013 . Consultado el 3 de enero de 2018 .
  21. ^ Rik van Riel (20 de mayo de 1998). "intercambiar muerte (como en 2.1.91) y tablas de páginas". Archivado desde el original el 29 de diciembre de 2017.
  22. ^ Kyle Rankin (2012). Solución de problemas de DevOps: mejores prácticas para servidores Linux. Addison-Wesley. pag. 159.ISBN _ 978-0-13-303550-6. Archivado desde el original el 29 de diciembre de 2017.
  23. ^ Andrés Brouwer. "El kernel de Linux: memoria". Archivado desde el original el 13 de agosto de 2017.
  24. ^ Sombrero rojo. "Ajuste de capacidad". Archivado desde el original el 23 de julio de 2017.
  25. ^ "Configuración de sobreasignación de memoria". 2014-02-16. Archivado desde el original el 31 de mayo de 2017.
  26. ^ Peter MacDonald (10 de febrero de 1993). "intercambio hasta la muerte". Archivado desde el original el 28 de marzo de 2017.
  27. ^ Juan Siracusa (15 de octubre de 2001). "MacOS X 10.1". Ars Técnica. Archivado desde el original el 5 de septiembre de 2008 . Consultado el 23 de julio de 2008 .
  28. ^ Desarrollador principal de AmigaOS (8 de enero de 2011). "Re: ¿Problema de intercambio también en la Actualización 4?". Entretenimiento Hyperion. Archivado desde el original el 12 de abril de 2013 . Consultado el 8 de enero de 2011 .
  29. ^ Por ejemplo, detección de posición rotacional en un canal multiplexor de bloques
  30. ^ "Alinear los sistemas de archivos con el tamaño de bloque de borrado de un SSD | Pensamientos de Ted". Thunk.org. 2009-02-20. Archivado desde el original el 13 de noviembre de 2010 . Consultado el 28 de octubre de 2010 .
  31. ^ ab Bill Buzbee. "Diseño de paginación por demanda Magic-1 Minix". Archivado desde el original el 5 de junio de 2013 . Consultado el 9 de diciembre de 2013 .

enlaces externos