Está en la página 1de 71

Administracin de Memoria

SE ENCARGAN DE CONTROLAR LAS OPERACIONES PROPIAS DEL COMPUTADOR, MIENTRAS QUE LOS PROGRAMAS DE APLICACIN SON LOS QUE RESUELVEN PROBLEMAS ESPECFICOS A LOS USUARIOS.

Jos Jhonatan Yengle Beltrn

YENBEL

Objetivo de la Memoria
De los programas del sistema el ms importante es el

sistema operativo cuyo objetivo es que el computador se pueda utilizar de una manera cmoda y eficiente, proporcionando un caparazn a la mquina desnuda que permite dar la visin de una mquina virtual, con la que es factible comunicarse al crearse un interfaz entre el usuario y la mquina y gestionar los recursos de la misma.

Para mejorar la utilizacin de la CPU y su velocidad

de respuesta a los usuarios, el sistema operativo debe mantener varios procesos en memoria.
Es posible hallar muchos esquemas para la

administracin de la memoria, los cuales reflejan distintas estrategias para realizar una misma tarea, y la mejor o peor eficiencia de los distintos algoritmos depende situaciones muy concretas.

La memoria dedicada
Las primeras computadoras utilizaban lo que s denomina

rgimen dedicado, consistente en que el programador acceda directamente al hardware y gestionaba la memoria en sus programas. En estos primeros equipos se programaba en lenguaje mquina, sin existir sistema operativo y consiguientemente tampoco gestor de memoria. De esta forma, la utilizacin de la memoria es ineficaz y se obliga a un conocimiento profundo del hardware utilizado. El programador dedicaba gran parte de su tiempo y esfuerzo a gestionar el propio hardware, desvindolo de su principal objetivo que era el proceso de la informacin.

Divisin De Memoria: El Monitor Residente


La introduccin de los sistemas operativos para utilizar mejor el hardware dividi la memoria(*) en dos zonas, una utilizable por el usuario y otra reservada para la parte residente del propio sistema operativo denominada comnmente monitor.

Este reparto de la memoria introduce nuevos problemas que es necesario resolver, estos problemas son:

Cmo asegurar la independencia de ambas zonas

(Proteccin).
Cmo asegurar que los programas de usuario no

se vean afectados por esta divisin de la memoria.

Proteccin de la memoria
Debido a que el programa monitor y el programa de

usuario van a compartir la memoria, se hace necesario proteger la zona del sistema operativo contra cualquier intento de acceso a dicha zona por parte del programa. Se establece, por tanto, una direccin frontera que limita la zona del sistema operativo

Cualquier direccin de memoria que pida o solicite

el programa de usuario se compara con dicha direccin frontera, permitiendo el acceso o no, segn corresponda. Este control se realiza directamente por el hardware a travs de uno de sus registros. La direccin frontera, en general, suele ser variable para permitir que un sistema pueda ir evolucionando en prestaciones y versiones de su propio sistema operativo, en definitiva que pueda variar su tamao, obligando por tanto a variar la direccin frontera.

Reasignacin de direcciones
Una vez inicializado el sistema operativo, el

contenido del registro frontera indicar el punto a partir del cual puede cargarse el programa de usuario. Para ello, es necesario reasignar las direcciones del programa en funcin de la frontera. Existen dos formas de realizar la reasignacin, una esttica y otra dinmica.

La reasignacin esttica se realiza durante la

compilacin, o bien durante la carga del programa en memoria. De esta manera, cualquier variacin de tamao en el sistema operativo exige una nueva compilacin o carga del programa. Es una tcnica fcil de realizar, pero demasiado rgida. La reasignacin dinmica se realiza durante la ejecucin del programa. Un dispositivo especial del hardware interceptar cada direccin lgica generada por el programa y le sumar el contenido del registro frontera para obtener la direccin real correspondiente.

Memoria Virtual
la memoria virtual es una memoria que en realidad no

existe fsicamente. Si bien se entiende que la memoria es cualquier forma de almacenamiento, permanente o no, la memoria virtual es un tipo de memoria equivalente a la memoria RAM, es decir es voltil y limitada. Pero es un tipo de memoria con capacidades de almacenamiento generalmente mucho mayores que la capacidad de una memoria RAM ordinaria, pero paga esta virtud en velocidad; es decir, la memoria virtual es mucho ms lenta que la memoria RAM.

Swapping
una de las principales preocupaciones

administrativas del sistema operativo, en cuanto a memoria virtual se refiere, es la optimizacin del proceso de intercambio de informacin entre la memoria RAM y la memoria virtual. Este proceso es conocido como Swapping.

Los tiempos de E/S son considerablemente

superiores a los tiempos de procesamiento de la CPU, por lo que la memoria que el programa no est verdaderamente utilizando, perfectamente podra ser despejada para dejar lugar para ser utilizada por otro programa que s la requiera. Una forma de realizar el intercambio es utilizando el Swapping. La idea bsica es que cada programa que est en memoria principal (RAM) tiene una copia en memoria secundaria (memoria virtual) y esa copia se traspasa a memoria principal cada vez que se requiera.

Segmentacin
La segmentacin tiene considerables ventajas desde el

punto de vista administrativo de la memoria, ya que es ms fcil encontrar trozos libres pequeos. Adems, no es necesario tener todo el programa en memoria a la vez; basta tener aquellos segmentos, de l, que verdaderamente estn participando de la ejecucin.

Por supuesto, al ser los segmentos de longitud variable,

se producen overhead, por lo que es conveniente minimizar las transacciones de estas secciones. Esto puede lograrse haciendo que las palabras que son referenciadas en forma cercana pertenezcan a un mismo segmento.

Una direccin virtual es un par ordenado (s,d),

donde s es el ndice dentro de la tabla de segmentos (no es directamente el apuntador al bloque) y d es un desplazamiento hacia el segmento (celda inicial dentro del segmento, no del bloque). Por lo tanto: Direccion_Real Tabla_segmento[s].base + d; " 0 d Tabla_segmento[s].limite Direccion_Virtual (s,d)

Algunos de los problemas tpicos que se pueden

producir, son:

1. s esta fuera del rango mximo de la tabla de segmentos. 2. d es mayor que el desplazamiento mximo permitido.
3. El segmento referenciado por la tabla de segmentos no existe en memoria principal.

Dentro de cada entrada

de la tabla de segmentos se encuentra un campo (Long) que indica la longitud del segmento. Este se utiliza para verificar que no se hagan referencias fuera del segmento. Si esto llegase a ocurrir se generara una interrupcin.

Este algoritmo debe ser invocado por el hardware para cada operacin fetch (buscar) de una instruccin y tambin por cada referencia a una palabra de memoria.

Paginacin
Cuando los trozos de memoria son de tamao fijo se

denominan pginas. El almacenamiento real es particionado en marcos del mismo tamao que las pginas. De este modo una pgina puede y debe ser almacenada slo en un marco y viceversa.

En forma anloga al mecanismo de direccionamiento

de segmentos, para la paginacin se tiene:

Direccion_Virtual (p,d), donde p es el

indicador de la pgina y d el desplazamiento en ella.

Paginacin De Mltiples Niveles


Para evitar el problema de tener unas tablas de

pginas muy grandes en la memoria todo el tiempo, algunos sistemas utilizan tablas con varios niveles o hiperpaginacin. La idea central de las tablas de pginas de varios niveles consiste en evitar mantener todas las tablas en la memoria todo el tiempo. Aquellas que no sean necesarias no deben mantenerse all.

As como el concepto de paginacin, dependiendo

del contexto, puede ser entendido como una estrategia de administracin de memoria o como el proceso de intercambio de pginas desde memoria virtual a memoria real. La hiperpaginacin puede ser entendida como una estrategia de paginacin de mltiples niveles o como el intercambio excesivo de pginas entre memoria real y memoria virtual.

Estrategias De Localidad
El concepto de localidad es fundamental en la mayor parte de las estrategias

administrativas de memoria, e indica que los procesos tienden a hacer referencia a la memoria en patrones no uniformes y altamente localizados.
Concepto De Localidad

La localidad se manifiesta tanto en el tiempo como en el espacio. La localidad temporal es la localidad en el tiempo y la localidad espacial significa que los elementos cercanos a una localidad tienden a ser similares a los contenidos en dicha localidad.
Es decir, La localidad es una propiedad emprica que se

observa, en los sistemas operativos, particularmente en el rea de la administracin del almacenamiento. Nunca esta garantizada, pero generalmente es altamente probable.

Conjunto de trabajo
un conjunto de trabajo es un conjunto de pginas a las

que se hace referencia activamente en un proceso. Se ha afirmado que para ejecutar en forma eficiente un programa se debe mantener en memoria principal su conjunto de trabajo; de otra forma, podra surgir una situacin de hiperpaginacin, debido a las frecuentes solicitudes de pginas contenidas en memoria virtual.

La poltica administrativa del almacenamiento

virtual mediante conjuntos de trabajo intenta mantener en memoria principal todos los conjuntos de trabajo de cada uno de los procesos activos. La decisin de aadir o no un nuevo proceso al conjunto de procesos activos se basa en el hecho de si existe suficiente espacio de almacenamiento principal como para contener todo el conjunto de trabajo del nuevo proceso.

Algoritmos De Remplazo
Existen muchos y variados algoritmos para el reemplazo

de pginas. Quiz cada sistema operativo cuente con su propio esquema de reemplazo. En general, se requiere de la seleccin de un algoritmo de reemplazo en particular el que presente la menor tasa de fallas de pgina. Se evala un algoritmo ejecutndolo para una serie determinada de referencias a memoria y calculando el nmero de fallas de pgina. A la serie de referencias a memoria se le llama serie de referencias. Se pueden generar artificialmente las series de referencias (utilizando, por ejemplo, un generador de nmeros aleatorios) o rastreando un sistema y anotando la direccin de cada referencia a memoria.

Hay dos tipos de algoritmos:

Algoritmo De Bits Adicionales De Referencia

Algoritmo De Segunda Oportunidad

Algoritmo De Bits Adicionales De Referencia

Algoritmo De Segunda Oportunidad

Algoritmo LFU
Un algoritmo de reemplazo de pgina menos

frecuentemente usada (LFU, least frequently used) mantiene un contador del nmero de referencias que se han hecho para cada pgina. Se reemplaza la pgina con el menor recuento. La razn para esta seleccin es que una pgina que se usa activamente debe tener un alto nmero de referencias. Este algoritmo tiene problemas cuando una pgina se usa mucho en la fase inicial de un proceso, pero despus ya no se utiliza. Como se us bastantes veces, tiene un recuento alto y permanece en memoria aunque ya no se necesite. Una solucin consiste en desplazar los recuentos un bit a la derecha a intervalos regulares, formando un recuento promedio de utilizacin que disminuye exponencialmente.

Algoritmo MFU
Otro algoritmo para el reemplazo de pginas es el

reemplazo ms frecuentemente usado (MFU, most frequently used), que se basa en el argumento de que la pgina con el menor recuento probablemente acaba de llegar y an tiene que usarse. Como se podra esperar, no es comn ni el reemplazo MFU ni el LFU. La implantacin de estos algoritmos, es bastante costosa y estos no se aproximan mucho al reemplazo ptimo.

Algoritmos Adicionales

Algoritmos Basados En Ajuste


Cuando los procesos y los espacios se mantienen en una

lista ordenada por direcciones, se pueden utilizar diversos algoritmos para asignar la memoria para un proceso de reciente creacin. Se supone que el administrador de memoria conoce la cantidad de memoria a asignar. Entre ellos estn: First Fit (Primero en Ajustarse): El administrador de memoria revisa toda la lista de segmentos hasta encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes, una para el proceso y otro para la memoria no utilizada. Este algoritmo es rpido, puesto que busca lo menos posible.

Siguiente en Ajustarse : Funciona de la misma

forma que el anterior, con la diferencia que mantiene un registro del lugar dnde se encuentra un espacio adecuado. La siguiente vez que se le llama, comienza a buscar desde el punto donde se detuvo, en lugar de comenzar a buscar siempre desde el inicio. Best Fit (Mejor en Ajustarse): Busca en toda la lista y toma el mnimo espacio adecuado. En lugar de asignar un espacio grande, intenta encontrar un espacio lo ms cercano al tamao necesario. El peor ajuste: Toma siempre el espacio ms grande disponible, de forma que el espacio resultante sea lo suficientemente grande para ser til.

Estos cuatro algoritmos pueden agilizarse si se tienen dos

listas independientes, una para los procesos y otra para los espacios. De esta forma todos ellos, pueden limitarse a inspeccionar la lista de espacios y no la de los procesos. Sin embargo, el aumentar la velocidad implica que la complejidad se aumenta y la velocidad al liberar la memoria se aumenta, ya que un segmento liberado, debe ser liberado de la lista de procesos y adicionado a la lista de espacios libres. Otro algoritmo de asignacin es el de ajuste rpido, que consiste en tener listas independientes para algunos de los tamaos que se solicitan con mayor frecuencia. Si se solicita un espacio de tamao tpico (de los ms frecuentes) se busca primero en tales listas. Igual sucede si se libera, se adiciona a una de ellas. Esto facilita la administracin de la memoria puesto que se van a tener espacios libres de tamaos comunes en una lista, lo que facilita su bsqueda. Sin embargo el mantenimiento de las listas tambin es costoso en tiempo.

CONCURRENCIA

Un proceso asincrnico requiere de sincronizacin y cooperacin con otros procesos.

Algoritmo de secciones criticas

Secciones criticas

Secciones criticas II
Exclusin mutua. Si un proceso P1 se est ejecutando en su

seccin crtica, entonces ningn otro proceso se puede estar ejecutando en la suya. Progreso. Si ningn proceso se est ejecutando en su seccin crtica y hay otros procesos que desean entrar en las suyas, entonces slo aquellos procesos que no se estn ejecutando en su seccin restante pueden participar en la decisin de cul ser el siguiente tem que ingresar en la seccin crtica (y esta seleccin no puede postergarse indefinidamente). Espera limitada. Debe haber un lmite en el nmero de veces que se permite que los dems procesos entren en su seccin crtica despus de que un proceso haya efectuado una solicitud para entrar en la suya y antes de que se conceda esa solicitud.

Secciones criticas III y Algoritmos


Es importante no olvidar que aunque se supone que cada

proceso se ejecuta a una velocidad no nula, no puede hacerse ninguna suposicin acerca de la velocidad relativa de los n procesos. Cuando un proceso est accesando datos compartidos, se dice que el proceso se encuentra en una seccin crtica. Por lo tanto, las secciones crticas tienen que ejecutarse lo ms rpidamente posible, un programa no debe bloquearse dentro de una seccin crtica y se deben evitar los ciclos infinitos Las secciones crticas pueden ser fcilmente restringidas asocindoles un nombre nico. Por ejemplo si el nombre de una seccin crtica fuese Nom_Bloque, se tiene que:

Secciones criticas y algoritmos

Operaciones Lock/Unlock

Bloqueo Mediante El Uso De Variables Compartidas


Supngase que se asocia a cada recurso que se comparte un

flag que podr tomas dos valores: True: Indicar que el recurso est siendo utilizado Fase: Indicar que el recurso est disponible La ejecucin concurrente de los procesos se iniciar mediante la estructura cobegin/coend. Para evitar que se entrelace el uso del recurso por ambos procesos, se asocia un indicador a cada uno de los procesos. Ambos procesos pueden leer los dos indicadores, pero slo pueden modificar el que tienen asociado. Esto evita el problema de que los dos procesos actualicen de forma simultnea el mismo indicador. Antes de acceder al recurso, un proceso debe activar su indicador y comprobar que el otro no tiene su indicador activado.

Variables compartidas
Si ambos procesos realizasen la llamada al bloqueo

de forma simultnea, ambos veran los indicadores contrarios como ocupados y permaneceran a la espera de que el recurso quede liberado. Esta accin se conoce como interbloqueo (deadlock ).

Sincronizacin de ejecucin

Sincronizacin de ejecucin II

Algoritmo de Peterson

Algoritmo de peterson II

Algoritmo De Dekker

Algoritmo de Dekker II
Los algoritmos de

Peterson y Dekker se pueden extender al caso ms general en el que haya n procesos en ejecucin concurrente; pero no son soluciones adecuadas, ya que la espera de acceso a un recurso siempre se realiza de forma ocupada: el proceso se queda permanentemente comprobando una variable.

Temas faltantes
Sincronizacin Con Instrucciones De Hardware

Semforos
Operaciones Wait/Signal Versin Ms General De Los Semforos

Buffers Mltiples
Comunicacin Entre Procesos Tcnicas De Comunicacin

Sistema Maestro-Sirviente
El maestro asigna trabajo al sirviente, y ser su

responsabilidad si lo confunde envindole ms de un comando a la vez. El sirviente est todo el tiempo disponible, excepto cuando se encuentra ejecutando alguna tarea. El sirviente ve cmo se debe modificar al maestro cuando termina su tarea, de modo que pueda aceptar otro comando (el sirviente). Las principales caractersticas de este esquema son: 1. El maestro no requiere de autorizacin para la utilizacin de su sirviente. 2. Las actividades del sirvientes estn absolutamente controladas por el maestro. 3. La conexin entre emisor y receptor es fija.

Sistema De Dilogo

Temas faltantes

Sistema De Correo Transmisin Entre Mensajes, Comunicacin Directa Transmisin Entre Mensajes, Comunicacin Indirecta Utilizacin De Buffers Monitores Propietarios Deadlocks (Intterbloqueos) Prevencin De Interbloqueos Evitacin De Los Interbloqueos Deteccin De Los Interbloqueos Recuperacin De Interbloqueos Algoritmo del banquero

También podría gustarte