martes, 25 de enero de 2011

UNIDAD 4: ADMINISTRACION DE MEMORIA

4.1 Gestion de Memoria

La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.

La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.

El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución.

4.1.1 Organizacion de la memoria
En primer lugar tenemos que distinguir claramente entre tres tipos de memoria:

Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podrá ser leida por el pic (el pic va leyendo las instrucciones del programa

almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra. Dos: la memoria RAM en cuyos registros se irán almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratará aquí por ser una memoria mas difícil de emplear

4.1.2 Administracion de la memoria
El Administrador De Memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.

Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente.

4.1.3 Jerarquia de la memoria

Los puntos básicos relacionados con la memoria pueden resumirse en:

* Cantidad
* Velocidad
* Coste
La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible.

Como puede esperse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:

* A menor tiempo de acceso mayor coste
* A mayor capacidad menor coste
* A mayor capacidad menor velocidad.
Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.

4.1.4 Estrategias para Administracion de Memoria

Existen 3 mecanismos de Asignación:

1. ASIGNACIÓN DE UNA PARTICIÓN. En la memoria se considera la existencia de una sola partición, esto es, se tiene la capacidad de ejecutar un proceso. La partición es toda la memoria, cuya administración corre por cuenta del usuario, o sea, no hay un sistema operativo.

2. ASIGNACIÓN DE DOS PARTICIONES. La memoria se divide en 2 bloques. En una partición se carga el Sistema Operativo y en la otra el programa del usuario. Es el concepto de Sistema Operativo Monousuario.

3. ASIGNACIÓN DE MULTIPLES PARTICIONES. La memoria es dividida en varias particiones una para el Sistema Operativo y las demás para los procesos de usuarios u otras funciones especiales del Sistema Operativo. Este es el concepto teórico de asignación de memoria en los Sistemas Operativos de Multiparticiones y de Multitarea..

ESTRATEGIAS DE ASIGNACIÓN.

Una estrategia de asignación de memoria determina el lugar donde será cargado un nuevo proceso en base a un criterio.

4.1.5 Multiprogramacion con Particiones Fijas y Variables

Multiprogramación con particiones variables

Este esquema fue originalmente usado por el sistema operativo IBM OS/360 (llamado MFT), el cual ya no está en uso. El sistema operativo lleva una tabla indicando cuáles partes de la memoria están disponibles y cuáles están ocupadas. Inicialmente, toda la memoria está disponible para los procesos de usuario y es considerado como un gran bloque o hueco único de memoria. Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente grande para el proceso. Si encontramos uno, se asigna únicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio. Cuando a un proceso se le asigna un espacio y es cargado a la memoria principal, puede entonces competir para el uso del CPU.

4.2 MEMORIA REAL


La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor

4.2.1 Administracion de Memoria con Mapa de Bits

Este tipo de administración divide la memoria en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y 1 si está ocupada (o viceversa). Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y el tamaño de la unidad de asignación.

4.2.2 Administracion de Memoria con Listas Enlazadas

Mantiene una lista enlazada de segmentos de memoria asignados y libres, donde un segmento es un proceso o un hueco entre dos procesos.

•Si la lista se ordena por dirección es más fácil su actualización.

•Si hay dos listas, una para memoria usada y otra para huecos, la asignación es más rápida, pero la liberación es más lenta

•Ocurre lo mismo para asignar hueco de intercambio.


4.2.3 Distribucion del Espacio para Intercambio


DISTRIBUCION DEL ESPACIO PARA INTERCAMBIO.

En algunos sistemas, cuando un proceso esta en la memoria, no se le puede asignar espacio en disco.cuando deba intercambiarse, puede colocarse en alguna otra parte del disco.los algoritmos para administrar el espacio de intercambio son los mismos que se emplean para administrar la memoria principal.

En otros sistemas,cuando se crea un proceso,el espacio para intercambio se asigna para el en disco. Cada ves que el proceso se intercambia, siempre se cambia a su espacio asignado, en lugar de dirigirse a un lugar diferente en cada ocacion. Cuando el proceso sale, se desasigna el espacio para el intercambio.

4.3 MEMORIA VIRTUAL

Cómo la memoria virtual se mapea a la memoria físicaLa Memoria virtual es un concepto que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cache (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.

4.3.1 PAGINACION DE MEMORIA VIRTUAL

Paginación en memoria virtual

El único inconveniente del sistema de paginación pura es que todas las páginas de un proceso deben estar en memoria para que pueda ejecutar. Esto hace que si los programas son de tamaño considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de multiprogramación del sistema. Para evitar esto, y aprovechando el principio de cercanía de referencias donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria (es decir con un conjunto residente más pequeño que el total de sus páginas), se permitirá que algunas páginas del proceso sean guardadas en un espacio de intercambio (en memoria secundaria) mientras no se necesiten.

4.3.2 Segmentacion Memoria Virtual

información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. La segmentación permite alcanzar los siguientes objetivos:

1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.
3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
4. Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.
5. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.
Ventajas de la segmentación El esquema de segmentación ofrece las siguientes ventajas:

* El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
* Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
* Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos.
* Es fácil el compartir segmentos.
* Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
* Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer

4.3.3 Algoritmos de Sustitucion de Paginas

334 ADMINISTRACIÓN DE MEMORIA CAP. 4

si el bit R está encendido, A se coloca al final de la lista y su “tiempo de carga” se ajusta al tiempo actual (20). También se apaga su bit R. La búsqueda de una página apropiada continúa con B. Lo que hace el algoritmo de segunda oportunidad es buscar una página vieja a la que no se, haya hecho referencia en el intervalo de reloj anterior. Si se ha hecho referencia a todas las páginas, este algoritmo pasa a ser FIFO puro. Específicamente, imaginemos que todas las páginas de la Fig. 4–13(a) tienen su bit R encendido. Una por una, el sistema operativo pasará’ páginas al final de la lista, apagando el bit R cada vez que anexa una página al final de la lista. Tarde o temprano, regresará a la página A, que ahora tiene su bit R apagado. En este punto, A será desalojada. Así, el algoritmo siempre termina.

El algoritmo de sustitución de páginas por reloj

Aunque el algoritmo de segunda oportunidad es razonable, es innecesariamente eficiente porque constantemente cambia de lugar páginas dentro de su lista. Un enfoque mejor consiste en mantener todas las páginas en una lista circular con forma de reloj, como se muestra en la Fig. 4–14. Una manecilla apunta a la página más vieja.

Cuando ocurre una falla de página, se inspecciona la página a la que apunta la manecilla. Si su bit R es O, se desaloja la página, se inserta la nueva página en el reloj en su lugar, y la manecilla avanza una posición. Si R es 1, se pone en O y la manecilla se avanza a la siguiente página. Este proceso se repite hasta encontrar una página con R = 0. No resulta sorprendente que este algoritmo se llame de reloj. La única diferencia respecto al de segunda oportunidad es la implementación.

4.3.4 Aspectos de Diseño para el Sistema



En las secciones anteriores hemos explicado cómo funciona la paginación y hemos presentado algunos de los algoritmos de reemplazo de páginas básicos. Sin embargo, no basta con conocer los aspectos mecánicos del funcionamiento. Para diseñar un sistema, necesitamos saber mucho más si queremos lograr que funcione bien. La diferencia es similar a la que existe entre saber cómo se mueven la torre, el caballo, el alfil y las demás piezas de ajedrez, y ser un buen jugador En las siguientes secciones examinaremos otros aspectos que los diseñadores de sistemas operad deben considerar detenidamente si quieren obtener un buen rendimiento de un sistema de paginación

4.3.5 Liberacion de Paginas

Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página [7, Deitel].

Se puede eliminar el “desperdicio” y acelerar la ejecución.

El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.

“Los compiladores y S. O. deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo”.

No hay comentarios:

Publicar un comentario