Articulo de referencia

Página (memoria de la computadora)

Una página , página de memoria o página virtual es un bloque contiguo de longitud fija de memoria virtual , descrito por una única entrada en una tabla de páginas . Es la unidad...

Una página , página de memoria o página virtual es un bloque contiguo de longitud fija de memoria virtual , descrito por una única entrada en una tabla de páginas . Es la unidad de datos más pequeña para la gestión de memoria en un sistema operativo que utiliza memoria virtual. De manera similar, un marco de página es el bloque contiguo de longitud fija más pequeño de memoria física en el que el sistema operativo asigna las páginas de memoria. [ 1 ] [ 2 ] [ 3 ]

La transferencia de páginas entre la memoria principal y un almacenamiento auxiliar, como un disco duro , se denomina paginación o intercambio. [ 4 ]

Explicación

La memoria del ordenador se divide en páginas para que la información se pueda encontrar más rápidamente.

El concepto se denomina por analogía con las páginas de un libro impreso. Si un lector quisiera encontrar, por ejemplo, la palabra número 5000 del libro, podría contar desde la primera palabra. Esto llevaría mucho tiempo. Sería mucho más rápido si el lector tuviera una lista de cuántas palabras hay en cada página. A partir de esta lista, podría determinar en qué página aparece la palabra número 5000 y cuántas palabras debe contar en esa página. Esta lista de palabras por página del libro es análoga a una tabla de páginas de un sistema de archivos informático . [ 5 ]

Tamaño de página

Compromiso del tamaño de la página

El tamaño de página suele estar determinado por la arquitectura del procesador. Tradicionalmente, las páginas en un sistema tenían un tamaño uniforme, como 4096 bytes . Sin embargo, los diseños de procesadores a menudo permiten dos o más tamaños de página, a veces simultáneos, debido a sus ventajas. Existen varios factores que pueden influir en la elección del tamaño de página óptimo. [ 6 ]

Tamaño de la tabla de página

Un sistema con un tamaño de página menor utiliza más páginas, lo que requiere una tabla de páginas que ocupa más espacio. Por ejemplo, si un espacio de direcciones virtuales de 2³² se asigna a páginas de 4  KiB ( 2¹² bytes), el número de páginas virtuales es 2²⁰  = ( 2³²  / 2¹² ). Sin embargo, si el tamaño de página aumenta a 32 KiB (2¹⁵ bytes ), solo se requieren 2¹⁷ páginas. Un algoritmo de paginación multinivel puede disminuir el costo de memoria de asignar una tabla de páginas grande para cada proceso al dividir aún más la tabla de páginas en tablas más pequeñas, paginando así la tabla de páginas.

Uso de TLB

Dado que cada acceso a la memoria debe mapearse de una dirección virtual a una física, leer la tabla de páginas cada vez puede resultar muy costoso. Por ello, se suele utilizar un tipo de caché muy rápida: el búfer de traducción anticipada (TLB). El TLB tiene un tamaño limitado, y cuando no puede satisfacer una solicitud determinada ( fallo de TLB ), el mapeo debe obtenerse de la tabla de páginas (ya sea por hardware, firmware o software, según la arquitectura) para obtener el mapeo correcto. Un mayor tamaño de página implica que una caché TLB del mismo tamaño puede gestionar mayores cantidades de memoria, lo que evita costosos fallos de TLB.

fragmentación interna

Rara vez los procesos requieren el uso de un número exacto de páginas. Por lo tanto, es probable que la última página solo se llene parcialmente, desperdiciando cierta cantidad de memoria. Los tamaños de página mayores conllevan un gran desperdicio de memoria, ya que se cargan en la memoria principal porciones de memoria potencialmente no utilizadas. Los tamaños de página menores garantizan una mayor adecuación a la cantidad real de memoria requerida en una asignación.

Por ejemplo, supongamos que el tamaño de página es de 1024 bytes. Si un proceso asigna 1025 bytes, se deben usar dos páginas, lo que resulta en 1023 bytes de espacio no utilizado (donde una página consume completamente 1024 bytes y la otra solo 1 byte).

Acceso al disco

Al transferir datos desde un disco giratorio, gran parte del retraso se debe al tiempo de búsqueda, es decir, el tiempo que tardan los cabezales de lectura/escritura en posicionarse correctamente sobre los platos del disco. Por ello, las transferencias secuenciales grandes son más eficientes que varias transferencias más pequeñas. Transferir la misma cantidad de datos del disco a la memoria suele requerir menos tiempo con páginas grandes que con páginas pequeñas.

Obtener el tamaño de la página mediante programación

La mayoría de los sistemas operativos permiten que los programas descubran el tamaño de página en tiempo de ejecución . Esto permite que los programas utilicen la memoria de forma más eficiente, ajustando las asignaciones a este tamaño y reduciendo la fragmentación interna general de las páginas.

Sistemas operativos tipo Unix

Los sistemas tipo Unix pueden usar la función del sistema sysconf(), [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] como se ilustra en el siguiente ejemplo escrito en el lenguaje de programación C .

#include <stdio.h> #include <unistd.h> /* sysconf(3) */int main ( void ) { printf ( "El tamaño de página para este sistema es %ld bytes. \n " , sysconf ( _SC_PAGESIZE )); /* _SC_PAGE_SIZE también es válido. */devolver 0 ; }

En muchos sistemas tipo Unix, getconfse puede usar la utilidad de línea de comandos. [ 12 ] [ 13 ] [ 14 ] Por ejemplo, getconf PAGESIZEdevolverá el tamaño de página en bytes.

Sistemas operativos basados ​​en Windows

Los sistemas operativos basados ​​en Win32 , como los de las familias Windows 9x y Windows NT , pueden utilizar la función del sistema GetSystemInfo()[ 15 ] [ 16 ] de kernel32.dll.

#include <stdio.h> #include <windows.h>int main ( void ) { SYSTEM_INFO si ; GetSystemInfo ( & si );printf ( "El tamaño de página para este sistema es %u bytes. \n " , si . dwPageSize );devolver 0 ; }

Varios tamaños de página

Algunas arquitecturas de conjuntos de instrucciones pueden admitir varios tamaños de página, incluyendo páginas significativamente mayores que el tamaño de página estándar. Los tamaños de página disponibles dependen de la arquitectura del conjunto de instrucciones, el tipo de procesador y el modo de operación (direccionamiento). El sistema operativo selecciona uno o más tamaños de entre los tamaños admitidos por la arquitectura. Cabe destacar que no todos los procesadores implementan todos los tamaños de página mayores definidos. Esta compatibilidad con páginas más grandes (conocidas como "huge pages" en Linux , "superpages" en FreeBSD y "large pages" en la terminología de Microsoft Windows e IBM AIX ) permite obtener "lo mejor de ambos mundos", reduciendo la presión sobre la caché TLB (a veces aumentando la velocidad hasta en un 15%) para asignaciones grandes, al tiempo que mantiene el uso de memoria en un nivel razonable para asignaciones pequeñas.

A partir del Pentium Pro y el AMD Athlon , los procesadores x86 admiten páginas de 4 MiB (llamadas Page Size Extension ) (páginas de 2 MiB si se usa PAE ) además de sus páginas estándar de 4 KiB; los procesadores x86-64 más nuevos , como los procesadores AMD64 más recientes de AMD y los procesadores Westmere [ 27 ] y Xeon posteriores de Intel , pueden usar páginas de 1 GiB en modo largo . IA-64 admite hasta ocho tamaños de página diferentes, desde 4 KiB hasta 256 MiB, y algunas otras arquitecturas tienen características similares.

Las páginas de mayor tamaño, a pesar de estar disponibles en los procesadores de la mayoría de los ordenadores personales actuales , no se utilizan habitualmente salvo en aplicaciones a gran escala, las que se encuentran normalmente en grandes servidores y clústeres de computación , y en el propio sistema operativo. Por lo general, su uso requiere privilegios elevados, la cooperación de la aplicación que realiza la asignación de gran tamaño (normalmente mediante una señal que solicita al sistema operativo páginas de gran tamaño) o la configuración manual por parte del administrador; los sistemas operativos, a veces por diseño, no suelen poder almacenarlas en disco.

Sin embargo, SGI IRIX ofrece soporte general para múltiples tamaños de página. Cada proceso individual puede proporcionar sugerencias y el sistema operativo utilizará automáticamente el tamaño de página más grande posible para una región determinada del espacio de direcciones. [ 28 ] Trabajos posteriores propusieron soporte transparente del sistema operativo para el uso de una combinación de tamaños de página para aplicaciones no modificadas mediante reservas preemptivas, promociones oportunistas, degradaciones especulativas y control de fragmentación. [ 29 ]

Linux ha admitido páginas enormes en varias arquitecturas desde la serie 2.6 a través del hugetlbfssistema de archivos [ 30 ] y sin él hugetlbfsdesde 2.6.38. [ 31 ] Windows Server 2003 (SP1 y posteriores), Windows Vista y Windows Server 2008 admiten páginas enormes bajo el nombre de páginas grandes. [ 32 ] Windows 2000 y Windows XP admiten páginas grandes internamente, pero no las exponen a las aplicaciones. [ 33 ] Reservar páginas grandes en Windows requiere un derecho correspondiente que el administrador del sistema debe otorgar al usuario porque las páginas grandes no se pueden intercambiar en Windows. A partir de la versión 9, Solaris admite páginas grandes en SPARC y x86. [ 34 ] [ 35 ] FreeBSD 7.2-RELEASE presenta superpáginas. [ 36 ] Tenga en cuenta que hasta hace poco en Linux, las aplicaciones debían modificarse para poder usar páginas enormes. El kernel 2.6.38 introdujo la compatibilidad con el uso transparente de páginas enormes. [ 31 ] En los núcleos de Linux que admiten páginas enormes transparentes, así como en FreeBSD y Solaris , las aplicaciones aprovechan las páginas enormes automáticamente, sin necesidad de modificación. [ 36 ]

Véase también

Referencias

  1. ^ Christopher Kruegel (03-12-2012). "Sistemas Operativos (curso CS170-08)" (PDF) . cs.ucsb.edu . Archivado (PDF) del original el 10-08-2016 . Recuperado el 13-06-2016 .
  2. ^ Martin C. Rinard (22 de agosto de 1998). "Apuntes de clase sobre sistemas operativos, Lección 9. Introducción a la paginación" . people.csail.mit.edu . Archivado del original el 1 de junio de 2016. Consultado el 13 de junio de 2016 .
  3. ^ "Memoria virtual: páginas y marcos de página" . cs.miami.edu . 31 de octubre de 2012. Archivado del original el 11 de junio de 2016. Consultado el 13 de junio de 2016 .
  4. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, eds. (1981), "Sistemas de memoria virtual", Enciclopedia de informática y tecnología , vol. 14, CRC Press, pág. 32, ISBN 0-8247-2214-0
  5. ^ Kazemi, Darío (11 de enero de 2019). "RFC-11" . 365 RFC .
  6. ^ Weisberg, P.; Wiseman, Y. (10 de agosto de 2009). El uso de un tamaño de página de 4 KB para la memoria virtual es obsoleto . Conferencia Internacional IEEE de 2009 sobre Reutilización e Integración de la Información. CiteSeerX 10.1.1.154.2023 . doi : 10.1109/IRI.2009.5211562 . 
  7. ^limits.h  – Referencia de definiciones básicas, Especificación única de UNIX , Versión 5 de The Open Group
  8. ^sysconf  – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
  9. ^sysconf(3)  –  Manual de funciones de la biblioteca de Linux
  10. ^sysconf(3)  –  Manual de funciones de la biblioteca de Darwin y macOS
  11. ^sysconf(3C)  –  Manual de referencia de las funciones básicas de la biblioteca de Solaris 11.4
  12. ^getconf  – Referencia de shell y utilidades, Especificación única de UNIX , Versión 5 de The Open Group
  13. ^getconf(1)  –  Manual de comandos de usuario de Linux
  14. ^getconf(1)  –  Manual de comandos generales de Darwin y macOS
  15. ^ "Función GetSystemInfo" . Microsoft. 13 de octubre de 2021.
  16. ^ "Estructura SYSTEM_INFO" . Microsoft. 23 de septiembre de 2022.
  17. ^ "Hugepages - Debian Wiki" . Wiki.debian.org. 21-06-2011 . Consultado el 06-02-2014 .
  18. ^ a b "Manual del desarrollador de software para arquitecturas Intel® 64 e IA-32, volumen 3 (3A, 3B, 3C y 3D): Guía de programación del sistema" (PDF) . Diciembre de 2016. pág. 4-2.
  19. ^ a b "Documentation/vm/hugetlbpage.txt" . Documentación del kernel de Linux . kernel.org . Consultado el 6 de febrero de 2014 .
  20. ^ "Manual del desarrollador de software de la arquitectura Intel Itanium, volumen 2: arquitectura del sistema" (PDF) . Mayo de 2010. pág. 2:58.
  21. ^ Guía de rendimiento de IBM Power Systems: Implementación y optimización . IBM Redbooks. Febrero de 2013. ISBN 978-0-7384-3766-8. Consultado el 17 de marzo de 2014 .
  22. ^ "Manual de arquitectura SPARC, versión 8" . 1992. pág. 249.
  23. ^ "UltraSPARC Architecture 2007" (PDF) . 27-09-2010. pág. 427.
  24. ^ "Manual de referencia de la arquitectura ARM, edición ARMv7-A y ARMv7-R" . Arm . 2014-05-20. pág. B3-1324.
  25. ^ "Gránulo de traducción" . Aprenda la arquitectura: gestión de memoria AArch64 . Arm . Consultado el 19 de agosto de 2022 .
  26. ^ a b Waterman, Andrew; Asanović, Krste ; Hauser, John (2021). El manual del conjunto de instrucciones RISC-V Volumen II: Arquitectura privilegiada (PDF) . págs.  79–87 .
  27. ^ "El Intel Xeon 5670: Seis núcleos mejorados" . AnandTech. Archivado del original el 31 de marzo de 2010. Consultado el 3 de noviembre de 2012 .
  28. ^ "Soporte del sistema operativo de propósito general para múltiples tamaños de página" (PDF) . static.usenix.org . Consultado el 2 de noviembre de 2012 .
  29. ^ Navarro, Juan; Iyer, Sitararn; Druschel, Peter; Cox, Alan (diciembre de 2002). Soporte práctico y transparente del sistema operativo para superpáginas (PDF) . 5.º Simposio Usenix sobre diseño e implementación de sistemas operativos.
  30. ^ "Páginas - dankwiki, la wiki de nick black" . Consultado el 17 de junio de 2023 .
  31. ^ a b Corbet, Jonathan. "Páginas enormes transparentes en 2.6.38" . LWN . Recuperado el 2 de marzo de 2011 .
  32. ^ "Compatibilidad con páginas grandes" . Microsoft Docs . 8 de mayo de 2018.
  33. ^ "El programa AGP puede bloquearse al usar la extensión de tamaño de página en un procesador Athlon" . Support.microsoft.com. 27/01/2007 . Consultado el 03/11/2012 .
  34. ^ "Compatibilidad con varios tamaños de página en el sistema operativo Solaris" (PDF) . Sun BluePrints Online . Sun Microsystems. Archivado del original (PDF) el 12 de marzo de 2006. Consultado el 19 de enero de 2008 .
  35. ^ "Compatibilidad con varios tamaños de página en el apéndice del sistema operativo Solaris" (PDF) . Sun BluePrints Online . Sun Microsystems. Archivado del original (PDF) el 1 de enero de 2007. Consultado el 19 de enero de 2008 .
  36. ^ a b "Notas de la versión FreeBSD 7.2-RELEASE" . Fundación FreeBSD . Consultado el 3 de mayo de 2009 .
  37. ^ "2.3.1 Memoria de solo lectura / 2.3.2 Memoria de acceso aleatorio de programa". Manual de programación en lenguaje ensamblador MCS-4 - Manual de programación del sistema de microcomputadoras INTELLEC 4 (PDF) (Edición preliminar). Santa Clara, California, EE. UU.: Intel Corporation . Diciembre de 1973. págs.  2-3 – 2-4 . MCS-030-1273-1. Archivado (PDF) del original el 1 de marzo de 2020. Consultado el 2 de marzo de 2020. […] La ROM se divide además en páginas, cada una de las cuales contiene 256 bytes. Así, las ubicaciones 0 a 255 comprenden la página 0 de la ROM, las ubicaciones 256 a 511 comprenden la página 1, y así sucesivamente. […] La memoria de acceso aleatorio de programa (RAM) está organizada exactamente igual que la ROM. […]
  38. ^ a b "1. Introducción: Alineación de segmentos". Utilidades de la familia 8086 - Guía del usuario para sistemas de desarrollo basados ​​en 8080/8085 (PDF) . Revisión E (ed. A620/5821 6K DD). Santa Clara, California, EE. UU.: Intel Corporation . Mayo de 1982 [1980, 1978]. pág. 1-6. Número de pedido: 9800639-04. Archivado (PDF) del original el 29/02/2020 . Recuperado el 29/02/2020 .

Lecturas adicionales

  • Dandamudi, Sivarama P. (2003). Fundamentos de organización y diseño de computadoras (1.ª ed.). Springer . pp.  740–741 . ISBN 0-387-95211-X.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Page_(computer_memory)&oldid=1316594065 "