¿Es posible cambiar el tamaño de página de la memoria virtual? Pregunto esto porque en el X86_64 part of the MMU article on wikipedia, se habla de diferentes tamaños de página. Si el tamaño de la página puede ser cambiado, ¿cómo se cambia?¿Es posible cambiar el tamaño de página de la memoria virtual?
Respuesta
En x86_64 puede solicitar explícitamente 2 páginas MiB en lugar de las habituales 4 páginas KiB con la ayuda de hugetlbfs. En los núcleos modernos con compatibilidad transparente con páginas enormes, las páginas pequeñas se pueden concatenar automáticamente en páginas grandes en segundo plano, dado que la fragmentación de la memoria no es demasiado grande y la memoria es suficiente.
de Windows: http://windows.microsoft.com/en-US/windows-vista/Change-the-size-of-virtual-memory
Linux:
En /usr/src/linux/include/asm-generic/page.h se pueden encontrar las siguientes líneas:
/* PAGE_SHIFT determina el tamaño de página */
definir PAGE_SHIFT 12
el artículo siguiente se explica en la sección de comentarios.
http://www.cyberciti.biz/faq/linux-check-the-size-of-pagesize/
El proc/sys/vm/parámetro/swappiness, que cambia el equilibrio entre el canje de la memoria en tiempo de ejecución, en lugar de dejar caer las páginas de la página del sistema de caché.
El OP pregunta por cambiar el tamaño de una página determinada en la memoria virtual, sin cambiar el tamaño de la memoria virtual. Además, la pregunta está etiquetada como linux. – ughoavgfhw
Um ... el OP pregunta por Linux ... Su enlace es para Windows. – Mysticial
A continuación se presentan algunos enlaces de interés sobre este tema ...
http://linuxgazette.net/155/krishnakumar.html
Por lo que yo sé, ningún sistema operativo permite la aplicaciones para solicitar un tamaño de página. El sistema de paginación x86_64 proporciona la capacidad de mezclar páginas de diferentes tamaños, pero esto generalmente solo se usa si se asigna una gran cantidad de memoria a la vez.
En x86_64 (y x86), las direcciones virtuales se asignan a direcciones físicas a través de una serie de tablas de páginas. Cada tabla proporciona una cierta cantidad de bits para la dirección virtual física. x86_64 actualmente puede usar hasta 4 tablas para cada asignación, cada una proporciona 9 bits de dirección virtual, y los 12 bits bajos especifican la compensación dentro de la página. Las primeras 3 tablas cada punto a la dirección física de la siguiente tabla, y los últimos puntos a la dirección física de la página real.
| PML4T entry |-+
V
+-| PDPT entry |
V
| PDT entry |-+
V
| PT entry |-> Physical address (4kB page)
Sin embargo, la segunda y tercera entradas de la tabla también contienen un poco, que si conjunto indica que no hay más tablas y que la entrada proporciona la dirección física. Cuando esto ocurre, los bits que proporcionarían las otras tablas se mueven al desplazamiento físico de la página, multiplicando el tamaño de la página por 512 para cada tabla eliminada.
| PML4T entry |-+
V
+-| PDPT entry |
V
| PDT entry (PS=1) | -> Physical address (2MB page)
Al cambiar el número de tablas utilizadas para asignar a una dirección virtual dado, el sistema operativo puede crear páginas de 4 KB (4 mesas), 2 MB (3 mesas), o 1 GB (2 mesas). Dado que el bit se proporciona en cada entrada de la tabla, se pueden mezclar diferentes tamaños de página, por lo que, por ejemplo, una página de 2 MB puede ir seguida de una página de 4kB.
Ver madvise() en Linux, puede al menos páginas más grandes con MADV_HUGEPAGE – nos
Sí y no.
El tamaño de página es fijo. Pero el tamaño de una región de memoria virtual no es (en la arquitectura x86).Cuando crea una región de memoria virtual que no tiene el mismo tamaño que una página, se denomina segmento.
- 1. cambiar el tamaño de la página
- 2. MakeCert - ¿Es posible cambiar el tamaño de la clave?
- 3. detectando el tamaño de página de memoria
- 4. ¿La memoria virtual es infinita?
- 5. ¿Cómo encontrar el tamaño de la memoria virtual y el tamaño de la memoria caché de un sistema Linux?
- 6. ¿Qué es "Tamaño virtual" en el Explorador de procesos sysinternals
- 7. cambiar el tamaño del texto (tamaño de fuente) al cambiar el tamaño de la ventana?
- 8. Windows: cambiar el tamaño de la memoria compartida
- 9. ¿Es posible desasignar parcialmente la memoria?
- 10. ¿Es posible reducir el uso de la memoria MongoDB?
- 11. C# Aumentar Tamaño de pila - ¿Es posible
- 12. Determinar el tamaño de la tabla de páginas para la memoria virtual
- 13. ¿Admite Android la memoria virtual
- 14. ¿Es posible cambiar el tamaño de paso de la función de rango haskell incorporada o literal?
- 15. ¿Es posible cambiar el color de una fila en un árbol de cadenas virtual?
- 16. Memoria virtual
- 17. Posible pérdida de memoria sin un destructor virtual?
- 18. ¿Memoria virtual?
- 19. ¿Cómo cambiar el tamaño de las regiones asignadas por VirtualAlloc?
- 20. Cambiar el tamaño del contenido de la página para que quepa en una página de impresión
- 21. ¿Es posible cambiar el tamaño de la ventana con JQuery o JavaScript?
- 22. cambiar el tamaño de la matriz
- 23. ¿Es posible cambiar la acción de UIButton?
- 24. ¿Es posible cambiar el color de ScrollBar?
- 25. ¿Cambiar el tamaño de UIStepper?
- 26. ckfinder cambiar el tamaño de la imagen
- 27. uso práctico de la memoria virtual
- 28. ¿Es posible cambiar el tipo de fuente y el tamaño en UITableView?
- 29. es posible ampliar/escalar el tamaño de fuente (y el tamaño de la imagen) en JEditorPane
- 30. Jfreechart: ¿Es posible cambiar el color de la barra?
¿Está preguntando cómo una aplicación puede cambiar el tamaño de su página o cómo el sistema operativo crea páginas de un tamaño diferente? – ughoavgfhw
Bueno, estoy preguntando si el tamaño de la página se puede cambiar de todos modos, pero si se puede hacer por aplicación, ¡sería genial! – pythonic