Pregunta

Nota: Estoy tratando de estudiar una descripción de alto nivel de asignación de memoria virtual

Es espacio de direcciones virtuales de división de todo un proceso en páginas, de un tamaño particular:

  .text
  .bss
  .data

¿Esto también incluye espacio de almacenamiento dinámico y apilar -? O se trata siempre de no paginable

¿Fue útil?

Solución

en primer lugar que "páginas" son simplemente las regiones de un espacio de direcciones. Una región que es "no paginable" (por la que supongo que te refieres no puede ser intercambiada con el disco) se sigue lógicamente dividida en páginas, pero el sistema operativo podría implementar una política diferente en esas páginas.

El tamaño de página más común es de 4096 bytes. Muchos utilizan el soporte de arquitecturas de múltiples tamaños de página al mismo tiempo (por ejemplo, páginas de 4K, así como páginas de 1 MB). Sin embargo, los sistemas operativos a menudo se clavan con sólo un tamaño de página, ya que bajo la mayoría de circunstancias, los costes de la gestión de múltiples tamaños de página son mucho mayores que los beneficios que esta ofrece. Existen excepciones, pero no creo que se deba preocupar por ellos.

Cada página virtual ciertos permisos ha unido a él, como si se trata de lectura, escritura, ejecutable (varía dependiendo de soporte de hardware). El sistema operativo puede usar esto para ayudar a hacer cumplir la seguridad, la coherencia de caché (memoria compartida), y el canje de páginas de memoria física.

El regiones .text, .bss y .data no tienen que ser conocidos por el sistema operativo (aunque la mayoría de los sistemas operativos saben acerca de ellos, por razones de seguridad y de rendimiento).

El sistema operativo en realidad no puede asignar memoria para una página de pila / pila hasta la primera vez que se accede a la página. El sistema operativo puede proporcionar llamadas al sistema para solicitar más páginas de espacio de almacenamiento dinámico / pila. Algunos sistemas operativos proporcionan memoria compartida o la funcionalidad de la biblioteca compartida que conduce a más regiones que aparecen en el espacio de direcciones. Depende del sistema operativo.

Otros consejos

Típicamente, en un sistema operativo paginada todo un espacio de direcciones procesos se divide en páginas. Cada dirección lineal contiene dos componentes -. Un número de página en los bits más significativos, y un desplazamiento dentro de la página en los bits menos significativos

Por ejemplo, con direcciones lineales 32 bits y páginas de 4 KB, los 20 bits superiores son un número de página y los 12 bits inferiores son un desplazamiento de página.

.data es donde ponen las variables globales inicializadas del programa. .bss contiene las variables globales sin un inicializador explícito (con un valor por defecto de 0). El montón y la pila son zonas de memoria separadas de éstas y de la otra. Toda la memoria visto por un proceso de toda la memoria virtual es dividido en páginas. Un proceso no ver nada más que la memoria virtual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top