administración de memoria - sistemas operativos

Post on 12-Apr-2017

2.051 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Administraciónde memoria

Prof. Pablo Macónprofemacon@gmail.com

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

Jerarquía de Memoria

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.

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.

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)

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.

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.

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.

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.

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

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.

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.

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?

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

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é)

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)

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

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.

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.

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

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

Cuando no hay abstracción

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

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.

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.

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?

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

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.

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.

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

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.

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

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

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

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

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

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

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

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

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”.

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í.

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.

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?

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.

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.

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

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

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.

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.

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.

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

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

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

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

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)

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%

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

top related