230904 - Administración de memoria
Clase
- Jerarquía de memoria: Los distintos niveles de RAM y caché L
Espacio de direcciones (address space)
- Es una abstracción de memoria
- Es el conjunto de direcciones que puede usar un proceso
- Para implementar esta abstracción, se implementan en los CPUs registros
BASE
yLIMIT
. Se asignaban al programa direcciones consecutivas y se sumaba el desplazamiento (offset) deBASE
Intercambio (SWAP)
- Es una técnica para tener más procesos abiertos a la vez en la misma memoria
- Consiste en enviar el address space de un proceso que se encuentra inactivo al almacenamiento secundario (HDD, SSD) hasta que vuelva a ser activo
- El proceso entero está cargado sólo en almacenamiento secundario Ó en memoria principal en un momento del tiempo
Memoria virtual
- Soluciona el problema de que un programa necesita más memoria de lo que existe memoria principal
- Consiste en dividir el address space del proceso en páginas, y enviarlas todas a almacenamiento secundario
- Se alojan unos cuantos bloques de memoria (páginas) llamadas marcos de memoria en memoria principal
- Se crea una tabla de páginas para cada proceso, que guarda qué páginas de memoria virtual están asociadas a qué marcos en memoria principal
- Las páginas marcadas con
X
no están cargadas en MP. En la tabla esto se indica con un bit de referencia
- Las páginas marcadas con
- Sólo las páginas de memoria que el programa necesita tienen sus contenidos copiados a memoria principal
- Para acceder a una dirección de memoria, el SO busca en memoria virtual el número de dirección y en qué página cae, luego busca dentro del marco en MP (indicado por la tabla) el offset de la dirección
- Por ej.: Para encontrar la dirección
20500
, se encuentra en tabla que esta se encuentra en la página 5 (desde el 0), que apunta al marco N° 3 en MP. Este marco empieza en byte 12k (byte 12288), entonces se apunta en MP al byte 12.288 más un el desplazamiento de
- Por ej.: Para encontrar la dirección
- Cuando el programa solicita una dirección que no está cargada en MP, se produce un fallo de página en el que se pone en modo suspendido. Mientras esté suspendido, el OS busca los marcos libres del proceso en MP o decide cuál volcar al disco para cambiar su contenido por la página solicitada, y se actualiza la tabla de páginas. Finalmente, se reanuda el proceso.
- Para acceder a una dirección de memoria, el SO busca en memoria virtual el número de dirección y en qué página cae, luego busca dentro del marco en MP (indicado por la tabla) el offset de la dirección
Administración de memoria libre
Tabla de página
- Se utiliza en memoria virtual, paginación y segmentación
- Podemos pensar en la tabla de direcciones como una función cuyo argumento es el número de página y esta devuelve el número de marco en MP
- La estructura utiliza varias banderas de control:
- Presente: Indica si la página está presente en MP
- Modificada: Ayuda en el caso de un fallo de página, ya que sabemos que -como no se modificó la memoria y existe la misma info. en el disco- podemos borrarla sin volcarla al disco, ahorrando tiempo
- Referenciada: Indica si la página fue utilizada en el último golpe de CPU (para saber si es utilizada o no)
- Protegida: Si está asignada para R/W o RO
- Uso de caché deshabilitado: Usado por ejemplo en la memoria de un dispositivo de I/O
Mapa de bits
- Se crea una tabla que asigna un bit a cada pequeña porción de memoria, con un
1
si está ocupada o un0
si no
Linked list
- Tiene distintos algoritmos para buscar el sitio libre más adecuado para la asignación de memoria:
- Primer ajuste: Asigna en el primer hueco suficientemente grande para el proceso
- Siguiente ajuste: Idem al primer ajuste, pero guarda dónde encontró el último hueco adecuado, para seguir la búsqueda desde ahí en el siguiente llamado al procedimiento
- Mejor ajuste:
- Peor ajuste:
- Ajuste rápido:
Técnicas de división de la memoria
- Paginación (memoria virtual)
- Partición de memoria
- Segmentación
Algoritmos de reemplazo de páginas
Algoritmo óptimo
- Hace víctima la página que más va a tardar en volver a ser referenciada
- ~ Leer cap. 3.4.1 y ver los demás algoritmos
Preguntas
¿La memoria virtual y el intercambio sirven los dos sólo para el programa o también para su memoria de trabajo?
Todo tipo de memoria de proceso
¿Está bien el ejemplo de memoria virtual?
No, el hardware de paginación convierte la dirección virtual a dirección física