Administración de Memoria - Sistemas Operativos

57
Administración de memoria Prof. Pablo Macón [email protected] http://pablomacon.wix.com/home/

Transcript of Administración de Memoria - Sistemas Operativos

Page 1: Administración de Memoria - Sistemas Operativos

Administraciónde memoria

Prof. Pablo Macó[email protected]

http://pablomacon.wix.com/home/

Page 2: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria

Page 3: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Registros del CPU

La CPU debe obtener las instrucciones de la memoria y las ejecutarlas.

Toma la primera instrucción de la memoria, la decodifica para determinar su tipo y operandos, la ejecuta y después el ciclo se repite hasta que el programa termina.

Page 4: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Registros del CPU

Como el acceso a la memoria RAM principal para obtener una instrucción o palabra de datos requiere mucho más tiempo que ejecutar una instrucción, todas las CPU contienen ciertos registros en su interior para contener las variables clave y los resultados temporales.

Page 5: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Registros del CPU

Están al tope de la jerarquía de memoria de una PC.

Están compuestos del mismo material que la CPU y tienen la misma rapidez. No hay retraso a la hora de utilizarlos.

La CPU puede acceder a los datos de los registros en 10 picosegundos (0,000.000.000.010 seg) (1 segundo dividido por 100.000.000.000)

Page 6: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Registros del CPU

La capacidad de almacenamiento es generalmente de:

32 x 32 bits en una CPU de 32 bits

64 x 64 bits en una CPU de 64 bits.

Menos de 1 KB en ambos casos.

Page 7: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

El siguiente nivel en la jerarquía de memoria es la caché.

Hoy por hoy las CPU tienen hasta 3 niveles de esta memoria.

Cada nivel de caché es más grande, lenta y barata que la anterior.

Page 8: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

Cuando el programa necesita leer una palabra de memoria, primero se comprueba si la línea que se requiere se encuentra en la caché.

Si está (acierto de caché), la petición se cumple y no se pide a la memoria RAM.

Page 9: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

Los aciertos de caché por lo general requieren un tiempo aproximado de dos ciclos de reloj.

Los fallos de caché obligan a ir a memoria principal, con un castigo considerable de tiempo.

Page 10: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

Caché de nivel 1

Está en el mismo núcleo del procesador, así que es el más rápido de todos.

Se guardan datos e instrucciones de uso muy frecuente

Su capacidad es de hasta 128 kb

Page 11: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

Caché de nivel 2

Es más lenta que la caché L1, pero más rápida que la memoria RAM.

Se encuentra en el procesador, pero no en su núcleo.

Su capacidad es de hasta 1 Mb.

Page 12: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Caché

Caché de nivel 3

Se agiliza el acceso a datos e instrucciones que no fueron localizadas en L1 o L2.Es generalmente de un mayor tamaño que la L2 y ayuda a que el sistema guarde gran cantidad de información agilizando las tareas del procesador.

Page 13: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - CachéComo la idea es poner en las cachés los datos que más se utilizan o se van a utilizar, la creación de algoritmos de reemplazo es uno de los problemas que más se piensan durante la programación de SO.¿Qué elemento tengo que poner y en qué nivel

de caché?¿Qué elemento saco cuando tengo que poner

uno nuevo?

Page 14: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Memoria PrincipalEs la memoria más grande e importante del sistema

Tiene que dividirse entre todos los programas que están ejecución por lo que tiene que ser lo más abundante posible

Hoy en día tenemos memorias de hasta 16 Gb

Page 15: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Memoria PrincipalCuando el procesador no encuentra un dato en alguna de las caché, debe ir a buscarlo a la memoria principal

Dependiendo del tipo de memoria y de la velocidad de los buses del sistema (placa madre) puede demorarse entre 5 y 250 nano segundos (entre 100 y 10000 veces más lento que el acceso a caché)

Page 16: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Memoria PrincipalLas principales características de esta memoria son:Es de acceso aleatorio (acceder a un dato en

cualquier posición requiere el mismo tiempo)Es volátil, cuando se quita la energía se

eliminan los datosCada cierto tiempo los capacitores se

descargan, por lo que deben volver a cargarse (refresco)

Page 17: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Disco MagnéticoCuando la memoria principal no alcanza para guardar los datos de todos los programas que se están ejecutando, debemos utilizar un dispositivo que tenga esa capacidad.Un disco magnético, es muy barato en relación cantidad a almacenar, pero es muy lento (0,010 segundos contra 0,000.000.050 segundos)Intercambio - Memoria Virtual

Page 18: Administración de Memoria - Sistemas Operativos

Jerarquía de Memoria - Cinta MagnéticaEs el elemento más lento del sistema, pero es, por lejos el más económicoPara acceder a un elemento guardado en una cinta se debe debe adelantar o atrasar hasta encontrar el lugar correcto.

Page 19: Administración de Memoria - Sistemas Operativos

Administrador de Memoria

Componente del sistema operativo que administra (parte de) la jerarquía de memoria de una computadora.

Su trabajo es administrar la memoria con eficiencia:

llevar el registro de cuáles partes de la memoria están en uso

asignar memoria a los procesos cuando la necesiten

desasignarla cuando terminen.

Page 20: Administración de Memoria - Sistemas Operativos

Administrador de Memoria

Para poder realizar su trabajo se necesita un cierto grado de abstracción, y tratar a todos los componentes destinados a servir como memoria como si fueran uno solo, aunque en realidad tienen características muy diferentes

Page 21: Administración de Memoria - Sistemas Operativos

Cuando no hay abstracción

Los programas acceden directamente a toda la memoria.

Esto crea el problema de que no hay control de dónde se escriben los datos nuevos

Los programas pueden escribir en zonas donde hay datos de otros programas, produciéndose un error en la lectura y la falla de los procesos

Page 22: Administración de Memoria - Sistemas Operativos

Cuando no hay abstracción

Page 23: Administración de Memoria - Sistemas Operativos

Cuando no hay abstracción

No es muy fácil ejecutar varios procesos a la vez. Por más que se encuentre una solución parcial, siempre cabe la posibilidad de que un error del SW provoque que un programa quiera utilizar la memoria reservada a otro proceso (incluso el del Sistema Operativo) lo que provocaría un error fatal y el cierre de los procesos involucrados

Page 24: Administración de Memoria - Sistemas Operativos

Primera Abstracción: Espacio de DireccionesCrea un tipo de memoria abstracta para que los programas vivan ahí.

Un espacio de direcciones (address space) es el conjunto de direcciones que puede utilizar un proceso para direccionar la memoria y guardar sus datos.

Page 25: Administración de Memoria - Sistemas Operativos

Primera Abstracción: Espacio de DireccionesCada proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos (excepto en ciertas circunstancias especiales en donde los procesos desean compartir sus espacios de direcciones).

Un programa se carga en el primer espacio de memoria suficientemente grande como para caber entero.

Page 26: Administración de Memoria - Sistemas Operativos

Primera Abstracción: Espacio de DireccionesEl primer problema al que se enfrenta el SO es que durante diferentes ejecuciones el proceso se va a cargar en diferentes espacios de memoria.

¿cómo hacer para que cuando el programa pida la posición de memoria x (no cambia de ejecución a ejecución), el SO entregue la posición correcta y no trate de leer en la posición física x?

Page 27: Administración de Memoria - Sistemas Operativos

Primera Abstracción: Espacio de DireccionesLa solución más sencilla es que junto con el estado del programa, se creen dos registros:

Base: primer dirección de memoria del proceso

Límite: el tamaño total de la memoria usada por el proceso

Page 28: Administración de Memoria - Sistemas Operativos

Primera Abstracción: Espacio de DireccionesCuando el proceso pida la posición 28, el SO va a sumar 28 a la base y verificar que el número obtenido no supere al límite.

Esta solución tiene el problema de que cada vez que se va a ejecutar dos operaciones, lo que requiere más tiempo de procesamiento.

Page 29: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Otro problema al que nos enfrentamos cuando queremos cargar varios programas a la vez, se da cuando el programa no entra completo en un espacio de la memoria.

Page 30: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

En este caso, pueden ocurrir dos cosas:● Que queden espacios demasiado pequeños

entre procesos cuando un proceso se quita de la memoria

● Que un proceso sea demasiado grande para la memoria que queda al final del espacio disponible

Page 31: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Un proceso se divide en páginas, todas del mismo tamaño, excepto la última

La memoria se divide en marcos, con el mismo tamaño que las páginas en que se dividen los procesos.

Para evitar la fragmentación de la memoria, un proceso se puede colocar en marcos separados.

Page 32: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Supongamos que tenemos cuatro procesos para cargar en la memoria en diferentes momentos:

Proceso A que se divide en 4 páginas

Proceso B en 3 páginas - Proceso C también 4 páginas

Proceso D utiliza 5 páginas

Page 33: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Nuestra memoria dispone de 15 marcos

Si sumamos, 4 + 3 + 4 + 5 = 16 páginas

En un primer momento tenemos cargados los procesos A, B y C

Page 34: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Nuestra memoria dispone de 15 marcos

Si sumamos, 4 + 3 + 4 + 5 = 16 páginas

En un primer momento tenemos cargados los procesos A, B y C

Page 35: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

En un segundo momento el proceso B se envía a disco (se suspende) dejando libres los tres marcos que estaba utilizando

Page 36: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Luego cuando tenemos que cargar el proceso D

Para ello usamos primero los tres marcos dejados por B y luego 2 marcos más de los que están después de C

Page 37: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

Ahora bien, para poder recuperar una posición de memoria, ya no nos alcanza con dos registros (Base y límite) como teníamos, sino que necesitamos algo más complejo.

En concreto el Sistema Operativo guarda una tabla con las páginas y los marcos de memoria que se utilizan

Page 38: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

La Gestión de Memoria llevada a cabo por la MMU mediante el espacio de direcciones y la paginación implica:

1.Todas las referencias a la memoria que se hacen dentro de un proceso se refieren a direcciones lógicas que deben ser traducidas a las direcciones físicas durante la ejecución

Page 39: Administración de Memoria - Sistemas Operativos

Segunda Abstracción: Paginación

La Gestión de Memoria llevada a cabo por la MMU mediante el espacio de direcciones y la paginación implica:

2.Un proceso puede dividirse en varias páginas o segmentos y estos no tienen por qué estar todos juntos, ya que se le puede seguir el rastro mediante una tabla

Page 40: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Cuando se inicia un proceso, el sistema operativo carga en memoria únicamente algunas porciones del programa y de los datos necesarios para ejecutarlo.

Esta porción se mantiene todo el tiempo en la Memoria Principal y se denomina “conjunto residente del proceso”.

Page 41: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Mientras las peticiones a memoria se encuentren dentro de este conjunto residente, el sistema operativo no necesita traer otras partes del proceso a memoria.

Ese resto está, por ahora, guardado en el disco duro.

El programador y el usuario no tienen por qué saber que esto es así.

Page 42: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Cuando el procesador encuentra una dirección lógica la traduce a una dirección física, si resulta que la página donde está esa dirección lógica no está cargada en memoria genera una interrupción indicando el fallo de acceso a memoria.

Page 43: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

El sistema operativo bloquea al proceso e inicia una petición de E/S trayendo los datos desde el disco hacia l memoria principal.

¿Qué hace el Sistema Operativo luego de bloquear a un proceso?

Page 44: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Cuando las páginas requeridas ya fueron cargadas en la memoria principal, se genera una nueva interrupción.

El sistema operativo puede retomar el control, quitar del procesador al proceso que se estaba ejecutando y volver a ejecutar al proceso que le faltaban los datos.

Page 45: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Debido a que un proceso ejecuta sólo en la memoria principal, esta memoria se denomina memoria real.

Pero el programador o el usuario perciben una memoria potencialmente mucho más grande —la cual se encuentra localizada en disco. Esta última se denomina memoria virtual.

Page 46: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

La memoria virtual permite una multiprogramación muy efectiva que libera al usuario de las restricciones excesivamente fuertes de la memoria principal.

Puede haber más procesos ejecutándose

Un proceso puede ser más grande que la memoria principal

Page 47: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Un posible problema al que hay que estar atentos es que si tengo muchos procesos en memoria (algunos segmentos de cada proceso), voy a tener que ir y venir al disco con demasiada frecuencia y además voy a tener que sacar lo que considere innecesario para hacer lugar.

¿Qué pasa si saco de la memoria algo que voy a utilizar enseguida? Que pierdo mucho tiempo en operaciones E/S

Page 48: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Principio de proximidad:

Las referencias al programa y a los datos dentro de un proceso tienden a agruparse.

Por tanto, se presume que sólo unas pocas porciones del proceso se necesitarán a lo largo de un periodo de tiempo corto.

Page 49: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Principio de proximidad:

También, es posible hacer suposiciones inteligentes sobre cuáles son las porciones del proceso que se necesitarán en un futuro próximo, para evitar el problema de cargar y descargar porciones de un proceso en memoria.

Page 50: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio:

Es el lugar físico que se utiliza para alojar la memoria virtual.

Los sistemas operativos tienen diferentes formas de establecer una zona exclusiva del disco para la memoria virtual.

Page 51: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Archivo de Paginación:

Es un archivo de gran tamaño

Forma parte del mismo sistema de archivos

Puede cambiar de tamaño o tener un tamaño fijo

Es fácil crear, borrar o cambiar un archivo

Page 52: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Archivo de Paginación:

Desventajas:

Puede verse afectado por la fragmentación propia de los archivos comunes

En las particiones pequeñas puede ocupar casi todo el espacio

Page 53: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Archivo de Paginación:

Es utilizado sobre todo por los sistemas Windows

archivo oculto pagefile.sys (normalmente en C:)

Para configurarlo: Configuración avanzada del sistema -> Rendimiento -> pestaña Opciones Avanzadas -> Memoria Virtual

Page 54: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Archivo de Paginación:

Se puede configurar tamaño fijo (normalmente 1 ½ el tamaño de la memoria RAM)

Se puede configurar un mínimo y un máximo

Se puede configurar que el sistema operativo administre automáticamente el tamaño

Page 55: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Partición Swap:

En lugar de ocupar espacio en el sistema de archivos, se crea una partición específica para la memoria virtual

No tiene problema de fragmentación del espacio

Tiene un tamaño fijo (normalmente el doble de la RAM)

Se puede colocar en la zona más rápida del disco (al principio)

Page 56: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Partición Swap:

Desventajas:

No es tan sencillo particionar un disco

Siempre ocupa el mismo espacio del disco, aunque no se utilice el 100%

Page 57: Administración de Memoria - Sistemas Operativos

Tercera Abstracción: Memoria Virtual

Área de Intercambio - Partición Swap:

Utilizado por los sistemas Unix - Linux

Al momento de instalar el sistema se puede configurar el tamaño