Please enable JavaScript.
Coggle requires JavaScript to display documents.
Memoria virtual - Coggle Diagram
Memoria virtual
Hardware y estructuras de control
Proción: Se refiere a una página o un segmento
La parte del proceso que se encuentra realmente en la memoria principal para, cualquier instante de tiempo, se denomina conjunto residente del proceso
Si el procesador encuentra una dirección lógica que no se encuentra en la memoria principal, generará una interrupción indicando un fallo de acceso a memoria
Existen dos implicaciones de una nueva estrategia:
Puede mantenerse un mayor número de procesos en memoria principal
Un proceso puede ser mayor que toda la memoria principal
Debido a que un proceso ejecuta sólo en la memoria principal, esta memoria se denomina memoria real
El programador o el usuario perciben una memoria potencialmente mucho más grande (la cual está en disco) y se le denomina memoria virtual
Proximidad y memoria virtual
La memoria virtual, basada en paginación o paginación más segmentación, se ha convertido en un componente esencial de todos los sistemas operativos contemporáneos
Segmentación con memoria virtual
Memoria principal no particionada
Sin fragmentación interna
Con fragmentación externa
Principio de proximidad: indica que las referencias al programa y a los datos dentro de un proceso tienden a agruparse
Paginación
Para la memoria virtual basa en paginación se necesita una tabla de páginas.
Estructura de la tabla de páginas
Número de página
Dirección física
La tabla de páginas es de longitud variable dependiendo del tamaño del proceso
En la mayoría de sistemas, existe una única tabla de página por proceso
La mayoría de esquemas de memoria virtual almacenan las tablas de páginas también en memoria virtual
Una desventaja es que su tamaño es proporcional al espacio de direcciones virtuales
Tabla de páginas invertida
Uso de tablas de páginas de uno o varios niveles
El número de página de la dirección virtual se referencia por medio de hash
Se denomina invertida debido a que se indexan sus entradas por el número de marco en ligar de por el número de página virtual
La entrada en la tabla de páginas incluye
Identificador de proceso
Bits de control
Número de página
Puntero de la cadena
Buffer de traducción anticipado
Toda referencia a la memoria virtual puede causar dos accesos a memoria física: uno para buscar la entrada a la tabla de páginas apropiada y otro para buscar los datos solicitados
La mayoría de esquemas de la memoria virtual utilizan una cache especial de alta velocidad, habitualmente denominada buffer de traducción anticipada
Funciona de manera similar a una memoria cache general y contiene las entradas usadas de forma reciente
Dada una dirección virtual, el procesador primero examina la TLB
Si la entrada en la tabla de páginas está presente, entonces se recupera el número del marco
Si la entrada de la tabla no se encuentra, el procesador utiliza el número de página para indexar la tabla de páginas del proceso y examinar la correspondiente
El mecanismo de memoria virtual debe interactuar con el sistema de cache (cache de memoria principal)
Organización
Lo habitual es que haya una única tabla de segmentos por cada uno de los procesos
Las entradas en la tabla de segmentos son un poco más complejas
Se necesita un bit en cada entrada de la tabla de segmentos para indicar su el correspondiente segmento se encuentra presente en la memoria principal o no
Otro bit de control en la entrada de la tabla de segmentos es el bit modificado
Tamaño de la página
Hay varios factores a considerar
La fragmentación interna
Cuanto menor es la página, mayor número de páginas son necesarias
Puede haber un fallo de página doble para una referencia sencilla a memoria
Características físicas de los dispositivos de la memoria secundaria
El tamaño de la página tiene relación a la posibilidad de que ocurra un fallo
El aspecto de diseño del tamaño de la página se encuentra relacionado con el tamaño de la memoria física y el tamaño del programa
Segmentación
Permite al programador ver la memoria como si se tratase de diferentes espacios de direcciones o segmentos
Esta organización tiene un gran número de ventajas
Simplifica el tratamiento de estructuras de datos
Permite programas que se modifican o recopilan de forma independiente
Da soporte a la compartición entre procesos
Soporta los mecanismos de protección
Software del sistema operativo
El diseño de la parte de la gestión de memoria del sistema operativo depende de tres opciones fundamentales a elegir:
Si el sistema usa o no técnicas de memoria virtual
El uso de paginación o segmentación o ambas
Los algoritmos utilizados para los diferentes aspectos de la gestión de la memoria.
Las primeras implementaciones de UNIX no proporcionaban memoria virtual porque los procesadores no daban soporte para paginación o segmentación.
Políticas del sistema operativo para la memoria virtual.
Política de recuperación
Determina cuándo una página se trae a la memoria principal.
Las dos alternativas habituales son bajo demanda o paginación adelantada.
Política de ubicación
Determina en qué parte de la memoria real van a residir las porciones dela memoria de un proceso.
Importante en los sistemas de segmentación puros.
Para los sistemas que usan paginación pura o combinada, la ubicación es irrelevante.
En los sistemas llamados multiprocesadores de acceso a la memoria uniforme (NUMA) la ubicación tiene una implicación importante.
Política de reemplazo
Trata de la sección de una página en la memoria principal como candidata para reemplazarse
Las dos alternativas más comunes son
Limpieza bajo demanda: Una página se escribe a memoria secundaria sólo cuando se ha seleccionado para un reemplazo
Limpieza adelantada: Se escribe las páginas modificadas antes de que sus marcos de páginas se necesiten
Bloqueo de marcos
Algunos marcos de la memoria principal pueden encontrarse bloqueados
Cuando un marco está bloqueado, la página almacenada en dicho marco no puede reemplazarse
Una desventaja es que su tamaño es proporcional al espacio de direcciones virtuales
Algoritmos básicos
Existen ciertos algoritmos básicos que se utilizan para la selección de la página a reemplazar
Óptimo
Se tomará como reemplazo la página para la cual el instante de la siguiente referencia se encuentre más lejos
Es imposible de implementar porque se requiere un conocimiento de los eventos futuros
Usando menos recientemente (Least recently used LRU)
Seleccionará como candidata a la página de memoria que no se haya referenciado desde hace más tiempo
Proporciona unos resultados casi tan buenos como la política óptima
Difícil de implementar
FIFO
Trata los marcos de página ocupados como si se tratase de un buffer circular
Más sencilla de implementar
Rendimiento relativamente pobre
Reloj
Un buffer circular con n marcos de memoria principal que se encuentran disponibles para el reemplazo
Buffering de páginas
Puede mejorar el rendimiento de la paginación y permite el uso de una política de reemplazo de páginas sencilla
El aspecto más importante de estas maniobras es que la página que se va a reemplazar se mantiene en memoria
Implementada en el sistema operativo Mach [RASH88]
Política de reemplazo y tamaño de la cache
Cuando el tamaño de la memoria principal crece, la proximidad de referencia de las aplicaciones va a decrecer
El reemplazo de páginas de la memoria virtual puede tener un impacto importante en el rendimiento
Gestión del conjunto residente
Tamaño del conjunto residente
Debido a que el sistema operativo deberá saber cuántas páginas traerse, diferentes factores entran en juego
Cuanto menor es la cantidad de memoria reservada para un proceso, mayor es el número de procesos que pueden residir en la memoria principal a la vez
Si el conjunto de páginas de un proceso que está en memoria es relativamente pequeño, entonces la posibilidad de un fallo de página es mayor
La reserva de más memoria principal para un determinado proceso no tendrá un efecto apreciable sobre la tasa de fallos de página de dicho proceso
Teniendo en cuenta estos factores, se pueden encontrar dos tipos de políticas existentes
Asignación fija
Proporciona un número fijo de marcos de memoria principal disponibles para la ejecución
Siempre que se produzca un fallo de página del proceso en ejecución, la página que se necesite reemplazará una de las páginas del proceso
Asignación variable
Permite que se reserven un número de marcos por proceso que puede variar a lo largo del tiempo de vida del mismo
Las dificultades de esta estrategia se deben a que el sistema operativo debe saber cuál es el comportamiento del proceso activo
Política de limpieza
Se encarga de determinar cuándo una página que está modificada debe escribir en memoria secundaria
Control de carga
Determina el número de procesos que residirán en la memoria principal, eso de denomina el grado de multiprogramación
Es crítica para una gestión de memoria efectiva.
Suspensión de procesos
Proporciona seis posibilidades
Procesos con baja prioridad
Procesos que provocan muchos fallos
Proceso activado hace más tiempo
Proceso con el conjunto residente de menor tamaño
Proceso mayor
Proceso con la mayor ventana de ejecución restante
Si se va a reducir el grado de multiprogramación, uno o más de los procesos actualmente residentes debe suspenderse.
En cada caso, el aspecto central es el rendimiento
Se tratará de minimizar la tasa de ocurrencia de fallos de página
En todas estas áreas indicadas no existe una política que sea mejor que todas las demás
El rendimiento de un conjunto de políticas en particular depende de
Tamaño de la memoria
Velocidad relativa de los recursos
Comportamiento en ejecución de los diferentes programas
Ámbito de reemplazo
Se pueden clasificar en global y local
Reemplazo local
Selecciona únicamente entre las páginas residentes del proceso que ha generado el fallo de la página
Reemplazo global
Se consideran todas las páginas en la memoria principal que no se encuentren bloqueadas como candidatos para el reemplazo
La asignación variable y el reemplazo local son una combinación válida
Asignación fija, ámbito local
Se parte de un proceso que encuentra en ejecución
Es necesario decidir por adelantado la cantidad de espacio reservado para un proceso determinado
Las desventajas son
Si las reservas son demasiado pequeñas va a haber una alta tasa de fallos
Si las reservas son demasiado grandes habrá muy pocos programas en memoria principal
Asignación variable, ámbito global
Es de las más sencillas de implementar y ha sido adoptada por un gran número de sistemas operativos
Cuando existe un fallo de página, se añade un marco libre al conjunto residente de un proceso y se trae la página a dicho marco
La dificultad es la elección de los reemplazos cuando no existen muchos marcos libres
Asignación variable, ámbito local
Cuando se carga un nuevo proceso en la memoria principal, se le asignan un cierto número de marcos de página a su conjunto residente
Cuando ocurre un fallo de página, la página que se seleccionará para reemplazar pertenecerá al conjunto residente del proceso que causó el fallo