Sistema informático: memoria virtual

Prefacio de rutina:

Este artículo no es una nota tomada al estudiar el curso, sino un breve resumen al releer este libro. Para los estudiantes que estudian este curso, el contenido no cubierto no significa que el examen no lo cubra (mmap, asignación de memoria dinámica, memoria virtual de Linux). La mayor parte del contenido de este capítulo se ha estudiado en OS, pero la perspectiva de la memoria virtual presentada en este capítulo es diferente de la de OSTEP. Después de estudiar esta sección, debería tener una comprensión más completa de la memoria virtual, incluida la función de memoria virtual Mecanismo de mapeo, proceso de traducción de direcciones, etc. La sección de traducción de direcciones no tiene un diagrama completo del proceso de traducción que incluya TLB. Agregar TLB al diagrama en P545 será más completo y podrá dibujarlo usted mismo.

Sistema informático: memoria virtual

La memoria virtual es una abstracción proporcionada por el sistema, que proporciona un espacio de direcciones consistente para cada proceso, simplifica la administración de la memoria y protege el espacio de direcciones de cada proceso para que no sea destruido por otros procesos. La memoria virtual es uno de los conceptos más importantes en los sistemas informáticos. Este capítulo describe principalmente el mecanismo de funcionamiento de la memoria virtual y cómo las aplicaciones usan y administran el almacenamiento virtual.

Por favor agregue la descripción de la imagen.

1. Espacio de direcciones y direccionamiento

direccionamiento

Las primeras computadoras no tenían una abstracción de memoria virtual y usaban direccionamiento físico para el direccionamiento directo. Los procesadores modernos utilizan direccionamiento virtual. Todos los procesadores procesan directamente direcciones virtuales. Al acceder a la memoria, la dirección virtual se traduce en una dirección física a través del componente de hardware **MMU (Unidad de administración de memoria)**. Algunas tablas e información requerida para la traducción se almacenan en la memoria principal y son administradas por el sistema operativo.

espacio de dirección

Las direcciones en la memoria virtual están en el espacio de direcciones virtuales, correspondiente al espacio de direcciones físicas. Cada objeto de datos tiene una dirección tanto en el espacio de direcciones virtuales como en el espacio de direcciones físicas.

2.Memoria virtual

Esta sección utiliza principalmente tres perspectivas para comprender el papel y el mecanismo de funcionamiento de la memoria virtual. Estas perspectivas son diferentes de la forma en que se ve la memoria virtual en OSTEP. OSTEP se centra en el método de mapeo de la memoria virtual a la memoria física.

  • La memoria virtual como herramienta de almacenamiento en caché
  • La memoria virtual como herramienta para la gestión de la memoria.
  • La memoria virtual como herramienta para la protección de la memoria.

2.1 Memoria virtual como caché

La memoria virtual es una abstracción de la memoria física, y la memoria física ( memoria principal ) se considera un caché de un disco duro de bajo nivel de almacenamiento . En esta sección, se supone que la página virtual asignada existe en el disco físico (uno de los tres casos siguientes) y está almacenada en caché en la memoria física. Desde esta perspectiva, las páginas virtuales mencionadas en esta sección pueden considerarse directamente como datos en el disco, y el contenido de esta sección en realidad habla de cómo la memoria principal sirve como caché del disco .

La memoria virtual se divide en páginas de tamaño fijo y sirve como unidad de transferencia entre capas como el disco y la memoria principal. En consecuencia, la memoria física también se divide en páginas. Hay tres situaciones para páginas en memoria virtual:

  • Página no asignada: no existe en la memoria virtual, no hay página asignada
  • En caché: páginas asignadas almacenadas en caché en la memoria física
  • Sin caché: no hay páginas asignadas que existan en la memoria física, pero sí en la memoria virtual.

Estructura organizativa DRAM

SRAM se usa para representar cachés como L1 y L2, y DRAM se usa para representar la memoria principal.

Las pérdidas de DRAM en la memoria principal son manejadas por el disco, y la sobrecarga de E/S del disco es muy grande, por lo que las páginas virtuales suelen ser relativamente grandes, generalmente de 4 KB a 2 MB. Las páginas virtuales se almacenan en caché en la memoria principal de forma totalmente asociativa. Para evitar penalizaciones por fallo en la medida de lo posible, la estrategia de reemplazo también está diseñada para ser más precisa. Y debido a que el tiempo de acceso al disco es largo, la DRAM siempre usa escritura diferida en lugar de escritura directa.

tabla de páginas

El sistema de memoria virtual utiliza la tabla de páginas para determinar si la página virtual existe en la memoria principal. Si existe, en qué página física se encuentra. De lo contrario, la página debe buscarse en el disco y colocarse en la memoria principal.

Estas tareas se completan mediante software y hardware: la MMU es responsable de la traducción de direcciones, mientras que el sistema operativo mantiene información como tablas de páginas y lee páginas del disco. Cuando se producen excepciones, como errores de página y violaciones de la protección de la memoria, durante el acceso a la memoria, también son manejadas por el controlador de excepciones del sistema operativo.

La tabla de páginas es una matriz de entradas de la tabla de páginas PTE. Cada página del espacio de direcciones virtuales tiene una PTE (las tablas de páginas de varios niveles pueden reducir el desperdicio de entradas de la tabla de páginas y no asignan entradas de la tabla de páginas para páginas no asignadas). Cada PTE tiene múltiples bits que almacenan mucha información. Aquí, céntrese en los bits válidos . Si el bit válido es válido, el PTE contiene el número de página física de la página virtual. De lo contrario, es necesario determinar si la página se asigna en función de la parte de dirección en el PTE. Si la dirección está vacía, la página no asignado. Si la dirección no está vacía, la dirección es la página en el disco. En la dirección de la página, la página se puede leer desde el disco.
Por favor agregue la descripción de la imagen.

Página faltante

La página virtual no está en la memoria principal, es decir, la falta de caché DRAM se denomina falla de página. Cuando la MMU realiza la traducción de direcciones, a partir de los bits válidos de la PTE se concluye que la página no está almacenada en caché en la DRAM, lo que desencadena una excepción de falla de página.

El controlador de excepciones de fallas de página del sistema operativo leerá la página del disco a la DRAM, es posible que deba reemplazar otras páginas, luego modificará la PTE y regresará. Después de que regrese el controlador de excepciones, la instrucción de error de página se volverá a ejecutar y esta vez se accederá a la página.

La actividad de transferir páginas entre el disco y la memoria principal se llama intercambio o paginación . Todos los procesadores modernos utilizan programación en orden y solo cuando ocurre un error, la página se intercambia del disco a la memoria principal.

2.2 La memoria virtual como herramienta para la gestión de la memoria.

La existencia de memoria virtual hace que la gestión de la memoria sea más conveniente, lo que se refleja principalmente en los siguientes cuatro puntos:

  • Vinculación simplificada: los espacios de direcciones separados permiten que la imagen de memoria de cada proceso use el mismo formato básico; por ejemplo, la sección .text siempre comienza en 0x8048000 en sistemas Linux de 32 bits. Esta coherencia simplifica el diseño y la implementación del vinculador, que sólo necesita asignar direcciones virtuales a cada sección integrada de acuerdo con el formato de imagen especificado.
  • Carga simplificada: la carga de archivos ejecutables y de objetos compartidos también se simplifica mediante la memoria virtual. Las direcciones asignadas a todas las secciones solo necesitan marcar el PTE de la página correspondiente como no válida y apuntar a la ubicación específica del archivo en el disco. Cuando se hace referencia a la página por primera vez, la página se cargará automáticamente.
  • Uso compartido simplificado: la memoria virtual permite que diferentes procesos asigne páginas virtuales a la misma página física, logrando así compartir código y datos entre procesos, como bibliotecas compartidas, COW de procesos padre-hijo.
  • Asignación de memoria simplificada: el sistema operativo puede asignar páginas de memoria virtual contiguas y suficientemente grandes a los procesos, mapeándolas a cualquier página de memoria física.

2.3 La memoria virtual como herramienta para la protección de la memoria.

La memoria virtual también implementa protección de la memoria durante la asignación a páginas físicas. Los permisos de acceso a páginas virtuales se controlan a través de algunos bits adicionales de PTE, incluidos bits de permiso de lectura y escritura, bits de privilegio de acceso (SUP), etc. Si una instrucción viola los derechos de acceso, se desencadena una falla, que a menudo se informa como una falla de segmentación .

3.Traducción de direcciones

Esta sección explica el proceso específico de traducción de direcciones y almacenamiento de acceso.

Primero, debemos aclarar los componentes que deben considerarse: en un sistema informático real, los componentes relacionados con el acceso a la memoria son: caché, MMU, DRAM (memoria principal), disco y TLB.

En los procesadores modernos, las direcciones físicas generalmente se usan para acceder a la caché, de modo que la caché no tenga que lidiar con problemas de protección de la memoria, y las páginas virtuales también se pueden asignar a la misma página física.

Por lo tanto, la dirección virtual siempre se traduce a una dirección física a través de la MMU y luego los datos se leen desde la memoria caché/memoria principal. Cuando la dirección de traducción detecta una excepción de falla de página u otra excepción de violación de permiso de acceso, el controlador de excepciones interviene. El PTE requerido para la traducción de direcciones también necesita acceder a la memoria caché y la lectura de la memoria principal. Para acelerar la traducción de direcciones, la computadora usa TLB para almacenar en caché el PTE. TLB es un caché como Cache, por lo que también existen problemas como la organización y la búsqueda en Cache.

En resumen, el proceso de traducción de direcciones es el siguiente:

  • El procesador genera una instrucción de acceso a la memoria para la dirección virtual y entrega la dirección virtual VA a la MMU.
  • La MMU pasa el VA al TLB y lee el PTE. Si no hay ningún PTE correspondiente a VA en el TLB, el PTE debe leerse desde la memoria caché y la memoria principal y almacenarse en el TLB.
  • La MMU traduce la dirección virtual en una dirección física basada en la PTE y envía la dirección física a la caché. Si se produce una pérdida de caché, se accede a la memoria principal.
  • La memoria caché/principal devuelve datos a la CPU.

El proceso de traducción anterior no considera excepciones de páginas faltantes. Si la MMU determina que falta una página a través de PTE, el sistema operativo la procesará, cargará la página desde el disco a la memoria principal y volverá a ejecutar la instrucción.

4. Mapeo de memoria

Linux asociará el área de memoria virtual con objetos en el disco e inicializará el contenido de esta área de memoria virtual. La memoria virtual se puede asignar a dos tipos de objetos:

  • Archivos normales en Unix: las regiones se pueden asignar a partes contiguas del archivo. Si la región es más grande que el archivo, el resto se rellena con 0.
  • Archivo anónimo: un archivo todo 0 creado por el kernel. Cuando se hace referencia a una página virtual en una región por primera vez, se encuentra una página en la memoria principal y se sobrescribe con ceros, actualizando el PTE sin leer la página del disco. Las páginas en regiones asignadas a archivos anónimos también se denominan páginas que solicitan ceros binarios.

Objetos compartidos

Un objeto de datos se puede asignar a un área de la memoria virtual, ya sea como un objeto privado o como un objeto compartido. El área de memoria virtual asignada a objetos compartidos se denomina área compartida y el área de memoria virtual asignada a objetos privados se denomina área privada.

Por favor agregue la descripción de la imagen.

El inicio del ciclo de vida de los objetos privados es el mismo que el de los objetos compartidos. Solo hay una copia de este objeto en la memoria y varios procesos comparten este objeto y lo asignan a la misma memoria física. Cuando un proceso necesita escribir datos en su propia área privada, se activará una falla y el controlador copiará los datos y los colocará en otro lugar de la memoria física como datos propios del proceso. Este proceso es COW (COPIAR EN ESCRITURA), un mecanismo de copia en escritura.

función de horquilla

Después de comprender el proceso anterior, podrá comprender el mecanismo de la función fork para crear un nuevo proceso. Fork crea memoria virtual para el nuevo proceso, así como una copia de la tabla de páginas. Las páginas del proceso padre y del proceso hijo se marcan como de solo lectura, y el área se marca como copia privada en escritura cuando cualquiera de los dos El proceso realiza una operación de escritura, crea una nueva página física y copia una copia de los datos, de modo que el proceso padre y el proceso hijo implementen espacios de direcciones privados independientes.

función ejecutiva

La función execve carga y ejecuta un nuevo programa, reemplazando el programa actual. Este proceso requiere los siguientes pasos:

  • Eliminar área existente: Elimina el área existente del proceso actual
  • Mapeo de áreas privadas: cree nuevas estructuras de áreas privadas para el código, datos, etc. del nuevo programa y establezca asignaciones. El código y los datos se asignan a archivos y las áreas bss se asignan a archivos anónimos.
  • Mapeo del área compartida: si el programa está vinculado con un objeto compartido, se realiza un vínculo dinámico para asignar el objeto compartido al área compartida en el espacio de direcciones virtuales.
  • Configurar la PC y ejecutar el programa.

Por favor agregue la descripción de la imagen.

Supongo que te gusta

Origin blog.csdn.net/Aaron503/article/details/130567661
Recomendado
Clasificación